--- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,7 @@ jrsonnet-evaluator = { path = "./crates/jrsonnet-evaluator", version = "0.5.0-pre95" } jrsonnet-macros = { path = "./crates/jrsonnet-macros", version = "0.5.0-pre95" } jrsonnet-parser = { path = "./crates/jrsonnet-parser", version = "0.5.0-pre95" } +jrsonnet-rowan-parser = { path = "./crates/jrsonnet-rowan-parser", version = "0.5.0-pre95" } jrsonnet-interner = { path = "./crates/jrsonnet-interner", version = "0.5.0-pre95" } jrsonnet-stdlib = { path = "./crates/jrsonnet-stdlib", version = "0.5.0-pre95" } jrsonnet-cli = { path = "./crates/jrsonnet-cli", version = "0.5.0-pre95" } --- a/cmds/jrsonnet-fmt/Cargo.toml +++ b/cmds/jrsonnet-fmt/Cargo.toml @@ -1,10 +1,10 @@ [package] name = "jrsonnet-fmt" -version = "0.1.0" +version.workspace = true edition = "2021" [dependencies] -dprint-core = "0.58.2" -jrsonnet-rowan-parser = { path = "../../crates/jrsonnet-rowan-parser" } +dprint-core = "0.60.0" +jrsonnet-rowan-parser.workspace = true insta = "1.15" indoc = "1.0" --- a/cmds/jrsonnet-lsp/Cargo.toml +++ b/cmds/jrsonnet-lsp/Cargo.toml @@ -1,12 +1,12 @@ [package] name = "jrsonnet-lsp" -version = "0.1.0" +version.workspace = true edition = "2021" [dependencies] anyhow = "1.0.48" -jrsonnet-evaluator = { path = "../../crates/jrsonnet-evaluator" } -jrsonnet-rowan-parser = { path = "../../crates/jrsonnet-rowan-parser" } +jrsonnet-evaluator.workspace = true +jrsonnet-rowan-parser.workspace = true lsp-server = "0.6.0" lsp-types = "0.93.0" serde = "1.0.130" --- a/crates/jrsonnet-rowan-parser/Cargo.toml +++ b/crates/jrsonnet-rowan-parser/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "jrsonnet-rowan-parser" -version = "0.1.0" +version.workspace = true edition = "2021" [dependencies] @@ -9,7 +9,7 @@ drop_bomb = "0.1.5" indoc = "1.0" logos = "0.12" -miette = { version = "4.2", features = ["fancy"] } +miette = { version = "5.5.0", features = ["fancy"] } rowan = "0.15" text-size = "1.1" thiserror = "1.0" @@ -19,4 +19,3 @@ indoc = "1.0" insta = "1.15" anyhow = "1.0" -jrsonnet-stdlib = { path = "../jrsonnet-stdlib" } --- a/crates/jrsonnet-rowan-parser/jsonnet.ungram +++ b/crates/jrsonnet-rowan-parser/jsonnet.ungram @@ -370,3 +370,7 @@ | 'ERROR_COMMENT_UNTERMINATED!' | 'LIT_SINGLE_LINE_HASH_COMMENT!' | 'LIT_SINGLE_LINE_SLASH_COMMENT!' + +ParsingError = + 'ERROR_MISSING_TOKEN!' +| 'ERROR_UNEXPECTED_TOKEN!' --- a/crates/jrsonnet-rowan-parser/src/event.rs +++ b/crates/jrsonnet-rowan-parser/src/event.rs @@ -1,11 +1,11 @@ use std::mem; -use rowan::{GreenNodeBuilder, Language}; +use rowan::{GreenNodeBuilder, Language, TextRange, TextSize}; use crate::{ lex::Lexeme, nodes::Trivia, - parser::{Parse, SyntaxError}, + parser::{LocatedSyntaxError, Parse, SyntaxError}, AstToken, JsonnetLanguage, SyntaxKind, }; @@ -43,7 +43,7 @@ lexemes: &'i [Lexeme<'i>], offset: usize, events: Vec, - pub errors: Vec, + pub errors: Vec, } impl<'i> Sink<'i> { @@ -57,9 +57,24 @@ } } + fn text_offset(&self) -> TextSize { + if self.offset == 0 { + return 0.into(); + }; + if let Some(lex) = self.lexemes.get(self.offset) { + lex.range.start() + } else if let Some(lex) = self.lexemes.get(self.offset - 1) { + lex.range.end() + } else { + panic!("hard oob") + } + } + pub(super) fn finish(mut self) -> Parse { let mut eat_start_whitespace = false; let mut depth = 0; + let mut error_starts_at = Vec::new(); + let mut error_last_range = None; for idx in 0..self.events.len() { match mem::replace(&mut self.events[idx], Event::Noop) { Event::Start { @@ -69,6 +84,7 @@ if depth != 0 { self.skip_whitespace(); } + error_last_range = None; let mut kinds = vec![kind]; let mut idx = idx; @@ -98,6 +114,7 @@ if depth == 1 { self.skip_whitespace(); } + error_starts_at.push(self.text_offset()); } eat_start_whitespace = false; @@ -106,6 +123,7 @@ if eat_start_whitespace { self.skip_whitespace(); } + error_last_range = None; self.token(kind); eat_start_whitespace = true; } @@ -113,6 +131,7 @@ if eat_start_whitespace { self.skip_whitespace(); } + error_last_range = None; self.virtual_token(kind); eat_start_whitespace = false; } @@ -120,6 +139,10 @@ if depth == 1 { self.skip_whitespace(); } + error_last_range = Some(( + error_starts_at.pop().expect("starts == finishes"), + self.text_offset(), + )); self.builder.finish_node(); depth -= 1; let mut idx = idx; @@ -129,6 +152,10 @@ wrapper = if let Event::Finish { wrapper } = mem::replace(&mut self.events[idx], Event::Noop) { + error_last_range = Some(( + error_starts_at.pop().expect("starts == finishes"), + self.text_offset(), + )); if depth == 1 { self.skip_whitespace(); } @@ -143,8 +170,14 @@ } Event::Pending => panic!("pending event should not appear in finished events"), Event::Noop => {} - Event::Error(e) => { - self.errors.push(e); + Event::Error(error) => { + let (start, end) = error_last_range + .take() + .expect("expected error event right after closed node"); + self.errors.push(LocatedSyntaxError { + error, + range: TextRange::new(start, end), + }); } } } --- a/crates/jrsonnet-rowan-parser/src/generated/nodes.rs +++ b/crates/jrsonnet-rowan-parser/src/generated/nodes.rs @@ -1123,6 +1123,18 @@ SingleLineHashComment, SingleLineSlashComment, } + +#[derive(Debug, Clone, PartialEq, Eq, Hash)] +pub struct ParsingError { + syntax: SyntaxToken, + kind: ParsingErrorKind, +} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub enum ParsingErrorKind { + ErrorMissingToken, + ErrorUnexpectedToken, +} impl AstNode for SourceFile { fn can_cast(kind: SyntaxKind) -> bool { kind == SOURCE_FILE @@ -2887,6 +2899,44 @@ std::fmt::Display::fmt(self.syntax(), f) } } +impl AstToken for ParsingError { + fn can_cast(kind: SyntaxKind) -> bool { + ParsingErrorKind::can_cast(kind) + } + fn cast(syntax: SyntaxToken) -> Option { + let kind = ParsingErrorKind::cast(syntax.kind())?; + Some(ParsingError { syntax, kind }) + } + fn syntax(&self) -> &SyntaxToken { + &self.syntax + } +} +impl ParsingErrorKind { + fn can_cast(kind: SyntaxKind) -> bool { + match kind { + ERROR_MISSING_TOKEN | ERROR_UNEXPECTED_TOKEN => true, + _ => false, + } + } + pub fn cast(kind: SyntaxKind) -> Option { + let res = match kind { + ERROR_MISSING_TOKEN => Self::ErrorMissingToken, + ERROR_UNEXPECTED_TOKEN => Self::ErrorUnexpectedToken, + _ => return None, + }; + Some(res) + } +} +impl ParsingError { + pub fn kind(&self) -> ParsingErrorKind { + self.kind + } +} +impl std::fmt::Display for ParsingError { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + std::fmt::Display::fmt(self.syntax(), f) + } +} impl std::fmt::Display for Expr { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { std::fmt::Display::fmt(self.syntax(), f) --- a/crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rs +++ b/crates/jrsonnet-rowan-parser/src/generated/syntax_kinds.rs @@ -179,8 +179,11 @@ FOR_KW, #[token("assert")] ASSERT_KW, + ERROR_MISSING_TOKEN, + ERROR_UNEXPECTED_TOKEN, + #[doc = r" Also acts as __LAST_TOKEN"] #[error] - ERROR, + LEXING_ERROR, SOURCE_FILE, EXPR_BINARY, LHS_EXPR, @@ -258,6 +261,7 @@ IMPORT_KIND, VISIBILITY, TRIVIA, + PARSING_ERROR, #[doc(hidden)] __LAST, } @@ -279,7 +283,7 @@ match self { EXPR | OBJ_BODY | COMP_SPEC | BIND | MEMBER | FIELD | FIELD_NAME | DESTRUCT | DESTRUCT_ARRAY_PART | BINARY_OPERATOR | UNARY_OPERATOR | LITERAL | TEXT | NUMBER - | IMPORT_KIND | VISIBILITY | TRIVIA => true, + | IMPORT_KIND | VISIBILITY | TRIVIA | PARSING_ERROR => true, _ => false, } } --- a/crates/jrsonnet-rowan-parser/src/lib.rs +++ b/crates/jrsonnet-rowan-parser/src/lib.rs @@ -3,7 +3,7 @@ use event::Sink; use generated::nodes::{SourceFile, Trivia}; use lex::lex; -use parser::{Parser, SyntaxError}; +use parser::{LocatedSyntaxError, Parser, SyntaxError}; pub use rowan; mod ast; @@ -23,7 +23,7 @@ pub use language::*; pub use token_set::SyntaxKindSet; -pub fn parse(input: &str) -> (SourceFile, Vec) { +pub fn parse(input: &str) -> (SourceFile, Vec) { let lexemes = lex(input); let kinds = lexemes .iter() --- a/crates/jrsonnet-rowan-parser/src/parser.rs +++ b/crates/jrsonnet-rowan-parser/src/parser.rs @@ -16,7 +16,7 @@ pub struct Parse { pub green_node: GreenNode, - pub errors: Vec, + pub errors: Vec, } #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] @@ -53,51 +53,41 @@ Unexpected { expected: ExpectedSyntax, found: SyntaxKind, - range: TextRange, }, Missing { expected: ExpectedSyntax, - offset: TextSize, }, Custom { error: String, - range: TextRange, }, Hint { error: String, - range: TextRange, }, } -impl From for LabeledSpan { - fn from(val: SyntaxError) -> Self { - match val { - SyntaxError::Unexpected { - expected, - found, - range, - } => LabeledSpan::new_with_span( +#[derive(Debug)] +pub struct LocatedSyntaxError { + pub error: SyntaxError, + pub range: TextRange, +} + +impl From for LabeledSpan { + fn from(val: LocatedSyntaxError) -> Self { + let span = SourceSpan::new( + SourceOffset::from(usize::from(val.range.start())), + SourceOffset::from(usize::from(val.range.end() - val.range.start())), + ); + dbg!(&val); + match val.error { + SyntaxError::Unexpected { expected, found } => LabeledSpan::new_with_span( Some(format!("expected {}, found {:?}", expected, found)), - SourceSpan::new( - SourceOffset::from(usize::from(range.start())), - SourceOffset::from(usize::from(range.end() - range.start())), - ), - ), - SyntaxError::Missing { expected, offset } => LabeledSpan::new_with_span( - Some(format!("missing {}", expected)), - SourceSpan::new( - SourceOffset::from(usize::from(offset)), - SourceOffset::from(0), - ), + span, ), - SyntaxError::Custom { error, range } | SyntaxError::Hint { error, range } => { - LabeledSpan::new_with_span( - Some(error), - SourceSpan::new( - SourceOffset::from(usize::from(range.start())), - SourceOffset::from(usize::from(range.end() - range.start())), - ), - ) + SyntaxError::Missing { expected } => { + LabeledSpan::new_with_span(Some(format!("missing {}", expected)), span) + } + SyntaxError::Custom { error } | SyntaxError::Hint { error } => { + LabeledSpan::new_with_span(Some(error), span) } } } @@ -180,17 +170,17 @@ pub(crate) fn error_with_recovery_set( &mut self, recovery_set: SyntaxKindSet, - ) -> Option { + ) -> CompletedMarker { self.error_with_recovery_set_no_default(recovery_set.union(DEFAULT_RECOVERY_SET)) } - pub fn error_with_no_skip(&mut self) -> Option { + pub fn error_with_no_skip(&mut self) -> CompletedMarker { self.error_with_recovery_set_no_default(SyntaxKindSet::ALL) } pub fn error_with_recovery_set_no_default( &mut self, recovery_set: SyntaxKindSet, - ) -> Option { + ) -> CompletedMarker { let expected_syntax = self .expected_syntax .take() @@ -200,30 +190,29 @@ if self.at_end() || self.at_ts(recovery_set) { // let range = self - // .previous_token() - // .map(|t| t.range) + // .offset // .unwrap_or_else(|| TextRange::at(TextSize::from(0), TextSize::from(0))); - - // self.events.push(Event::Error(SyntaxError::Missing { - // expected: expected_syntax, - // offset: range.end(), - // })); - return None; + let m = self.start(); + let m = m.complete(self, ERROR_MISSING_TOKEN); + self.events.push(Event::Error(SyntaxError::Missing { + expected: expected_syntax, + })); + return m; } let current_token = self.current(); - // self.events.push(Event::Error(SyntaxError::Unexpected { - // expected: expected_syntax, - // found: current_token.kind, - // range: current_token.range, - // })); - self.clear_expected_syntaxes(); self.last_error_token = self.offset; let m = self.start(); self.bump(); - Some(m.complete(self, SyntaxKind::ERROR)) + let m = m.complete(self, ERROR_UNEXPECTED_TOKEN); + self.events.push(Event::Error(SyntaxError::Unexpected { + expected: expected_syntax, + found: current_token, + })); + self.clear_expected_syntaxes(); + m } fn bump_assert(&mut self, kind: SyntaxKind) { assert!(self.at(kind), "expected {:?}", kind); @@ -326,14 +315,20 @@ Unnamed, } -fn expr(p: &mut Parser) -> Option { - expr_binding_power(p, 0) +fn expr(p: &mut Parser) -> CompletedMarker { + match expr_binding_power(p, 0) { + Ok(m) => m, + Err(m) => m, + } } -fn expr_binding_power(p: &mut Parser, minimum_binding_power: u8) -> Option { +fn expr_binding_power( + p: &mut Parser, + minimum_binding_power: u8, +) -> Result { let mut lhs = lhs(p)?; while let Some(op) = BinaryOperatorKind::cast(p.current()) - .or_else(|| p.at(T!['{']).then(|| BinaryOperatorKind::MetaObjectApply)) + .or_else(|| p.at(T!['{']).then_some(BinaryOperatorKind::MetaObjectApply)) { let (left_binding_power, right_binding_power) = op.binding_power(); if left_binding_power < minimum_binding_power { @@ -346,7 +341,7 @@ } let m = lhs.wrap(p, LHS_EXPR).precede(p); - let parsed_rhs = expr_binding_power(p, right_binding_power).is_some(); + let parsed_rhs = expr_binding_power(p, right_binding_power).is_ok(); lhs = m.complete( p, if op == BinaryOperatorKind::MetaObjectApply { @@ -360,7 +355,7 @@ break; } } - Some(lhs) + Ok(lhs) } fn compspec(p: &mut Parser) { assert!(p.at(T![for]) || p.at(T![if])); @@ -461,7 +456,7 @@ fn assertion(p: &mut Parser) { let m = p.start(); p.bump_assert(T![assert]); - expr(p).map(|c| c.wrap(p, LHS_EXPR)); + expr(p).wrap(p, LHS_EXPR); if p.at(T![:]) { p.bump(); expr(p); @@ -625,20 +620,20 @@ p.bump(); // End if !p.at(T![']']) { - expr(p).map(|c| c.wrap(p, SLICE_DESC_END)); + expr(p).wrap(p, SLICE_DESC_END); } if p.at(T![:]) { p.bump(); // Step if !p.at(T![']']) { - expr(p).map(|c| c.wrap(p, SLICE_DESC_STEP)); + expr(p).wrap(p, SLICE_DESC_STEP); } } } else if p.at(T![::]) { p.bump(); // End if !p.at(T![']']) { - expr(p).map(|c| c.wrap(p, SLICE_DESC_END)); + expr(p).wrap(p, SLICE_DESC_END); } } else { // It was not a slice @@ -650,7 +645,7 @@ m.complete(p, SLICE_DESC); true } -fn lhs(p: &mut Parser) -> Option { +fn lhs(p: &mut Parser) -> Result { let mut lhs = lhs_basic(p)?; loop { @@ -677,7 +672,7 @@ } } - Some(lhs) + Ok(lhs) } fn name(p: &mut Parser) { let m = p.start(); @@ -713,6 +708,7 @@ } fn destruct(p: &mut Parser) -> CompletedMarker { let m = p.start(); + let _ex = p.expected_syntax_name("destruction specifier"); if p.at(T![?]) { p.bump(); m.complete(p, DESTRUCT_SKIP) @@ -773,7 +769,8 @@ name(p); m.complete(p, DESTRUCT_FULL) } else { - m.complete(p, ERROR) + m.forget(p); + p.error_with_recovery_set(TS![; , '}', '(', :]) } } fn bind(p: &mut Parser) { @@ -784,6 +781,13 @@ p.expect(T![=]); expr(p); m.complete(p, BIND_FUNCTION) + } else if p.at(IDENT) && p.nth_at(1, T![=]) && p.nth_at(2, T![function]) { + name(p); + p.expect(T![=]); + p.expect(T![function]); + params_desc(p); + expr(p); + m.complete(p, BIND_FUNCTION) } else { destruct(p); p.expect(T![=]); @@ -803,9 +807,9 @@ assert!(Literal::can_cast(p.current())); p.bump(); } -fn lhs_basic(p: &mut Parser) -> Option { - let _e = p.expected_syntax_name("value"); - Some(if Literal::can_cast(p.current()) { +fn lhs_basic(p: &mut Parser) -> Result { + let _e = p.expected_syntax_name("expression"); + Ok(if Literal::can_cast(p.current()) { let m = p.start(); literal(p); m.complete(p, EXPR_LITERAL) @@ -841,10 +845,10 @@ p.bump(); expr(p); p.expect(T![then]); - expr(p).map(|c| c.wrap(p, TRUE_EXPR)); + expr(p).wrap(p, TRUE_EXPR); if p.at(T![else]) { p.bump(); - expr(p).map(|c| c.wrap(p, FALSE_EXPR)); + expr(p).wrap(p, FALSE_EXPR); } m.complete(p, EXPR_IF_THEN_ELSE) } else if p.at(T!['[']) { @@ -897,7 +901,7 @@ let m = p.start(); p.bump(); - expr_binding_power(p, right_binding_power); + let _ = expr_binding_power(p, right_binding_power); m.complete(p, EXPR_UNARY) } else if p.at(T!['(']) { let m = p.start(); @@ -906,8 +910,7 @@ p.expect(T![')']); m.complete(p, EXPR_PARENED) } else { - p.error_with_recovery_set(TS![]); - return None; + return Err(p.error_with_no_skip()); }) } --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__array_comp.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__array_comp.snap @@ -2,7 +2,7 @@ source: crates/jrsonnet-rowan-parser/src/tests.rs expression: "[a for a in [1, 2, 3]]\n" --- -SOURCE_FILE@0..22 +SOURCE_FILE@0..23 EXPR_ARRAY_COMP@0..22 L_BRACK@0..1 "[" EXPR_VAR@1..2 @@ -31,4 +31,5 @@ FLOAT@19..20 "3" R_BRACK@20..21 "]" R_BRACK@21..22 "]" + WHITESPACE@22..23 "\n" --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__destruct.snap @@ -0,0 +1,255 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "local [a, b, c] = arr;\nlocal [a, ...] = arr_rest;\nlocal [..., a] = rest_arr;\nlocal [...] = rest_in_arr;\nlocal [a, ...n] = arr_rest_n;\nlocal [...n, a] = rest_arr_n;\nlocal [...n] = rest_in_arr_n;\n\nlocal {a, b, c} = obj;\nlocal {a, b, c, ...} = obj_rest;\nlocal {a, b, c, ...n} = obj_rest_n;\n\nnull\n" +--- +SOURCE_FILE@0..293 + EXPR_LOCAL@0..292 + LOCAL_KW@0..5 "local" + WHITESPACE@5..6 " " + BIND_DESTRUCT@6..21 + DESTRUCT_ARRAY@6..15 + L_BRACK@6..7 "[" + DESTRUCT_FULL@7..8 + NAME@7..8 + IDENT@7..8 "a" + COMMA@8..9 "," + WHITESPACE@9..10 " " + DESTRUCT_FULL@10..11 + NAME@10..11 + IDENT@10..11 "b" + COMMA@11..12 "," + WHITESPACE@12..13 " " + DESTRUCT_FULL@13..14 + NAME@13..14 + IDENT@13..14 "c" + R_BRACK@14..15 "]" + WHITESPACE@15..16 " " + ASSIGN@16..17 "=" + WHITESPACE@17..18 " " + EXPR_VAR@18..21 + NAME@18..21 + IDENT@18..21 "arr" + SEMI@21..22 ";" + WHITESPACE@22..23 "\n" + EXPR_LOCAL@23..292 + LOCAL_KW@23..28 "local" + WHITESPACE@28..29 " " + BIND_DESTRUCT@29..48 + DESTRUCT_ARRAY@29..37 + L_BRACK@29..30 "[" + DESTRUCT_FULL@30..31 + NAME@30..31 + IDENT@30..31 "a" + COMMA@31..32 "," + WHITESPACE@32..33 " " + DESTRUCT_REST@33..36 + DOTDOTDOT@33..36 "..." + R_BRACK@36..37 "]" + WHITESPACE@37..38 " " + ASSIGN@38..39 "=" + WHITESPACE@39..40 " " + EXPR_VAR@40..48 + NAME@40..48 + IDENT@40..48 "arr_rest" + SEMI@48..49 ";" + WHITESPACE@49..50 "\n" + EXPR_LOCAL@50..292 + LOCAL_KW@50..55 "local" + WHITESPACE@55..56 " " + BIND_DESTRUCT@56..75 + DESTRUCT_ARRAY@56..64 + L_BRACK@56..57 "[" + DESTRUCT_REST@57..60 + DOTDOTDOT@57..60 "..." + COMMA@60..61 "," + WHITESPACE@61..62 " " + DESTRUCT_FULL@62..63 + NAME@62..63 + IDENT@62..63 "a" + R_BRACK@63..64 "]" + WHITESPACE@64..65 " " + ASSIGN@65..66 "=" + WHITESPACE@66..67 " " + EXPR_VAR@67..75 + NAME@67..75 + IDENT@67..75 "rest_arr" + SEMI@75..76 ";" + WHITESPACE@76..77 "\n" + EXPR_LOCAL@77..292 + LOCAL_KW@77..82 "local" + WHITESPACE@82..83 " " + BIND_DESTRUCT@83..102 + DESTRUCT_ARRAY@83..88 + L_BRACK@83..84 "[" + DESTRUCT_REST@84..87 + DOTDOTDOT@84..87 "..." + R_BRACK@87..88 "]" + WHITESPACE@88..89 " " + ASSIGN@89..90 "=" + WHITESPACE@90..91 " " + EXPR_VAR@91..102 + NAME@91..102 + IDENT@91..102 "rest_in_arr" + SEMI@102..103 ";" + WHITESPACE@103..104 "\n" + EXPR_LOCAL@104..292 + LOCAL_KW@104..109 "local" + WHITESPACE@109..110 " " + BIND_DESTRUCT@110..132 + DESTRUCT_ARRAY@110..119 + L_BRACK@110..111 "[" + DESTRUCT_FULL@111..112 + NAME@111..112 + IDENT@111..112 "a" + COMMA@112..113 "," + WHITESPACE@113..114 " " + DESTRUCT_REST@114..118 + DOTDOTDOT@114..117 "..." + IDENT@117..118 "n" + R_BRACK@118..119 "]" + WHITESPACE@119..120 " " + ASSIGN@120..121 "=" + WHITESPACE@121..122 " " + EXPR_VAR@122..132 + NAME@122..132 + IDENT@122..132 "arr_rest_n" + SEMI@132..133 ";" + WHITESPACE@133..134 "\n" + EXPR_LOCAL@134..292 + LOCAL_KW@134..139 "local" + WHITESPACE@139..140 " " + BIND_DESTRUCT@140..162 + DESTRUCT_ARRAY@140..149 + L_BRACK@140..141 "[" + DESTRUCT_REST@141..145 + DOTDOTDOT@141..144 "..." + IDENT@144..145 "n" + COMMA@145..146 "," + WHITESPACE@146..147 " " + DESTRUCT_FULL@147..148 + NAME@147..148 + IDENT@147..148 "a" + R_BRACK@148..149 "]" + WHITESPACE@149..150 " " + ASSIGN@150..151 "=" + WHITESPACE@151..152 " " + EXPR_VAR@152..162 + NAME@152..162 + IDENT@152..162 "rest_arr_n" + SEMI@162..163 ";" + WHITESPACE@163..164 "\n" + EXPR_LOCAL@164..292 + LOCAL_KW@164..169 "local" + WHITESPACE@169..170 " " + BIND_DESTRUCT@170..192 + DESTRUCT_ARRAY@170..176 + L_BRACK@170..171 "[" + DESTRUCT_REST@171..175 + DOTDOTDOT@171..174 "..." + IDENT@174..175 "n" + R_BRACK@175..176 "]" + WHITESPACE@176..177 " " + ASSIGN@177..178 "=" + WHITESPACE@178..179 " " + EXPR_VAR@179..192 + NAME@179..192 + IDENT@179..192 "rest_in_arr_n" + SEMI@192..193 ";" + WHITESPACE@193..195 "\n\n" + EXPR_LOCAL@195..292 + LOCAL_KW@195..200 "local" + WHITESPACE@200..201 " " + BIND_DESTRUCT@201..216 + DESTRUCT_OBJECT@201..210 + L_BRACE@201..202 "{" + DESTRUCT_OBJECT_FIELD@202..203 + NAME@202..203 + IDENT@202..203 "a" + COMMA@203..204 "," + WHITESPACE@204..205 " " + DESTRUCT_OBJECT_FIELD@205..206 + NAME@205..206 + IDENT@205..206 "b" + COMMA@206..207 "," + WHITESPACE@207..208 " " + DESTRUCT_OBJECT_FIELD@208..209 + NAME@208..209 + IDENT@208..209 "c" + R_BRACE@209..210 "}" + WHITESPACE@210..211 " " + ASSIGN@211..212 "=" + WHITESPACE@212..213 " " + EXPR_VAR@213..216 + NAME@213..216 + IDENT@213..216 "obj" + SEMI@216..217 ";" + WHITESPACE@217..218 "\n" + EXPR_LOCAL@218..292 + LOCAL_KW@218..223 "local" + WHITESPACE@223..224 " " + BIND_DESTRUCT@224..249 + DESTRUCT_OBJECT@224..238 + L_BRACE@224..225 "{" + DESTRUCT_OBJECT_FIELD@225..226 + NAME@225..226 + IDENT@225..226 "a" + COMMA@226..227 "," + WHITESPACE@227..228 " " + DESTRUCT_OBJECT_FIELD@228..229 + NAME@228..229 + IDENT@228..229 "b" + COMMA@229..230 "," + WHITESPACE@230..231 " " + DESTRUCT_OBJECT_FIELD@231..232 + NAME@231..232 + IDENT@231..232 "c" + COMMA@232..233 "," + WHITESPACE@233..234 " " + DESTRUCT_REST@234..237 + DOTDOTDOT@234..237 "..." + R_BRACE@237..238 "}" + WHITESPACE@238..239 " " + ASSIGN@239..240 "=" + WHITESPACE@240..241 " " + EXPR_VAR@241..249 + NAME@241..249 + IDENT@241..249 "obj_rest" + SEMI@249..250 ";" + WHITESPACE@250..251 "\n" + EXPR_LOCAL@251..292 + LOCAL_KW@251..256 "local" + WHITESPACE@256..257 " " + BIND_DESTRUCT@257..285 + DESTRUCT_OBJECT@257..272 + L_BRACE@257..258 "{" + DESTRUCT_OBJECT_FIELD@258..259 + NAME@258..259 + IDENT@258..259 "a" + COMMA@259..260 "," + WHITESPACE@260..261 " " + DESTRUCT_OBJECT_FIELD@261..262 + NAME@261..262 + IDENT@261..262 "b" + COMMA@262..263 "," + WHITESPACE@263..264 " " + DESTRUCT_OBJECT_FIELD@264..265 + NAME@264..265 + IDENT@264..265 "c" + COMMA@265..266 "," + WHITESPACE@266..267 " " + DESTRUCT_REST@267..271 + DOTDOTDOT@267..270 "..." + IDENT@270..271 "n" + R_BRACE@271..272 "}" + WHITESPACE@272..273 " " + ASSIGN@273..274 "=" + WHITESPACE@274..275 " " + EXPR_VAR@275..285 + NAME@275..285 + IDENT@275..285 "obj_rest_n" + SEMI@285..286 ";" + WHITESPACE@286..288 "\n\n" + EXPR_LITERAL@288..292 + NULL_KW@288..292 "null" + WHITESPACE@292..293 "\n" + --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__empty.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__empty.snap @@ -4,11 +4,13 @@ --- SOURCE_FILE@0..1 WHITESPACE@0..1 " " + ERROR_MISSING_TOKEN@1..1 === -Missing { expected: Named("value"), offset: 1 } +LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 1..1 } === x syntax error ,---- - 1 | + 1 | + : ^ + : `-- missing expression `---- - --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function.snap @@ -2,7 +2,7 @@ source: crates/jrsonnet-rowan-parser/src/tests.rs expression: "function(a, b = 1) a + b\n" --- -SOURCE_FILE@0..24 +SOURCE_FILE@0..25 EXPR_FUNCTION@0..24 FUNCTION_KW@0..8 "function" PARAMS_DESC@8..18 @@ -35,4 +35,5 @@ EXPR_VAR@23..24 NAME@23..24 IDENT@23..24 "b" + WHITESPACE@24..25 "\n" --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_body.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_body.snap @@ -2,8 +2,8 @@ source: crates/jrsonnet-rowan-parser/src/tests.rs expression: "function(a, b)\n" --- -SOURCE_FILE@0..14 - EXPR_FUNCTION@0..14 +SOURCE_FILE@0..15 + EXPR_FUNCTION@0..15 FUNCTION_KW@0..8 "function" PARAMS_DESC@8..14 L_PAREN@8..9 "(" @@ -18,13 +18,14 @@ NAME@12..13 IDENT@12..13 "b" R_PAREN@13..14 ")" + WHITESPACE@14..15 "\n" + ERROR_MISSING_TOKEN@15..15 === -Missing { expected: Named("value"), offset: 14 } +LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 15..15 } === x syntax error ,---- 1 | function(a, b) - : ^ - : `-- missing value + : ^ + : `-- missing expression `---- - --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_no_value.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_no_value.snap @@ -3,37 +3,44 @@ expression: "function(a, b = ) a + b\n" --- SOURCE_FILE@0..24 - EXPR_FUNCTION@0..24 + EXPR_FUNCTION@0..23 FUNCTION_KW@0..8 "function" - PARAMS_DESC@8..18 + PARAMS_DESC@8..17 L_PAREN@8..9 "(" PARAM@9..10 - IDENT@9..10 "a" + DESTRUCT_FULL@9..10 + NAME@9..10 + IDENT@9..10 "a" COMMA@10..11 "," WHITESPACE@11..12 " " PARAM@12..16 - IDENT@12..13 "b" + DESTRUCT_FULL@12..13 + NAME@12..13 + IDENT@12..13 "b" WHITESPACE@13..14 " " ASSIGN@14..15 "=" WHITESPACE@15..16 " " + ERROR_MISSING_TOKEN@16..16 R_PAREN@16..17 ")" - WHITESPACE@17..18 " " - EXPR_BINARY@18..24 - EXPR_VAR@18..20 - IDENT@18..19 "a" - WHITESPACE@19..20 " " + WHITESPACE@17..18 " " + EXPR_BINARY@18..23 + LHS_EXPR@18..19 + EXPR_VAR@18..19 + NAME@18..19 + IDENT@18..19 "a" + WHITESPACE@19..20 " " PLUS@20..21 "+" WHITESPACE@21..22 " " - EXPR_VAR@22..24 - IDENT@22..23 "b" - WHITESPACE@23..24 "\n" + EXPR_VAR@22..23 + NAME@22..23 + IDENT@22..23 "b" + WHITESPACE@23..24 "\n" === -Missing { expected: Named("value"), offset: 15 } +LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 16..16 } === x syntax error ,---- 1 | function(a, b = ) a + b - : ^ - : `-- missing value + : ^ + : `-- missing expression `---- - --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__function_error_rparen.snap @@ -2,10 +2,10 @@ source: crates/jrsonnet-rowan-parser/src/tests.rs expression: "function(a, b\n" --- -SOURCE_FILE@0..13 - EXPR_FUNCTION@0..13 +SOURCE_FILE@0..14 + EXPR_FUNCTION@0..14 FUNCTION_KW@0..8 "function" - PARAMS_DESC@8..13 + PARAMS_DESC@8..14 L_PAREN@8..9 "(" PARAM@9..10 DESTRUCT_FULL@9..10 @@ -17,15 +17,17 @@ DESTRUCT_FULL@12..13 NAME@12..13 IDENT@12..13 "b" + WHITESPACE@13..14 "\n" + ERROR_MISSING_TOKEN@14..14 + ERROR_MISSING_TOKEN@14..14 === -Missing { expected: Unnamed(R_PAREN), offset: 13 } -Missing { expected: Named("value"), offset: 13 } +LocatedSyntaxError { error: Missing { expected: Unnamed(R_PAREN) }, range: 14..14 } +LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 14..14 } === x syntax error ,---- 1 | function(a, b - : ^ - : |`-- missing value - : `-- missing R_PAREN + : ^^ + : |`-- missing expression + : `-- missing R_PAREN `---- - --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_no_value_recovery.snap @@ -3,37 +3,44 @@ expression: "local a =\nlocal b = 3;\n1\n" --- SOURCE_FILE@0..25 - LOCAL_KW@0..25 + EXPR_LOCAL@0..25 LOCAL_KW@0..5 "local" WHITESPACE@5..6 " " - IDENT@6..7 "a" - WHITESPACE@7..8 " " - ASSIGN@8..9 "=" - WHITESPACE@9..10 "\n" - LOCAL_KW@10..25 - LOCAL_KW@10..15 "local" - WHITESPACE@15..16 " " - IDENT@16..17 "b" - WHITESPACE@17..18 " " - ASSIGN@18..19 "=" - WHITESPACE@19..20 " " - EXPR_NUMBER@20..21 - NUMBER@20..21 "3" - SEMI@21..22 ";" - WHITESPACE@22..23 "\n" - EXPR_NUMBER@23..25 - NUMBER@23..24 "1" - WHITESPACE@24..25 "\n" + BIND_DESTRUCT@6..24 + DESTRUCT_FULL@6..7 + NAME@6..7 + IDENT@6..7 "a" + WHITESPACE@7..8 " " + ASSIGN@8..9 "=" + WHITESPACE@9..10 "\n" + EXPR_LOCAL@10..24 + LOCAL_KW@10..15 "local" + WHITESPACE@15..16 " " + BIND_DESTRUCT@16..21 + DESTRUCT_FULL@16..17 + NAME@16..17 + IDENT@16..17 "b" + WHITESPACE@17..18 " " + ASSIGN@18..19 "=" + WHITESPACE@19..20 " " + EXPR_NUMBER@20..21 + FLOAT@20..21 "3" + SEMI@21..22 ";" + WHITESPACE@22..23 "\n" + EXPR_NUMBER@23..24 + FLOAT@23..24 "1" + WHITESPACE@24..25 "\n" + ERROR_MISSING_TOKEN@25..25 + ERROR_MISSING_TOKEN@25..25 === -Missing { expected: Unnamed(SEMI), offset: 24 } -Missing { expected: Named("value"), offset: 24 } +LocatedSyntaxError { error: Missing { expected: Unnamed(SEMI) }, range: 25..25 } +LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 25..25 } === x syntax error ,-[2:1] 2 | local b = 3; 3 | 1 - : ^ - : |`-- missing value - : `-- missing SEMI + : ^^ + : |`-- missing expression + : `-- missing SEMI `---- - --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__local_novalue.snap @@ -3,24 +3,29 @@ expression: "local a =\n" --- SOURCE_FILE@0..10 - LOCAL_KW@0..10 + EXPR_LOCAL@0..10 LOCAL_KW@0..5 "local" WHITESPACE@5..6 " " - IDENT@6..7 "a" - WHITESPACE@7..8 " " - ASSIGN@8..9 "=" - WHITESPACE@9..10 "\n" + BIND_DESTRUCT@6..10 + DESTRUCT_FULL@6..7 + NAME@6..7 + IDENT@6..7 "a" + WHITESPACE@7..8 " " + ASSIGN@8..9 "=" + WHITESPACE@9..10 "\n" + ERROR_MISSING_TOKEN@10..10 + ERROR_MISSING_TOKEN@10..10 + ERROR_MISSING_TOKEN@10..10 === -Missing { expected: Named("value"), offset: 9 } -Missing { expected: Unnamed(SEMI), offset: 9 } -Missing { expected: Named("value"), offset: 9 } +LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 10..10 } +LocatedSyntaxError { error: Missing { expected: Unnamed(SEMI) }, range: 10..10 } +LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 10..10 } === x syntax error ,---- 1 | local a = - : ^ - : `-- missing value - : |`-- missing SEMI - : `-- missing value + : ^^^ + : `-- missing expression + : |`-- missing SEMI + : `-- missing expression `---- - --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_lhs.snap @@ -3,17 +3,18 @@ expression: "+ 2\n" --- SOURCE_FILE@0..2 - PLUS@0..1 "+" + ERROR_MISSING_TOKEN@0..0 + ERROR_UNEXPECTED_TOKEN@0..1 + PLUS@0..1 "+" WHITESPACE@1..2 " " === -Missing { expected: Named("value"), offset: 0 } -Custom { error: "unexpected input after expression", range: 0..1 } +LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 0..0 } +LocatedSyntaxError { error: Unexpected { expected: Unnamed(EOF), found: PLUS }, range: 0..1 } === x syntax error ,---- 1 | + 2 - : ^ - : |`-- unexpected input after expression - : `-- missing value + : ^| + : |`-- expected EOF, found PLUS + : `-- missing expression `---- - --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_operator.snap @@ -2,14 +2,15 @@ source: crates/jrsonnet-rowan-parser/src/tests.rs expression: "2 2\n" --- -SOURCE_FILE@0..3 +SOURCE_FILE@0..4 EXPR_NUMBER@0..1 FLOAT@0..1 "2" WHITESPACE@1..2 " " - ERROR@2..3 + ERROR_UNEXPECTED_TOKEN@2..3 FLOAT@2..3 "2" + WHITESPACE@3..4 "\n" === -Unexpected { expected: Unnamed(EOF), found: FLOAT, range: 2..3 } +LocatedSyntaxError { error: Unexpected { expected: Unnamed(EOF), found: FLOAT }, range: 2..3 } === x syntax error ,---- @@ -17,4 +18,3 @@ : | : `-- expected EOF, found FLOAT `---- - --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_rhs.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__no_rhs.snap @@ -2,21 +2,22 @@ source: crates/jrsonnet-rowan-parser/src/tests.rs expression: "a +\n" --- -SOURCE_FILE@0..3 - EXPR_BINARY@0..3 +SOURCE_FILE@0..4 + EXPR_BINARY@0..4 LHS_EXPR@0..1 EXPR_VAR@0..1 NAME@0..1 IDENT@0..1 "a" WHITESPACE@1..2 " " PLUS@2..3 "+" + WHITESPACE@3..4 "\n" + ERROR_MISSING_TOKEN@4..4 === -Missing { expected: Named("value"), offset: 3 } +LocatedSyntaxError { error: Missing { expected: Named("expression") }, range: 4..4 } === x syntax error ,---- 1 | a + - : ^ - : `-- missing value + : ^ + : `-- missing expression `---- - --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__plain_call.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__plain_call.snap @@ -2,7 +2,7 @@ source: crates/jrsonnet-rowan-parser/src/tests.rs expression: "std.substr(a, 0, std.length(b)) == b\n" --- -SOURCE_FILE@0..36 +SOURCE_FILE@0..37 EXPR_BINARY@0..36 LHS_EXPR@0..31 EXPR_APPLY@0..31 @@ -49,4 +49,5 @@ EXPR_VAR@35..36 NAME@35..36 IDENT@35..36 "b" + WHITESPACE@36..37 "\n" --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__stdlib.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__stdlib.snap @@ -1,10 +1,10 @@ --- source: crates/jrsonnet-rowan-parser/src/tests.rs -expression: "{\n local std = self,\n local id = std.id,\n\n # Magic legacy field\n thisFile:: $intrinsicThisFile,\n id:: $intrinsicId,\n\n # Those functions aren't normally located in stdlib\n length:: $intrinsic(length),\n type:: $intrinsic(type),\n makeArray:: $intrinsic(makeArray),\n codepoint:: $intrinsic(codepoint),\n objectFieldsEx:: $intrinsic(objectFieldsEx),\n objectHasEx:: $intrinsic(objectHasEx),\n primitiveEquals:: $intrinsic(primitiveEquals),\n modulo:: $intrinsic(modulo),\n floor:: $intrinsic(floor),\n ceil:: $intrinsic(ceil),\n extVar:: $intrinsic(extVar),\n native:: $intrinsic(native),\n filter:: $intrinsic(filter),\n char:: $intrinsic(char),\n encodeUTF8:: $intrinsic(encodeUTF8),\n decodeUTF8:: $intrinsic(decodeUTF8),\n md5:: $intrinsic(md5),\n trace:: $intrinsic(trace),\n parseJson:: $intrinsic(parseJson),\n parseYaml:: $intrinsic(parseYaml),\n\n log:: $intrinsic(log),\n pow:: $intrinsic(pow),\n sqrt:: $intrinsic(sqrt),\n\n sin:: $intrinsic(sin),\n cos:: $intrinsic(cos),\n tan:: $intrinsic(tan),\n asin:: $intrinsic(asin),\n acos:: $intrinsic(acos),\n atan:: $intrinsic(atan),\n\n exp:: $intrinsic(exp),\n mantissa:: $intrinsic(mantissa),\n exponent:: $intrinsic(exponent),\n\n any:: $intrinsic(any),\n all:: $intrinsic(all),\n\n isString(v):: std.type(v) == 'string',\n isNumber(v):: std.type(v) == 'number',\n isBoolean(v):: std.type(v) == 'boolean',\n isObject(v):: std.type(v) == 'object',\n isArray(v):: std.type(v) == 'array',\n isFunction(v):: std.type(v) == 'function',\n\n toString(a)::\n if std.type(a) == 'string' then a else '' + a,\n\n substr:: $intrinsic(substr),\n\n startsWith(a, b)::\n if std.length(a) < std.length(b) then\n false\n else\n std.substr(a, 0, std.length(b)) == b,\n\n endsWith(a, b)::\n if std.length(a) < std.length(b) then\n false\n else\n std.substr(a, std.length(a) - std.length(b), std.length(b)) == b,\n\n lstripChars(str, chars)::\n if std.length(str) > 0 && std.member(chars, str[0]) then\n std.lstripChars(str[1:], chars)\n else\n str,\n\n rstripChars(str, chars)::\n local len = std.length(str);\n if len > 0 && std.member(chars, str[len - 1]) then\n std.rstripChars(str[:len - 1], chars)\n else\n str,\n\n stripChars(str, chars)::\n std.lstripChars(std.rstripChars(str, chars), chars),\n\n stringChars(str)::\n std.makeArray(std.length(str), function(i) str[i]),\n\n local parse_nat(str, base) =\n assert base > 0 && base <= 16 : 'integer base %d invalid' % base;\n // These codepoints are in ascending order:\n local zero_code = std.codepoint('0');\n local upper_a_code = std.codepoint('A');\n local lower_a_code = std.codepoint('a');\n local addDigit(aggregate, char) =\n local code = std.codepoint(char);\n local digit = if code >= lower_a_code then\n code - lower_a_code + 10\n else if code >= upper_a_code then\n code - upper_a_code + 10\n else\n code - zero_code;\n assert digit >= 0 && digit < base : '%s is not a base %d integer' % [str, base];\n base * aggregate + digit;\n std.foldl(addDigit, std.stringChars(str), 0),\n\n parseInt(str)::\n assert std.isString(str) : 'Expected string, got ' + std.type(str);\n assert std.length(str) > 0 && str != '-' : 'Not an integer: \"%s\"' % [str];\n if str[0] == '-' then\n -parse_nat(str[1:], 10)\n else\n parse_nat(str, 10),\n\n parseOctal(str)::\n assert std.isString(str) : 'Expected string, got ' + std.type(str);\n assert std.length(str) > 0 : 'Not an octal number: \"\"';\n parse_nat(str, 8),\n\n parseHex(str)::\n assert std.isString(str) : 'Expected string, got ' + std.type(str);\n assert std.length(str) > 0 : 'Not hexadecimal: \"\"';\n parse_nat(str, 16),\n\n split(str, c):: std.splitLimit(str, c, -1),\n\n splitLimit:: $intrinsic(splitLimit),\n\n strReplace:: $intrinsic(strReplace),\n\n asciiUpper:: $intrinsic(asciiUpper),\n\n asciiLower:: $intrinsic(asciiLower),\n\n range:: $intrinsic(range),\n\n repeat(what, count)::\n local joiner =\n if std.isString(what) then ''\n else if std.isArray(what) then []\n else error 'std.repeat first argument must be an array or a string';\n std.join(joiner, std.makeArray(count, function(i) what)),\n\n slice:: $intrinsic(slice),\n\n member:: $intrinsic(member),\n\n count:: $intrinsic(count),\n\n mod:: $intrinsic(mod),\n\n map:: $intrinsic(map),\n\n mapWithIndex(func, arr)::\n if !std.isFunction(func) then\n error ('std.mapWithIndex first param must be function, got ' + std.type(func))\n else if !std.isArray(arr) && !std.isString(arr) then\n error ('std.mapWithIndex second param must be array, got ' + std.type(arr))\n else\n std.makeArray(std.length(arr), function(i) func(i, arr[i])),\n\n mapWithKey(func, obj)::\n if !std.isFunction(func) then\n error ('std.mapWithKey first param must be function, got ' + std.type(func))\n else if !std.isObject(obj) then\n error ('std.mapWithKey second param must be object, got ' + std.type(obj))\n else\n { [k]: func(k, obj[k]) for k in std.objectFields(obj) },\n\n flatMap:: $intrinsic(flatMap),\n\n join:: $intrinsic(join),\n\n lines(arr)::\n std.join('\\n', arr + ['']),\n\n deepJoin(arr)::\n if std.isString(arr) then\n arr\n else if std.isArray(arr) then\n std.join('', [std.deepJoin(x) for x in arr])\n else\n error 'Expected string or array, got %s' % std.type(arr),\n\n\n format:: $intrinsic(format),\n\n foldr:: $intrinsic(foldr),\n\n foldl:: $intrinsic(foldl),\n\n filterMap(filter_func, map_func, arr)::\n if !std.isFunction(filter_func) then\n error ('std.filterMap first param must be function, got ' + std.type(filter_func))\n else if !std.isFunction(map_func) then\n error ('std.filterMap second param must be function, got ' + std.type(map_func))\n else if !std.isArray(arr) then\n error ('std.filterMap third param must be array, got ' + std.type(arr))\n else\n std.map(map_func, std.filter(filter_func, arr)),\n\n assertEqual(a, b)::\n if a == b then\n true\n else\n error 'Assertion failed. ' + a + ' != ' + b,\n\n abs(n)::\n if !std.isNumber(n) then\n error 'std.abs expected number, got ' + std.type(n)\n else\n if n > 0 then n else -n,\n\n sign(n)::\n if !std.isNumber(n) then\n error 'std.sign expected number, got ' + std.type(n)\n else\n if n > 0 then\n 1\n else if n < 0 then\n -1\n else 0,\n\n max(a, b)::\n if !std.isNumber(a) then\n error 'std.max first param expected number, got ' + std.type(a)\n else if !std.isNumber(b) then\n error 'std.max second param expected number, got ' + std.type(b)\n else\n if a > b then a else b,\n\n min(a, b)::\n if !std.isNumber(a) then\n error 'std.min first param expected number, got ' + std.type(a)\n else if !std.isNumber(b) then\n error 'std.min second param expected number, got ' + std.type(b)\n else\n if a < b then a else b,\n\n clamp(x, minVal, maxVal)::\n if x < minVal then minVal\n else if x > maxVal then maxVal\n else x,\n\n flattenArrays(arrs)::\n std.foldl(function(a, b) a + b, arrs, []),\n\n manifestIni(ini)::\n local body_lines(body) =\n std.join([], [\n local value_or_values = body[k];\n if std.isArray(value_or_values) then\n ['%s = %s' % [k, value] for value in value_or_values]\n else\n ['%s = %s' % [k, value_or_values]]\n\n for k in std.objectFields(body)\n ]);\n\n local section_lines(sname, sbody) = ['[%s]' % [sname]] + body_lines(sbody),\n main_body = if std.objectHas(ini, 'main') then body_lines(ini.main) else [],\n all_sections = [\n section_lines(k, ini.sections[k])\n for k in std.objectFields(ini.sections)\n ];\n std.join('\\n', main_body + std.flattenArrays(all_sections) + ['']),\n\n manifestToml(value):: std.manifestTomlEx(value, ' '),\n\n manifestTomlEx(value, indent)::\n local\n escapeStringToml = std.escapeStringJson,\n escapeKeyToml(key) =\n local bare_allowed = std.set(std.stringChars('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-'));\n if std.setUnion(std.set(std.stringChars(key)), bare_allowed) == bare_allowed then key else escapeStringToml(key),\n isTableArray(v) = std.isArray(v) && std.length(v) > 0 && std.foldl(function(a, b) a && std.isObject(b), v, true),\n isSection(v) = std.isObject(v) || isTableArray(v),\n renderValue(v, indexedPath, inline, cindent) =\n if v == true then\n 'true'\n else if v == false then\n 'false'\n else if v == null then\n error 'Tried to manifest \"null\" at ' + indexedPath\n else if std.isNumber(v) then\n '' + v\n else if std.isString(v) then\n escapeStringToml(v)\n else if std.isFunction(v) then\n error 'Tried to manifest function at ' + indexedPath\n else if std.isArray(v) then\n if std.length(v) == 0 then\n '[]'\n else\n local range = std.range(0, std.length(v) - 1);\n local new_indent = if inline then '' else cindent + indent;\n local separator = if inline then ' ' else '\\n';\n local lines = ['[' + separator]\n + std.join([',' + separator],\n [\n [new_indent + renderValue(v[i], indexedPath + [i], true, '')]\n for i in range\n ])\n + [separator + (if inline then '' else cindent) + ']'];\n std.join('', lines)\n else if std.isObject(v) then\n local lines = ['{ ']\n + std.join([', '],\n [\n [escapeKeyToml(k) + ' = ' + renderValue(v[k], indexedPath + [k], true, '')]\n for k in std.objectFields(v)\n ])\n + [' }'];\n std.join('', lines),\n renderTableInternal(v, path, indexedPath, cindent) =\n local kvp = std.flattenArrays([\n [cindent + escapeKeyToml(k) + ' = ' + renderValue(v[k], indexedPath + [k], false, cindent)]\n for k in std.objectFields(v)\n if !isSection(v[k])\n ]);\n local sections = [std.join('\\n', kvp)] + [\n (\n if std.isObject(v[k]) then\n renderTable(v[k], path + [k], indexedPath + [k], cindent)\n else\n renderTableArray(v[k], path + [k], indexedPath + [k], cindent)\n )\n for k in std.objectFields(v)\n if isSection(v[k])\n ];\n std.join('\\n\\n', sections),\n renderTable(v, path, indexedPath, cindent) =\n cindent + '[' + std.join('.', std.map(escapeKeyToml, path)) + ']'\n + (if v == {} then '' else '\\n')\n + renderTableInternal(v, path, indexedPath, cindent + indent),\n renderTableArray(v, path, indexedPath, cindent) =\n local range = std.range(0, std.length(v) - 1);\n local sections = [\n (cindent + '[[' + std.join('.', std.map(escapeKeyToml, path)) + ']]'\n + (if v[i] == {} then '' else '\\n')\n + renderTableInternal(v[i], path, indexedPath + [i], cindent + indent))\n for i in range\n ];\n std.join('\\n\\n', sections);\n if std.isObject(value) then\n renderTableInternal(value, [], [], '')\n else\n error 'TOML body must be an object. Got ' + std.type(value),\n\n escapeStringJson:: $intrinsic(escapeStringJson),\n\n escapeStringPython(str)::\n std.escapeStringJson(str),\n\n escapeStringBash(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == \"'\" then\n \"'\\\"'\\\"'\"\n else\n ch;\n \"'%s'\" % std.join('', [trans(ch) for ch in std.stringChars(str)]),\n\n escapeStringDollars(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == '$' then\n '$$'\n else\n ch;\n std.foldl(function(a, b) a + trans(b), std.stringChars(str), ''),\n\n manifestJson(value):: std.manifestJsonEx(value, ' ') tailstrict,\n\n manifestJsonMinified(value):: std.manifestJsonEx(value, '', '', ':'),\n\n manifestJsonEx:: $intrinsic(manifestJsonEx),\n\n manifestYamlDoc:: $intrinsic(manifestYamlDoc),\n\n manifestYamlStream(value, indent_array_in_object=false, c_document_end=true)::\n if !std.isArray(value) then\n error 'manifestYamlStream only takes arrays, got ' + std.type(value)\n else\n '---\\n' + std.join(\n '\\n---\\n', [std.manifestYamlDoc(e, indent_array_in_object) for e in value]\n ) + if c_document_end then '\\n...\\n' else '\\n',\n\n\n manifestPython(v)::\n if std.isObject(v) then\n local fields = [\n '%s: %s' % [std.escapeStringPython(k), std.manifestPython(v[k])]\n for k in std.objectFields(v)\n ];\n '{%s}' % [std.join(', ', fields)]\n else if std.isArray(v) then\n '[%s]' % [std.join(', ', [std.manifestPython(v2) for v2 in v])]\n else if std.isString(v) then\n '%s' % [std.escapeStringPython(v)]\n else if std.isFunction(v) then\n error 'cannot manifest function'\n else if std.isNumber(v) then\n std.toString(v)\n else if v == true then\n 'True'\n else if v == false then\n 'False'\n else if v == null then\n 'None',\n\n manifestPythonVars(conf)::\n local vars = ['%s = %s' % [k, std.manifestPython(conf[k])] for k in std.objectFields(conf)];\n std.join('\\n', vars + ['']),\n\n manifestXmlJsonml(value)::\n if !std.isArray(value) then\n error 'Expected a JSONML value (an array), got %s' % std.type(value)\n else\n local aux(v) =\n if std.isString(v) then\n v\n else\n local tag = v[0];\n local has_attrs = std.length(v) > 1 && std.isObject(v[1]);\n local attrs = if has_attrs then v[1] else {};\n local children = if has_attrs then v[2:] else v[1:];\n local attrs_str =\n std.join('', [' %s=\"%s\"' % [k, attrs[k]] for k in std.objectFields(attrs)]);\n std.deepJoin(['<', tag, attrs_str, '>', [aux(x) for x in children], '']);\n\n aux(value),\n\n local base64_table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',\n local base64_inv = { [base64_table[i]]: i for i in std.range(0, 63) },\n\n base64:: $intrinsic(base64),\n\n base64DecodeBytes:: $intrinsic(base64DecodeBytes),\n\n base64Decode:: $intrinsic(base64Decode),\n\n reverse:: $intrinsic(reverse),\n\n sort:: $intrinsic(sort),\n\n uniq(arr, keyF=id)::\n local f(a, b) =\n if std.length(a) == 0 then\n [b]\n else if keyF(a[std.length(a) - 1]) == keyF(b) then\n a\n else\n a + [b];\n std.foldl(f, arr, []),\n\n set(arr, keyF=id)::\n std.uniq(std.sort(arr, keyF), keyF),\n\n setMember(x, arr, keyF=id)::\n // TODO(dcunnin): Binary chop for O(log n) complexity\n std.length(std.setInter([x], arr, keyF)) > 0,\n\n setUnion(a, b, keyF=id)::\n // NOTE: order matters, values in `a` win\n local aux(a, b, i, j, acc) =\n if i >= std.length(a) then\n acc + b[j:]\n else if j >= std.length(b) then\n acc + a[i:]\n else\n local ak = keyF(a[i]);\n local bk = keyF(b[j]);\n if ak == bk then\n aux(a, b, i + 1, j + 1, acc + [a[i]]) tailstrict\n else if ak < bk then\n aux(a, b, i + 1, j, acc + [a[i]]) tailstrict\n else\n aux(a, b, i, j + 1, acc + [b[j]]) tailstrict;\n aux(a, b, 0, 0, []),\n\n setInter(a, b, keyF=id)::\n local aux(a, b, i, j, acc) =\n if i >= std.length(a) || j >= std.length(b) then\n acc\n else\n if keyF(a[i]) == keyF(b[j]) then\n aux(a, b, i + 1, j + 1, acc + [a[i]]) tailstrict\n else if keyF(a[i]) < keyF(b[j]) then\n aux(a, b, i + 1, j, acc) tailstrict\n else\n aux(a, b, i, j + 1, acc) tailstrict;\n aux(a, b, 0, 0, []) tailstrict,\n\n setDiff(a, b, keyF=id)::\n local aux(a, b, i, j, acc) =\n if i >= std.length(a) then\n acc\n else if j >= std.length(b) then\n acc + a[i:]\n else\n if keyF(a[i]) == keyF(b[j]) then\n aux(a, b, i + 1, j + 1, acc) tailstrict\n else if keyF(a[i]) < keyF(b[j]) then\n aux(a, b, i + 1, j, acc + [a[i]]) tailstrict\n else\n aux(a, b, i, j + 1, acc) tailstrict;\n aux(a, b, 0, 0, []) tailstrict,\n\n mergePatch(target, patch)::\n if std.isObject(patch) then\n local target_object =\n if std.isObject(target) then target else {};\n\n local target_fields =\n if std.isObject(target_object) then std.objectFields(target_object) else [];\n\n local null_fields = [k for k in std.objectFields(patch) if patch[k] == null];\n local both_fields = std.setUnion(target_fields, std.objectFields(patch));\n\n {\n [k]:\n if !std.objectHas(patch, k) then\n target_object[k]\n else if !std.objectHas(target_object, k) then\n std.mergePatch(null, patch[k]) tailstrict\n else\n std.mergePatch(target_object[k], patch[k]) tailstrict\n for k in std.setDiff(both_fields, null_fields)\n }\n else\n patch,\n\n get(o, f, default = null, inc_hidden = true)::\n if std.objectHasEx(o, f, inc_hidden) then o[f] else default,\n\n objectFields(o)::\n std.objectFieldsEx(o, false),\n\n objectFieldsAll(o)::\n std.objectFieldsEx(o, true),\n\n objectHas(o, f)::\n std.objectHasEx(o, f, false),\n\n objectHasAll(o, f)::\n std.objectHasEx(o, f, true),\n\n objectValues(o)::\n [o[k] for k in std.objectFields(o)],\n\n objectValuesAll(o)::\n [o[k] for k in std.objectFieldsAll(o)],\n\n equals:: $intrinsic(equals),\n\n resolvePath(f, r)::\n local arr = std.split(f, '/');\n std.join('/', std.makeArray(std.length(arr) - 1, function(i) arr[i]) + [r]),\n\n prune(a)::\n local isContent(b) =\n if b == null then\n false\n else if std.isArray(b) then\n std.length(b) > 0\n else if std.isObject(b) then\n std.length(b) > 0\n else\n true;\n if std.isArray(a) then\n [std.prune(x) for x in a if isContent($.prune(x))]\n else if std.isObject(a) then {\n [x]: $.prune(a[x])\n for x in std.objectFields(a)\n if isContent(std.prune(a[x]))\n } else\n a,\n\n findSubstr(pat, str)::\n if !std.isString(pat) then\n error 'findSubstr first parameter should be a string, got ' + std.type(pat)\n else if !std.isString(str) then\n error 'findSubstr second parameter should be a string, got ' + std.type(str)\n else\n local pat_len = std.length(pat);\n local str_len = std.length(str);\n if pat_len == 0 || str_len == 0 || pat_len > str_len then\n []\n else\n std.filter(function(i) str[i:i + pat_len] == pat, std.range(0, str_len - pat_len)),\n\n find(value, arr)::\n if !std.isArray(arr) then\n error 'find second parameter should be an array, got ' + std.type(arr)\n else\n std.filter(function(i) arr[i] == value, std.range(0, std.length(arr) - 1)),\n}\n" +expression: "{\n local std = self,\n local id = std.id,\n\n thisFile:: error 'std.thisFile is deprecated, to enable its support in jrsonnet - recompile it with \"legacy-this-file\" support.\\nThis will slow down stdlib caching a bit, though',\n\n toString(a):: '' + a,\n\n lstripChars(str, chars)::\n if std.length(str) > 0 && std.member(chars, str[0]) then\n std.lstripChars(str[1:], chars)\n else\n str,\n\n rstripChars(str, chars)::\n local len = std.length(str);\n if len > 0 && std.member(chars, str[len - 1]) then\n std.rstripChars(str[:len - 1], chars)\n else\n str,\n\n stripChars(str, chars)::\n std.lstripChars(std.rstripChars(str, chars), chars),\n\n stringChars(str)::\n std.makeArray(std.length(str), function(i) str[i]),\n\n splitLimitR(str, c, maxsplits)::\n if maxsplits == -1 then\n std.splitLimit(str, c, -1)\n else\n local revStr(str) = std.join('', std.reverse(std.stringChars(str)));\n std.map(function(e) revStr(e), std.reverse(std.splitLimit(revStr(str), revStr(c), maxsplits))),\n\n split(str, c):: std.splitLimit(str, c, -1),\n\n mapWithIndex(func, arr)::\n if !std.isFunction(func) then\n error ('std.mapWithIndex first param must be function, got ' + std.type(func))\n else if !std.isArray(arr) && !std.isString(arr) then\n error ('std.mapWithIndex second param must be array, got ' + std.type(arr))\n else\n std.makeArray(std.length(arr), function(i) func(i, arr[i])),\n\n mapWithKey(func, obj)::\n if !std.isFunction(func) then\n error ('std.mapWithKey first param must be function, got ' + std.type(func))\n else if !std.isObject(obj) then\n error ('std.mapWithKey second param must be object, got ' + std.type(obj))\n else\n { [k]: func(k, obj[k]) for k in std.objectFields(obj) },\n\n lines(arr)::\n std.join('\\n', arr + ['']),\n\n deepJoin(arr)::\n if std.isString(arr) then\n arr\n else if std.isArray(arr) then\n std.join('', [std.deepJoin(x) for x in arr])\n else\n error 'Expected string or array, got %s' % std.type(arr),\n\n filterMap(filter_func, map_func, arr)::\n if !std.isFunction(filter_func) then\n error ('std.filterMap first param must be function, got ' + std.type(filter_func))\n else if !std.isFunction(map_func) then\n error ('std.filterMap second param must be function, got ' + std.type(map_func))\n else if !std.isArray(arr) then\n error ('std.filterMap third param must be array, got ' + std.type(arr))\n else\n std.map(map_func, std.filter(filter_func, arr)),\n\n assertEqual(a, b)::\n if a == b then\n true\n else\n error 'Assertion failed. ' + a + ' != ' + b,\n\n clamp(x, minVal, maxVal)::\n if x < minVal then minVal\n else if x > maxVal then maxVal\n else x,\n\n flattenArrays(arrs)::\n std.foldl(function(a, b) a + b, arrs, []),\n\n manifestIni(ini)::\n local body_lines(body) =\n std.join([], [\n local value_or_values = body[k];\n if std.isArray(value_or_values) then\n ['%s = %s' % [k, value] for value in value_or_values]\n else\n ['%s = %s' % [k, value_or_values]]\n\n for k in std.objectFields(body)\n ]);\n\n local section_lines(sname, sbody) = ['[%s]' % [sname]] + body_lines(sbody),\n main_body = if std.objectHas(ini, 'main') then body_lines(ini.main) else [],\n all_sections = [\n section_lines(k, ini.sections[k])\n for k in std.objectFields(ini.sections)\n ];\n std.join('\\n', main_body + std.flattenArrays(all_sections) + ['']),\n\n manifestToml(value):: std.manifestTomlEx(value, ' '),\n\n escapeStringPython(str)::\n std.escapeStringJson(str),\n\n escapeStringBash(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == \"'\" then\n \"'\\\"'\\\"'\"\n else\n ch;\n \"'%s'\" % std.join('', [trans(ch) for ch in std.stringChars(str)]),\n\n escapeStringDollars(str_)::\n local str = std.toString(str_);\n local trans(ch) =\n if ch == '$' then\n '$$'\n else\n ch;\n std.foldl(function(a, b) a + trans(b), std.stringChars(str), ''),\n\n local xml_escapes = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": ''',\n },\n\n escapeStringXML(str_)::\n local str = std.toString(str_);\n std.join('', [std.get(xml_escapes, ch, ch) for ch in std.stringChars(str)]),\n\n manifestJson(value):: std.manifestJsonEx(value, ' ') tailstrict,\n\n manifestJsonMinified(value):: std.manifestJsonEx(value, '', '', ':'),\n\n manifestYamlStream(value, indent_array_in_object=false, c_document_end=true, quote_keys=true)::\n if !std.isArray(value) then\n error 'manifestYamlStream only takes arrays, got ' + std.type(value)\n else\n '---\\n' + std.join(\n '\\n---\\n', [std.manifestYamlDoc(e, indent_array_in_object, quote_keys) for e in value]\n ) + if c_document_end then '\\n...\\n' else '\\n',\n\n manifestPython(v)::\n if std.isObject(v) then\n local fields = [\n '%s: %s' % [std.escapeStringPython(k), std.manifestPython(v[k])]\n for k in std.objectFields(v)\n ];\n '{%s}' % [std.join(', ', fields)]\n else if std.isArray(v) then\n '[%s]' % [std.join(', ', [std.manifestPython(v2) for v2 in v])]\n else if std.isString(v) then\n '%s' % [std.escapeStringPython(v)]\n else if std.isFunction(v) then\n error 'cannot manifest function'\n else if std.isNumber(v) then\n std.toString(v)\n else if v == true then\n 'True'\n else if v == false then\n 'False'\n else if v == null then\n 'None',\n\n manifestPythonVars(conf)::\n local vars = ['%s = %s' % [k, std.manifestPython(conf[k])] for k in std.objectFields(conf)];\n std.join('\\n', vars + ['']),\n\n manifestXmlJsonml(value)::\n if !std.isArray(value) then\n error 'Expected a JSONML value (an array), got %s' % std.type(value)\n else\n local aux(v) =\n if std.isString(v) then\n v\n else\n local tag = v[0];\n local has_attrs = std.length(v) > 1 && std.isObject(v[1]);\n local attrs = if has_attrs then v[1] else {};\n local children = if has_attrs then v[2:] else v[1:];\n local attrs_str =\n std.join('', [' %s=\"%s\"' % [k, attrs[k]] for k in std.objectFields(attrs)]);\n std.deepJoin(['<', tag, attrs_str, '>', [aux(x) for x in children], '']);\n\n aux(value),\n\n uniq(arr, keyF=id)::\n local f(a, b) =\n if std.length(a) == 0 then\n [b]\n else if keyF(a[std.length(a) - 1]) == keyF(b) then\n a\n else\n a + [b];\n std.foldl(f, arr, []),\n\n set(arr, keyF=id)::\n std.uniq(std.sort(arr, keyF), keyF),\n\n setMember(x, arr, keyF=id)::\n // TODO(dcunnin): Binary chop for O(log n) complexity\n std.length(std.setInter([x], arr, keyF)) > 0,\n\n setUnion(a, b, keyF=id)::\n // NOTE: order matters, values in `a` win\n local aux(a, b, i, j, acc) =\n if i >= std.length(a) then\n acc + b[j:]\n else if j >= std.length(b) then\n acc + a[i:]\n else\n local ak = keyF(a[i]);\n local bk = keyF(b[j]);\n if ak == bk then\n aux(a, b, i + 1, j + 1, acc + [a[i]]) tailstrict\n else if ak < bk then\n aux(a, b, i + 1, j, acc + [a[i]]) tailstrict\n else\n aux(a, b, i, j + 1, acc + [b[j]]) tailstrict;\n aux(a, b, 0, 0, []),\n\n setInter(a, b, keyF=id)::\n local aux(a, b, i, j, acc) =\n if i >= std.length(a) || j >= std.length(b) then\n acc\n else\n if keyF(a[i]) == keyF(b[j]) then\n aux(a, b, i + 1, j + 1, acc + [a[i]]) tailstrict\n else if keyF(a[i]) < keyF(b[j]) then\n aux(a, b, i + 1, j, acc) tailstrict\n else\n aux(a, b, i, j + 1, acc) tailstrict;\n aux(a, b, 0, 0, []) tailstrict,\n\n setDiff(a, b, keyF=id)::\n local aux(a, b, i, j, acc) =\n if i >= std.length(a) then\n acc\n else if j >= std.length(b) then\n acc + a[i:]\n else\n if keyF(a[i]) == keyF(b[j]) then\n aux(a, b, i + 1, j + 1, acc) tailstrict\n else if keyF(a[i]) < keyF(b[j]) then\n aux(a, b, i + 1, j, acc + [a[i]]) tailstrict\n else\n aux(a, b, i, j + 1, acc) tailstrict;\n aux(a, b, 0, 0, []) tailstrict,\n\n mergePatch(target, patch)::\n if std.isObject(patch) then\n local target_object =\n if std.isObject(target) then target else {};\n\n local target_fields =\n if std.isObject(target_object) then std.objectFields(target_object) else [];\n\n local null_fields = [k for k in std.objectFields(patch) if patch[k] == null];\n local both_fields = std.setUnion(target_fields, std.objectFields(patch));\n\n {\n [k]:\n if !std.objectHas(patch, k) then\n target_object[k]\n else if !std.objectHas(target_object, k) then\n std.mergePatch(null, patch[k]) tailstrict\n else\n std.mergePatch(target_object[k], patch[k]) tailstrict\n for k in std.setDiff(both_fields, null_fields)\n }\n else\n patch,\n\n get(o, f, default=null, inc_hidden=true)::\n if std.objectHasEx(o, f, inc_hidden) then o[f] else default,\n\n objectFields(o)::\n std.objectFieldsEx(o, false),\n\n objectFieldsAll(o)::\n std.objectFieldsEx(o, true),\n\n objectHas(o, f)::\n std.objectHasEx(o, f, false),\n\n objectHasAll(o, f)::\n std.objectHasEx(o, f, true),\n\n objectValues(o)::\n [o[k] for k in std.objectFields(o)],\n\n objectValuesAll(o)::\n [o[k] for k in std.objectFieldsAll(o)],\n\n resolvePath(f, r)::\n local arr = std.split(f, '/');\n std.join('/', std.makeArray(std.length(arr) - 1, function(i) arr[i]) + [r]),\n\n prune(a)::\n local isContent(b) =\n if b == null then\n false\n else if std.isArray(b) then\n std.length(b) > 0\n else if std.isObject(b) then\n std.length(b) > 0\n else\n true;\n if std.isArray(a) then\n [std.prune(x) for x in a if isContent($.prune(x))]\n else if std.isObject(a) then {\n [x]: $.prune(a[x])\n for x in std.objectFields(a)\n if isContent(std.prune(a[x]))\n } else\n a,\n\n find(value, arr)::\n if !std.isArray(arr) then\n error 'find second parameter should be an array, got ' + std.type(arr)\n else\n std.filter(function(i) arr[i] == value, std.range(0, std.length(arr) - 1)),\n}\n" --- -SOURCE_FILE@0..18978 - EXPR_OBJECT@0..18978 - OBJ_BODY_MEMBER_LIST@0..18978 +SOURCE_FILE@0..10282 + EXPR_OBJECT@0..10281 + OBJ_BODY_MEMBER_LIST@0..10281 L_BRACE@0..1 "{" WHITESPACE@1..4 "\n " MEMBER_BIND_STMT@4..20 @@ -42,12304 +42,7254 @@ IDENT@39..41 "id" COMMA@41..42 "," WHITESPACE@42..46 "\n\n " - SINGLE_LINE_HASH_COMMENT@46..67 "# Magic legacy field\n" - WHITESPACE@67..69 " " - MEMBER_FIELD@69..98 - FIELD_NORMAL@69..98 - FIELD_NAME_FIXED@69..77 - NAME@69..77 - IDENT@69..77 "thisFile" - COLONCOLON@77..79 "::" - WHITESPACE@79..80 " " - EXPR_INTRINSIC_THIS_FILE@80..98 - INTRINSIC_THIS_FILE@80..98 "$intrinsicThisFile" - COMMA@98..99 "," - WHITESPACE@99..102 "\n " - MEMBER_FIELD@102..119 - FIELD_NORMAL@102..119 - FIELD_NAME_FIXED@102..104 - NAME@102..104 - IDENT@102..104 "id" - COLONCOLON@104..106 "::" - WHITESPACE@106..107 " " - EXPR_INTRINSIC_ID@107..119 - INTRINSIC_ID@107..119 "$intrinsicId" - COMMA@119..120 "," - WHITESPACE@120..124 "\n\n " - SINGLE_LINE_HASH_COMMENT@124..176 "# Those functions are ..." - WHITESPACE@176..178 " " - MEMBER_FIELD@178..205 - FIELD_NORMAL@178..205 - FIELD_NAME_FIXED@178..184 - NAME@178..184 - IDENT@178..184 "length" - COLONCOLON@184..186 "::" - WHITESPACE@186..187 " " - EXPR_INTRINSIC@187..205 - INTRINSIC@187..197 "$intrinsic" - L_PAREN@197..198 "(" - NAME@198..204 - IDENT@198..204 "length" - R_PAREN@204..205 ")" - COMMA@205..206 "," - WHITESPACE@206..209 "\n " - MEMBER_FIELD@209..232 - FIELD_NORMAL@209..232 - FIELD_NAME_FIXED@209..213 - NAME@209..213 - IDENT@209..213 "type" - COLONCOLON@213..215 "::" - WHITESPACE@215..216 " " - EXPR_INTRINSIC@216..232 - INTRINSIC@216..226 "$intrinsic" - L_PAREN@226..227 "(" - NAME@227..231 - IDENT@227..231 "type" - R_PAREN@231..232 ")" - COMMA@232..233 "," - WHITESPACE@233..236 "\n " - MEMBER_FIELD@236..269 - FIELD_NORMAL@236..269 - FIELD_NAME_FIXED@236..245 - NAME@236..245 - IDENT@236..245 "makeArray" - COLONCOLON@245..247 "::" - WHITESPACE@247..248 " " - EXPR_INTRINSIC@248..269 - INTRINSIC@248..258 "$intrinsic" - L_PAREN@258..259 "(" - NAME@259..268 - IDENT@259..268 "makeArray" - R_PAREN@268..269 ")" - COMMA@269..270 "," - WHITESPACE@270..273 "\n " - MEMBER_FIELD@273..306 - FIELD_NORMAL@273..306 - FIELD_NAME_FIXED@273..282 - NAME@273..282 - IDENT@273..282 "codepoint" - COLONCOLON@282..284 "::" - WHITESPACE@284..285 " " - EXPR_INTRINSIC@285..306 - INTRINSIC@285..295 "$intrinsic" - L_PAREN@295..296 "(" - NAME@296..305 - IDENT@296..305 "codepoint" - R_PAREN@305..306 ")" - COMMA@306..307 "," - WHITESPACE@307..310 "\n " - MEMBER_FIELD@310..353 - FIELD_NORMAL@310..353 - FIELD_NAME_FIXED@310..324 - NAME@310..324 - IDENT@310..324 "objectFieldsEx" - COLONCOLON@324..326 "::" - WHITESPACE@326..327 " " - EXPR_INTRINSIC@327..353 - INTRINSIC@327..337 "$intrinsic" - L_PAREN@337..338 "(" - NAME@338..352 - IDENT@338..352 "objectFieldsEx" - R_PAREN@352..353 ")" - COMMA@353..354 "," - WHITESPACE@354..357 "\n " - MEMBER_FIELD@357..394 - FIELD_NORMAL@357..394 - FIELD_NAME_FIXED@357..368 - NAME@357..368 - IDENT@357..368 "objectHasEx" - COLONCOLON@368..370 "::" - WHITESPACE@370..371 " " - EXPR_INTRINSIC@371..394 - INTRINSIC@371..381 "$intrinsic" - L_PAREN@381..382 "(" - NAME@382..393 - IDENT@382..393 "objectHasEx" - R_PAREN@393..394 ")" - COMMA@394..395 "," - WHITESPACE@395..398 "\n " - MEMBER_FIELD@398..443 - FIELD_NORMAL@398..443 - FIELD_NAME_FIXED@398..413 - NAME@398..413 - IDENT@398..413 "primitiveEquals" - COLONCOLON@413..415 "::" - WHITESPACE@415..416 " " - EXPR_INTRINSIC@416..443 - INTRINSIC@416..426 "$intrinsic" - L_PAREN@426..427 "(" - NAME@427..442 - IDENT@427..442 "primitiveEquals" - R_PAREN@442..443 ")" - COMMA@443..444 "," - WHITESPACE@444..447 "\n " - MEMBER_FIELD@447..474 - FIELD_NORMAL@447..474 - FIELD_NAME_FIXED@447..453 - NAME@447..453 - IDENT@447..453 "modulo" - COLONCOLON@453..455 "::" - WHITESPACE@455..456 " " - EXPR_INTRINSIC@456..474 - INTRINSIC@456..466 "$intrinsic" - L_PAREN@466..467 "(" - NAME@467..473 - IDENT@467..473 "modulo" - R_PAREN@473..474 ")" - COMMA@474..475 "," - WHITESPACE@475..478 "\n " - MEMBER_FIELD@478..503 - FIELD_NORMAL@478..503 - FIELD_NAME_FIXED@478..483 - NAME@478..483 - IDENT@478..483 "floor" - COLONCOLON@483..485 "::" - WHITESPACE@485..486 " " - EXPR_INTRINSIC@486..503 - INTRINSIC@486..496 "$intrinsic" - L_PAREN@496..497 "(" - NAME@497..502 - IDENT@497..502 "floor" - R_PAREN@502..503 ")" - COMMA@503..504 "," - WHITESPACE@504..507 "\n " - MEMBER_FIELD@507..530 - FIELD_NORMAL@507..530 - FIELD_NAME_FIXED@507..511 - NAME@507..511 - IDENT@507..511 "ceil" - COLONCOLON@511..513 "::" - WHITESPACE@513..514 " " - EXPR_INTRINSIC@514..530 - INTRINSIC@514..524 "$intrinsic" - L_PAREN@524..525 "(" - NAME@525..529 - IDENT@525..529 "ceil" - R_PAREN@529..530 ")" - COMMA@530..531 "," - WHITESPACE@531..534 "\n " - MEMBER_FIELD@534..561 - FIELD_NORMAL@534..561 - FIELD_NAME_FIXED@534..540 - NAME@534..540 - IDENT@534..540 "extVar" - COLONCOLON@540..542 "::" - WHITESPACE@542..543 " " - EXPR_INTRINSIC@543..561 - INTRINSIC@543..553 "$intrinsic" - L_PAREN@553..554 "(" - NAME@554..560 - IDENT@554..560 "extVar" - R_PAREN@560..561 ")" - COMMA@561..562 "," - WHITESPACE@562..565 "\n " - MEMBER_FIELD@565..592 - FIELD_NORMAL@565..592 - FIELD_NAME_FIXED@565..571 - NAME@565..571 - IDENT@565..571 "native" - COLONCOLON@571..573 "::" - WHITESPACE@573..574 " " - EXPR_INTRINSIC@574..592 - INTRINSIC@574..584 "$intrinsic" - L_PAREN@584..585 "(" - NAME@585..591 - IDENT@585..591 "native" - R_PAREN@591..592 ")" - COMMA@592..593 "," - WHITESPACE@593..596 "\n " - MEMBER_FIELD@596..623 - FIELD_NORMAL@596..623 - FIELD_NAME_FIXED@596..602 - NAME@596..602 - IDENT@596..602 "filter" - COLONCOLON@602..604 "::" - WHITESPACE@604..605 " " - EXPR_INTRINSIC@605..623 - INTRINSIC@605..615 "$intrinsic" - L_PAREN@615..616 "(" - NAME@616..622 - IDENT@616..622 "filter" - R_PAREN@622..623 ")" - COMMA@623..624 "," - WHITESPACE@624..627 "\n " - MEMBER_FIELD@627..650 - FIELD_NORMAL@627..650 - FIELD_NAME_FIXED@627..631 - NAME@627..631 - IDENT@627..631 "char" - COLONCOLON@631..633 "::" - WHITESPACE@633..634 " " - EXPR_INTRINSIC@634..650 - INTRINSIC@634..644 "$intrinsic" - L_PAREN@644..645 "(" - NAME@645..649 - IDENT@645..649 "char" - R_PAREN@649..650 ")" - COMMA@650..651 "," - WHITESPACE@651..654 "\n " - MEMBER_FIELD@654..689 - FIELD_NORMAL@654..689 - FIELD_NAME_FIXED@654..664 - NAME@654..664 - IDENT@654..664 "encodeUTF8" - COLONCOLON@664..666 "::" - WHITESPACE@666..667 " " - EXPR_INTRINSIC@667..689 - INTRINSIC@667..677 "$intrinsic" - L_PAREN@677..678 "(" - NAME@678..688 - IDENT@678..688 "encodeUTF8" - R_PAREN@688..689 ")" - COMMA@689..690 "," - WHITESPACE@690..693 "\n " - MEMBER_FIELD@693..728 - FIELD_NORMAL@693..728 - FIELD_NAME_FIXED@693..703 - NAME@693..703 - IDENT@693..703 "decodeUTF8" - COLONCOLON@703..705 "::" - WHITESPACE@705..706 " " - EXPR_INTRINSIC@706..728 - INTRINSIC@706..716 "$intrinsic" - L_PAREN@716..717 "(" - NAME@717..727 - IDENT@717..727 "decodeUTF8" - R_PAREN@727..728 ")" - COMMA@728..729 "," - WHITESPACE@729..732 "\n " - MEMBER_FIELD@732..753 - FIELD_NORMAL@732..753 - FIELD_NAME_FIXED@732..735 - NAME@732..735 - IDENT@732..735 "md5" - COLONCOLON@735..737 "::" - WHITESPACE@737..738 " " - EXPR_INTRINSIC@738..753 - INTRINSIC@738..748 "$intrinsic" - L_PAREN@748..749 "(" - NAME@749..752 - IDENT@749..752 "md5" - R_PAREN@752..753 ")" - COMMA@753..754 "," - WHITESPACE@754..757 "\n " - MEMBER_FIELD@757..782 - FIELD_NORMAL@757..782 - FIELD_NAME_FIXED@757..762 - NAME@757..762 - IDENT@757..762 "trace" - COLONCOLON@762..764 "::" - WHITESPACE@764..765 " " - EXPR_INTRINSIC@765..782 - INTRINSIC@765..775 "$intrinsic" - L_PAREN@775..776 "(" - NAME@776..781 - IDENT@776..781 "trace" - R_PAREN@781..782 ")" - COMMA@782..783 "," - WHITESPACE@783..786 "\n " - MEMBER_FIELD@786..819 - FIELD_NORMAL@786..819 - FIELD_NAME_FIXED@786..795 - NAME@786..795 - IDENT@786..795 "parseJson" - COLONCOLON@795..797 "::" - WHITESPACE@797..798 " " - EXPR_INTRINSIC@798..819 - INTRINSIC@798..808 "$intrinsic" - L_PAREN@808..809 "(" - NAME@809..818 - IDENT@809..818 "parseJson" - R_PAREN@818..819 ")" - COMMA@819..820 "," - WHITESPACE@820..823 "\n " - MEMBER_FIELD@823..856 - FIELD_NORMAL@823..856 - FIELD_NAME_FIXED@823..832 - NAME@823..832 - IDENT@823..832 "parseYaml" - COLONCOLON@832..834 "::" - WHITESPACE@834..835 " " - EXPR_INTRINSIC@835..856 - INTRINSIC@835..845 "$intrinsic" - L_PAREN@845..846 "(" - NAME@846..855 - IDENT@846..855 "parseYaml" - R_PAREN@855..856 ")" - COMMA@856..857 "," - WHITESPACE@857..861 "\n\n " - MEMBER_FIELD@861..882 - FIELD_NORMAL@861..882 - FIELD_NAME_FIXED@861..864 - NAME@861..864 - IDENT@861..864 "log" - COLONCOLON@864..866 "::" - WHITESPACE@866..867 " " - EXPR_INTRINSIC@867..882 - INTRINSIC@867..877 "$intrinsic" - L_PAREN@877..878 "(" - NAME@878..881 - IDENT@878..881 "log" - R_PAREN@881..882 ")" - COMMA@882..883 "," - WHITESPACE@883..886 "\n " - MEMBER_FIELD@886..907 - FIELD_NORMAL@886..907 - FIELD_NAME_FIXED@886..889 - NAME@886..889 - IDENT@886..889 "pow" - COLONCOLON@889..891 "::" - WHITESPACE@891..892 " " - EXPR_INTRINSIC@892..907 - INTRINSIC@892..902 "$intrinsic" - L_PAREN@902..903 "(" - NAME@903..906 - IDENT@903..906 "pow" - R_PAREN@906..907 ")" - COMMA@907..908 "," - WHITESPACE@908..911 "\n " - MEMBER_FIELD@911..934 - FIELD_NORMAL@911..934 - FIELD_NAME_FIXED@911..915 - NAME@911..915 - IDENT@911..915 "sqrt" - COLONCOLON@915..917 "::" - WHITESPACE@917..918 " " - EXPR_INTRINSIC@918..934 - INTRINSIC@918..928 "$intrinsic" - L_PAREN@928..929 "(" - NAME@929..933 - IDENT@929..933 "sqrt" - R_PAREN@933..934 ")" - COMMA@934..935 "," - WHITESPACE@935..939 "\n\n " - MEMBER_FIELD@939..960 - FIELD_NORMAL@939..960 - FIELD_NAME_FIXED@939..942 - NAME@939..942 - IDENT@939..942 "sin" - COLONCOLON@942..944 "::" - WHITESPACE@944..945 " " - EXPR_INTRINSIC@945..960 - INTRINSIC@945..955 "$intrinsic" - L_PAREN@955..956 "(" - NAME@956..959 - IDENT@956..959 "sin" - R_PAREN@959..960 ")" - COMMA@960..961 "," - WHITESPACE@961..964 "\n " - MEMBER_FIELD@964..985 - FIELD_NORMAL@964..985 - FIELD_NAME_FIXED@964..967 - NAME@964..967 - IDENT@964..967 "cos" - COLONCOLON@967..969 "::" - WHITESPACE@969..970 " " - EXPR_INTRINSIC@970..985 - INTRINSIC@970..980 "$intrinsic" - L_PAREN@980..981 "(" - NAME@981..984 - IDENT@981..984 "cos" - R_PAREN@984..985 ")" - COMMA@985..986 "," - WHITESPACE@986..989 "\n " - MEMBER_FIELD@989..1010 - FIELD_NORMAL@989..1010 - FIELD_NAME_FIXED@989..992 - NAME@989..992 - IDENT@989..992 "tan" - COLONCOLON@992..994 "::" - WHITESPACE@994..995 " " - EXPR_INTRINSIC@995..1010 - INTRINSIC@995..1005 "$intrinsic" - L_PAREN@1005..1006 "(" - NAME@1006..1009 - IDENT@1006..1009 "tan" - R_PAREN@1009..1010 ")" - COMMA@1010..1011 "," - WHITESPACE@1011..1014 "\n " - MEMBER_FIELD@1014..1037 - FIELD_NORMAL@1014..1037 - FIELD_NAME_FIXED@1014..1018 - NAME@1014..1018 - IDENT@1014..1018 "asin" - COLONCOLON@1018..1020 "::" - WHITESPACE@1020..1021 " " - EXPR_INTRINSIC@1021..1037 - INTRINSIC@1021..1031 "$intrinsic" - L_PAREN@1031..1032 "(" - NAME@1032..1036 - IDENT@1032..1036 "asin" - R_PAREN@1036..1037 ")" - COMMA@1037..1038 "," - WHITESPACE@1038..1041 "\n " - MEMBER_FIELD@1041..1064 - FIELD_NORMAL@1041..1064 - FIELD_NAME_FIXED@1041..1045 - NAME@1041..1045 - IDENT@1041..1045 "acos" - COLONCOLON@1045..1047 "::" - WHITESPACE@1047..1048 " " - EXPR_INTRINSIC@1048..1064 - INTRINSIC@1048..1058 "$intrinsic" - L_PAREN@1058..1059 "(" - NAME@1059..1063 - IDENT@1059..1063 "acos" - R_PAREN@1063..1064 ")" - COMMA@1064..1065 "," - WHITESPACE@1065..1068 "\n " - MEMBER_FIELD@1068..1091 - FIELD_NORMAL@1068..1091 - FIELD_NAME_FIXED@1068..1072 - NAME@1068..1072 - IDENT@1068..1072 "atan" - COLONCOLON@1072..1074 "::" - WHITESPACE@1074..1075 " " - EXPR_INTRINSIC@1075..1091 - INTRINSIC@1075..1085 "$intrinsic" - L_PAREN@1085..1086 "(" - NAME@1086..1090 - IDENT@1086..1090 "atan" - R_PAREN@1090..1091 ")" - COMMA@1091..1092 "," - WHITESPACE@1092..1096 "\n\n " - MEMBER_FIELD@1096..1117 - FIELD_NORMAL@1096..1117 - FIELD_NAME_FIXED@1096..1099 - NAME@1096..1099 - IDENT@1096..1099 "exp" + MEMBER_FIELD@46..224 + FIELD_NORMAL@46..224 + FIELD_NAME_FIXED@46..54 + NAME@46..54 + IDENT@46..54 "thisFile" + COLONCOLON@54..56 "::" + WHITESPACE@56..57 " " + EXPR_ERROR@57..224 + ERROR_KW@57..62 "error" + WHITESPACE@62..63 " " + EXPR_STRING@63..224 + STRING_SINGLE@63..224 "'std.thisFile is depr ..." + COMMA@224..225 "," + WHITESPACE@225..229 "\n\n " + MEMBER_FIELD@229..249 + FIELD_METHOD@229..249 + FIELD_NAME_FIXED@229..237 + NAME@229..237 + IDENT@229..237 "toString" + PARAMS_DESC@237..240 + L_PAREN@237..238 "(" + PARAM@238..239 + DESTRUCT_FULL@238..239 + NAME@238..239 + IDENT@238..239 "a" + R_PAREN@239..240 ")" + COLONCOLON@240..242 "::" + WHITESPACE@242..243 " " + EXPR_BINARY@243..249 + LHS_EXPR@243..245 + EXPR_STRING@243..245 + STRING_SINGLE@243..245 "''" + WHITESPACE@245..246 " " + PLUS@246..247 "+" + WHITESPACE@247..248 " " + EXPR_VAR@248..249 + NAME@248..249 + IDENT@248..249 "a" + COMMA@249..250 "," + WHITESPACE@250..254 "\n\n " + MEMBER_FIELD@254..397 + FIELD_METHOD@254..397 + FIELD_NAME_FIXED@254..265 + NAME@254..265 + IDENT@254..265 "lstripChars" + PARAMS_DESC@265..277 + L_PAREN@265..266 "(" + PARAM@266..269 + DESTRUCT_FULL@266..269 + NAME@266..269 + IDENT@266..269 "str" + COMMA@269..270 "," + WHITESPACE@270..271 " " + PARAM@271..276 + DESTRUCT_FULL@271..276 + NAME@271..276 + IDENT@271..276 "chars" + R_PAREN@276..277 ")" + COLONCOLON@277..279 "::" + WHITESPACE@279..284 "\n " + EXPR_IF_THEN_ELSE@284..397 + IF_KW@284..286 "if" + WHITESPACE@286..287 " " + EXPR_BINARY@287..335 + LHS_EXPR@287..306 + EXPR_BINARY@287..306 + LHS_EXPR@287..302 + EXPR_APPLY@287..302 + EXPR_INDEX@287..297 + EXPR_VAR@287..290 + NAME@287..290 + IDENT@287..290 "std" + DOT@290..291 "." + NAME@291..297 + IDENT@291..297 "length" + ARGS_DESC@297..302 + L_PAREN@297..298 "(" + ARG@298..301 + EXPR_VAR@298..301 + NAME@298..301 + IDENT@298..301 "str" + R_PAREN@301..302 ")" + WHITESPACE@302..303 " " + GT@303..304 ">" + WHITESPACE@304..305 " " + EXPR_NUMBER@305..306 + FLOAT@305..306 "0" + WHITESPACE@306..307 " " + AND@307..309 "&&" + WHITESPACE@309..310 " " + EXPR_APPLY@310..335 + EXPR_INDEX@310..320 + EXPR_VAR@310..313 + NAME@310..313 + IDENT@310..313 "std" + DOT@313..314 "." + NAME@314..320 + IDENT@314..320 "member" + ARGS_DESC@320..335 + L_PAREN@320..321 "(" + ARG@321..326 + EXPR_VAR@321..326 + NAME@321..326 + IDENT@321..326 "chars" + COMMA@326..327 "," + WHITESPACE@327..328 " " + ARG@328..334 + EXPR_INDEX_EXPR@328..334 + LHS_EXPR@328..331 + EXPR_VAR@328..331 + NAME@328..331 + IDENT@328..331 "str" + L_BRACK@331..332 "[" + EXPR_NUMBER@332..333 + FLOAT@332..333 "0" + R_BRACK@333..334 "]" + R_PAREN@334..335 ")" + WHITESPACE@335..336 " " + THEN_KW@336..340 "then" + WHITESPACE@340..347 "\n " + TRUE_EXPR@347..378 + EXPR_APPLY@347..378 + EXPR_INDEX@347..362 + EXPR_VAR@347..350 + NAME@347..350 + IDENT@347..350 "std" + DOT@350..351 "." + NAME@351..362 + IDENT@351..362 "lstripChars" + ARGS_DESC@362..378 + L_PAREN@362..363 "(" + ARG@363..370 + EXPR_SLICE@363..370 + EXPR_VAR@363..366 + NAME@363..366 + IDENT@363..366 "str" + SLICE_DESC@366..370 + L_BRACK@366..367 "[" + EXPR_NUMBER@367..368 + FLOAT@367..368 "1" + COLON@368..369 ":" + R_BRACK@369..370 "]" + COMMA@370..371 "," + WHITESPACE@371..372 " " + ARG@372..377 + EXPR_VAR@372..377 + NAME@372..377 + IDENT@372..377 "chars" + R_PAREN@377..378 ")" + WHITESPACE@378..383 "\n " + ELSE_KW@383..387 "else" + WHITESPACE@387..394 "\n " + FALSE_EXPR@394..397 + EXPR_VAR@394..397 + NAME@394..397 + IDENT@394..397 "str" + COMMA@397..398 "," + WHITESPACE@398..402 "\n\n " + MEMBER_FIELD@402..578 + FIELD_METHOD@402..578 + FIELD_NAME_FIXED@402..413 + NAME@402..413 + IDENT@402..413 "rstripChars" + PARAMS_DESC@413..425 + L_PAREN@413..414 "(" + PARAM@414..417 + DESTRUCT_FULL@414..417 + NAME@414..417 + IDENT@414..417 "str" + COMMA@417..418 "," + WHITESPACE@418..419 " " + PARAM@419..424 + DESTRUCT_FULL@419..424 + NAME@419..424 + IDENT@419..424 "chars" + R_PAREN@424..425 ")" + COLONCOLON@425..427 "::" + WHITESPACE@427..432 "\n " + EXPR_LOCAL@432..578 + LOCAL_KW@432..437 "local" + WHITESPACE@437..438 " " + BIND_DESTRUCT@438..459 + DESTRUCT_FULL@438..441 + NAME@438..441 + IDENT@438..441 "len" + WHITESPACE@441..442 " " + ASSIGN@442..443 "=" + WHITESPACE@443..444 " " + EXPR_APPLY@444..459 + EXPR_INDEX@444..454 + EXPR_VAR@444..447 + NAME@444..447 + IDENT@444..447 "std" + DOT@447..448 "." + NAME@448..454 + IDENT@448..454 "length" + ARGS_DESC@454..459 + L_PAREN@454..455 "(" + ARG@455..458 + EXPR_VAR@455..458 + NAME@455..458 + IDENT@455..458 "str" + R_PAREN@458..459 ")" + SEMI@459..460 ";" + WHITESPACE@460..465 "\n " + EXPR_IF_THEN_ELSE@465..578 + IF_KW@465..467 "if" + WHITESPACE@467..468 " " + EXPR_BINARY@468..510 + LHS_EXPR@468..475 + EXPR_BINARY@468..475 + LHS_EXPR@468..471 + EXPR_VAR@468..471 + NAME@468..471 + IDENT@468..471 "len" + WHITESPACE@471..472 " " + GT@472..473 ">" + WHITESPACE@473..474 " " + EXPR_NUMBER@474..475 + FLOAT@474..475 "0" + WHITESPACE@475..476 " " + AND@476..478 "&&" + WHITESPACE@478..479 " " + EXPR_APPLY@479..510 + EXPR_INDEX@479..489 + EXPR_VAR@479..482 + NAME@479..482 + IDENT@479..482 "std" + DOT@482..483 "." + NAME@483..489 + IDENT@483..489 "member" + ARGS_DESC@489..510 + L_PAREN@489..490 "(" + ARG@490..495 + EXPR_VAR@490..495 + NAME@490..495 + IDENT@490..495 "chars" + COMMA@495..496 "," + WHITESPACE@496..497 " " + ARG@497..509 + EXPR_INDEX_EXPR@497..509 + LHS_EXPR@497..500 + EXPR_VAR@497..500 + NAME@497..500 + IDENT@497..500 "str" + L_BRACK@500..501 "[" + EXPR_BINARY@501..508 + LHS_EXPR@501..504 + EXPR_VAR@501..504 + NAME@501..504 + IDENT@501..504 "len" + WHITESPACE@504..505 " " + MINUS@505..506 "-" + WHITESPACE@506..507 " " + EXPR_NUMBER@507..508 + FLOAT@507..508 "1" + R_BRACK@508..509 "]" + R_PAREN@509..510 ")" + WHITESPACE@510..511 " " + THEN_KW@511..515 "then" + WHITESPACE@515..522 "\n " + TRUE_EXPR@522..559 + EXPR_APPLY@522..559 + EXPR_INDEX@522..537 + EXPR_VAR@522..525 + NAME@522..525 + IDENT@522..525 "std" + DOT@525..526 "." + NAME@526..537 + IDENT@526..537 "rstripChars" + ARGS_DESC@537..559 + L_PAREN@537..538 "(" + ARG@538..551 + EXPR_SLICE@538..551 + EXPR_VAR@538..541 + NAME@538..541 + IDENT@538..541 "str" + SLICE_DESC@541..551 + L_BRACK@541..542 "[" + COLON@542..543 ":" + SLICE_DESC_END@543..550 + EXPR_BINARY@543..550 + LHS_EXPR@543..546 + EXPR_VAR@543..546 + NAME@543..546 + IDENT@543..546 "len" + WHITESPACE@546..547 " " + MINUS@547..548 "-" + WHITESPACE@548..549 " " + EXPR_NUMBER@549..550 + FLOAT@549..550 "1" + R_BRACK@550..551 "]" + COMMA@551..552 "," + WHITESPACE@552..553 " " + ARG@553..558 + EXPR_VAR@553..558 + NAME@553..558 + IDENT@553..558 "chars" + R_PAREN@558..559 ")" + WHITESPACE@559..564 "\n " + ELSE_KW@564..568 "else" + WHITESPACE@568..575 "\n " + FALSE_EXPR@575..578 + EXPR_VAR@575..578 + NAME@575..578 + IDENT@575..578 "str" + COMMA@578..579 "," + WHITESPACE@579..583 "\n\n " + MEMBER_FIELD@583..663 + FIELD_METHOD@583..663 + FIELD_NAME_FIXED@583..593 + NAME@583..593 + IDENT@583..593 "stripChars" + PARAMS_DESC@593..605 + L_PAREN@593..594 "(" + PARAM@594..597 + DESTRUCT_FULL@594..597 + NAME@594..597 + IDENT@594..597 "str" + COMMA@597..598 "," + WHITESPACE@598..599 " " + PARAM@599..604 + DESTRUCT_FULL@599..604 + NAME@599..604 + IDENT@599..604 "chars" + R_PAREN@604..605 ")" + COLONCOLON@605..607 "::" + WHITESPACE@607..612 "\n " + EXPR_APPLY@612..663 + EXPR_INDEX@612..627 + EXPR_VAR@612..615 + NAME@612..615 + IDENT@612..615 "std" + DOT@615..616 "." + NAME@616..627 + IDENT@616..627 "lstripChars" + ARGS_DESC@627..663 + L_PAREN@627..628 "(" + ARG@628..655 + EXPR_APPLY@628..655 + EXPR_INDEX@628..643 + EXPR_VAR@628..631 + NAME@628..631 + IDENT@628..631 "std" + DOT@631..632 "." + NAME@632..643 + IDENT@632..643 "rstripChars" + ARGS_DESC@643..655 + L_PAREN@643..644 "(" + ARG@644..647 + EXPR_VAR@644..647 + NAME@644..647 + IDENT@644..647 "str" + COMMA@647..648 "," + WHITESPACE@648..649 " " + ARG@649..654 + EXPR_VAR@649..654 + NAME@649..654 + IDENT@649..654 "chars" + R_PAREN@654..655 ")" + COMMA@655..656 "," + WHITESPACE@656..657 " " + ARG@657..662 + EXPR_VAR@657..662 + NAME@657..662 + IDENT@657..662 "chars" + R_PAREN@662..663 ")" + COMMA@663..664 "," + WHITESPACE@664..668 "\n\n " + MEMBER_FIELD@668..741 + FIELD_METHOD@668..741 + FIELD_NAME_FIXED@668..679 + NAME@668..679 + IDENT@668..679 "stringChars" + PARAMS_DESC@679..684 + L_PAREN@679..680 "(" + PARAM@680..683 + DESTRUCT_FULL@680..683 + NAME@680..683 + IDENT@680..683 "str" + R_PAREN@683..684 ")" + COLONCOLON@684..686 "::" + WHITESPACE@686..691 "\n " + EXPR_APPLY@691..741 + EXPR_INDEX@691..704 + EXPR_VAR@691..694 + NAME@691..694 + IDENT@691..694 "std" + DOT@694..695 "." + NAME@695..704 + IDENT@695..704 "makeArray" + ARGS_DESC@704..741 + L_PAREN@704..705 "(" + ARG@705..720 + EXPR_APPLY@705..720 + EXPR_INDEX@705..715 + EXPR_VAR@705..708 + NAME@705..708 + IDENT@705..708 "std" + DOT@708..709 "." + NAME@709..715 + IDENT@709..715 "length" + ARGS_DESC@715..720 + L_PAREN@715..716 "(" + ARG@716..719 + EXPR_VAR@716..719 + NAME@716..719 + IDENT@716..719 "str" + R_PAREN@719..720 ")" + COMMA@720..721 "," + WHITESPACE@721..722 " " + ARG@722..740 + EXPR_FUNCTION@722..740 + FUNCTION_KW@722..730 "function" + PARAMS_DESC@730..733 + L_PAREN@730..731 "(" + PARAM@731..732 + DESTRUCT_FULL@731..732 + NAME@731..732 + IDENT@731..732 "i" + R_PAREN@732..733 ")" + WHITESPACE@733..734 " " + EXPR_INDEX_EXPR@734..740 + LHS_EXPR@734..737 + EXPR_VAR@734..737 + NAME@734..737 + IDENT@734..737 "str" + L_BRACK@737..738 "[" + EXPR_VAR@738..739 + NAME@738..739 + IDENT@738..739 "i" + R_BRACK@739..740 "]" + R_PAREN@740..741 ")" + COMMA@741..742 "," + WHITESPACE@742..746 "\n\n " + MEMBER_FIELD@746..1024 + FIELD_METHOD@746..1024 + FIELD_NAME_FIXED@746..757 + NAME@746..757 + IDENT@746..757 "splitLimitR" + PARAMS_DESC@757..776 + L_PAREN@757..758 "(" + PARAM@758..761 + DESTRUCT_FULL@758..761 + NAME@758..761 + IDENT@758..761 "str" + COMMA@761..762 "," + WHITESPACE@762..763 " " + PARAM@763..764 + DESTRUCT_FULL@763..764 + NAME@763..764 + IDENT@763..764 "c" + COMMA@764..765 "," + WHITESPACE@765..766 " " + PARAM@766..775 + DESTRUCT_FULL@766..775 + NAME@766..775 + IDENT@766..775 "maxsplits" + R_PAREN@775..776 ")" + COLONCOLON@776..778 "::" + WHITESPACE@778..783 "\n " + EXPR_IF_THEN_ELSE@783..1024 + IF_KW@783..785 "if" + WHITESPACE@785..786 " " + EXPR_BINARY@786..801 + LHS_EXPR@786..795 + EXPR_VAR@786..795 + NAME@786..795 + IDENT@786..795 "maxsplits" + WHITESPACE@795..796 " " + EQ@796..798 "==" + WHITESPACE@798..799 " " + EXPR_UNARY@799..801 + MINUS@799..800 "-" + EXPR_NUMBER@800..801 + FLOAT@800..801 "1" + WHITESPACE@801..802 " " + THEN_KW@802..806 "then" + WHITESPACE@806..813 "\n " + TRUE_EXPR@813..839 + EXPR_APPLY@813..839 + EXPR_INDEX@813..827 + EXPR_VAR@813..816 + NAME@813..816 + IDENT@813..816 "std" + DOT@816..817 "." + NAME@817..827 + IDENT@817..827 "splitLimit" + ARGS_DESC@827..839 + L_PAREN@827..828 "(" + ARG@828..831 + EXPR_VAR@828..831 + NAME@828..831 + IDENT@828..831 "str" + COMMA@831..832 "," + WHITESPACE@832..833 " " + ARG@833..834 + EXPR_VAR@833..834 + NAME@833..834 + IDENT@833..834 "c" + COMMA@834..835 "," + WHITESPACE@835..836 " " + ARG@836..838 + EXPR_UNARY@836..838 + MINUS@836..837 "-" + EXPR_NUMBER@837..838 + FLOAT@837..838 "1" + R_PAREN@838..839 ")" + WHITESPACE@839..844 "\n " + ELSE_KW@844..848 "else" + WHITESPACE@848..855 "\n " + FALSE_EXPR@855..1024 + EXPR_LOCAL@855..1024 + LOCAL_KW@855..860 "local" + WHITESPACE@860..861 " " + BIND_FUNCTION@861..922 + NAME@861..867 + IDENT@861..867 "revStr" + PARAMS_DESC@867..872 + L_PAREN@867..868 "(" + PARAM@868..871 + DESTRUCT_FULL@868..871 + NAME@868..871 + IDENT@868..871 "str" + R_PAREN@871..872 ")" + WHITESPACE@872..873 " " + ASSIGN@873..874 "=" + WHITESPACE@874..875 " " + EXPR_APPLY@875..922 + EXPR_INDEX@875..883 + EXPR_VAR@875..878 + NAME@875..878 + IDENT@875..878 "std" + DOT@878..879 "." + NAME@879..883 + IDENT@879..883 "join" + ARGS_DESC@883..922 + L_PAREN@883..884 "(" + ARG@884..886 + EXPR_STRING@884..886 + STRING_SINGLE@884..886 "''" + COMMA@886..887 "," + WHITESPACE@887..888 " " + ARG@888..921 + EXPR_APPLY@888..921 + EXPR_INDEX@888..899 + EXPR_VAR@888..891 + NAME@888..891 + IDENT@888..891 "std" + DOT@891..892 "." + NAME@892..899 + IDENT@892..899 "reverse" + ARGS_DESC@899..921 + L_PAREN@899..900 "(" + ARG@900..920 + EXPR_APPLY@900..920 + EXPR_INDEX@900..915 + EXPR_VAR@900..903 + NAME@900..903 + IDENT@900..903 "std" + DOT@903..904 "." + NAME@904..915 + IDENT@904..915 "stringChars" + ARGS_DESC@915..920 + L_PAREN@915..916 "(" + ARG@916..919 + EXPR_VAR@916..919 + NAME@916..919 + IDENT@916..919 "str" + R_PAREN@919..920 ")" + R_PAREN@920..921 ")" + R_PAREN@921..922 ")" + SEMI@922..923 ";" + WHITESPACE@923..930 "\n " + EXPR_APPLY@930..1024 + EXPR_INDEX@930..937 + EXPR_VAR@930..933 + NAME@930..933 + IDENT@930..933 "std" + DOT@933..934 "." + NAME@934..937 + IDENT@934..937 "map" + ARGS_DESC@937..1024 + L_PAREN@937..938 "(" + ARG@938..959 + EXPR_FUNCTION@938..959 + FUNCTION_KW@938..946 "function" + PARAMS_DESC@946..949 + L_PAREN@946..947 "(" + PARAM@947..948 + DESTRUCT_FULL@947..948 + NAME@947..948 + IDENT@947..948 "e" + R_PAREN@948..949 ")" + WHITESPACE@949..950 " " + EXPR_APPLY@950..959 + EXPR_VAR@950..956 + NAME@950..956 + IDENT@950..956 "revStr" + ARGS_DESC@956..959 + L_PAREN@956..957 "(" + ARG@957..958 + EXPR_VAR@957..958 + NAME@957..958 + IDENT@957..958 "e" + R_PAREN@958..959 ")" + COMMA@959..960 "," + WHITESPACE@960..961 " " + ARG@961..1023 + EXPR_APPLY@961..1023 + EXPR_INDEX@961..972 + EXPR_VAR@961..964 + NAME@961..964 + IDENT@961..964 "std" + DOT@964..965 "." + NAME@965..972 + IDENT@965..972 "reverse" + ARGS_DESC@972..1023 + L_PAREN@972..973 "(" + ARG@973..1022 + EXPR_APPLY@973..1022 + EXPR_INDEX@973..987 + EXPR_VAR@973..976 + NAME@973..976 + IDENT@973..976 "std" + DOT@976..977 "." + NAME@977..987 + IDENT@977..987 "splitLimit" + ARGS_DESC@987..1022 + L_PAREN@987..988 "(" + ARG@988..999 + EXPR_APPLY@988..999 + EXPR_VAR@988..994 + NAME@988..994 + IDENT@988..994 "revStr" + ARGS_DESC@994..999 + L_PAREN@994..995 "(" + ARG@995..998 + EXPR_VAR@995..998 + NAME@995..998 + IDENT@995..998 "str" + R_PAREN@998..999 ")" + COMMA@999..1000 "," + WHITESPACE@1000..1001 " " + ARG@1001..1010 + EXPR_APPLY@1001..1010 + EXPR_VAR@1001..1007 + NAME@1001..1007 + IDENT@1001..1007 "revStr" + ARGS_DESC@1007..1010 + L_PAREN@1007..1008 "(" + ARG@1008..1009 + EXPR_VAR@1008..1009 + NAME@1008..1009 + IDENT@1008..1009 "c" + R_PAREN@1009..1010 ")" + COMMA@1010..1011 "," + WHITESPACE@1011..1012 " " + ARG@1012..1021 + EXPR_VAR@1012..1021 + NAME@1012..1021 + IDENT@1012..1021 "maxsplits" + R_PAREN@1021..1022 ")" + R_PAREN@1022..1023 ")" + R_PAREN@1023..1024 ")" + COMMA@1024..1025 "," + WHITESPACE@1025..1029 "\n\n " + MEMBER_FIELD@1029..1071 + FIELD_METHOD@1029..1071 + FIELD_NAME_FIXED@1029..1034 + NAME@1029..1034 + IDENT@1029..1034 "split" + PARAMS_DESC@1034..1042 + L_PAREN@1034..1035 "(" + PARAM@1035..1038 + DESTRUCT_FULL@1035..1038 + NAME@1035..1038 + IDENT@1035..1038 "str" + COMMA@1038..1039 "," + WHITESPACE@1039..1040 " " + PARAM@1040..1041 + DESTRUCT_FULL@1040..1041 + NAME@1040..1041 + IDENT@1040..1041 "c" + R_PAREN@1041..1042 ")" + COLONCOLON@1042..1044 "::" + WHITESPACE@1044..1045 " " + EXPR_APPLY@1045..1071 + EXPR_INDEX@1045..1059 + EXPR_VAR@1045..1048 + NAME@1045..1048 + IDENT@1045..1048 "std" + DOT@1048..1049 "." + NAME@1049..1059 + IDENT@1049..1059 "splitLimit" + ARGS_DESC@1059..1071 + L_PAREN@1059..1060 "(" + ARG@1060..1063 + EXPR_VAR@1060..1063 + NAME@1060..1063 + IDENT@1060..1063 "str" + COMMA@1063..1064 "," + WHITESPACE@1064..1065 " " + ARG@1065..1066 + EXPR_VAR@1065..1066 + NAME@1065..1066 + IDENT@1065..1066 "c" + COMMA@1066..1067 "," + WHITESPACE@1067..1068 " " + ARG@1068..1070 + EXPR_UNARY@1068..1070 + MINUS@1068..1069 "-" + EXPR_NUMBER@1069..1070 + FLOAT@1069..1070 "1" + R_PAREN@1070..1071 ")" + COMMA@1071..1072 "," + WHITESPACE@1072..1076 "\n\n " + MEMBER_FIELD@1076..1434 + FIELD_METHOD@1076..1434 + FIELD_NAME_FIXED@1076..1088 + NAME@1076..1088 + IDENT@1076..1088 "mapWithIndex" + PARAMS_DESC@1088..1099 + L_PAREN@1088..1089 "(" + PARAM@1089..1093 + DESTRUCT_FULL@1089..1093 + NAME@1089..1093 + IDENT@1089..1093 "func" + COMMA@1093..1094 "," + WHITESPACE@1094..1095 " " + PARAM@1095..1098 + DESTRUCT_FULL@1095..1098 + NAME@1095..1098 + IDENT@1095..1098 "arr" + R_PAREN@1098..1099 ")" COLONCOLON@1099..1101 "::" - WHITESPACE@1101..1102 " " - EXPR_INTRINSIC@1102..1117 - INTRINSIC@1102..1112 "$intrinsic" - L_PAREN@1112..1113 "(" - NAME@1113..1116 - IDENT@1113..1116 "exp" - R_PAREN@1116..1117 ")" - COMMA@1117..1118 "," - WHITESPACE@1118..1121 "\n " - MEMBER_FIELD@1121..1152 - FIELD_NORMAL@1121..1152 - FIELD_NAME_FIXED@1121..1129 - NAME@1121..1129 - IDENT@1121..1129 "mantissa" - COLONCOLON@1129..1131 "::" - WHITESPACE@1131..1132 " " - EXPR_INTRINSIC@1132..1152 - INTRINSIC@1132..1142 "$intrinsic" - L_PAREN@1142..1143 "(" - NAME@1143..1151 - IDENT@1143..1151 "mantissa" - R_PAREN@1151..1152 ")" - COMMA@1152..1153 "," - WHITESPACE@1153..1156 "\n " - MEMBER_FIELD@1156..1187 - FIELD_NORMAL@1156..1187 - FIELD_NAME_FIXED@1156..1164 - NAME@1156..1164 - IDENT@1156..1164 "exponent" - COLONCOLON@1164..1166 "::" - WHITESPACE@1166..1167 " " - EXPR_INTRINSIC@1167..1187 - INTRINSIC@1167..1177 "$intrinsic" - L_PAREN@1177..1178 "(" - NAME@1178..1186 - IDENT@1178..1186 "exponent" - R_PAREN@1186..1187 ")" - COMMA@1187..1188 "," - WHITESPACE@1188..1192 "\n\n " - MEMBER_FIELD@1192..1213 - FIELD_NORMAL@1192..1213 - FIELD_NAME_FIXED@1192..1195 - NAME@1192..1195 - IDENT@1192..1195 "any" - COLONCOLON@1195..1197 "::" - WHITESPACE@1197..1198 " " - EXPR_INTRINSIC@1198..1213 - INTRINSIC@1198..1208 "$intrinsic" - L_PAREN@1208..1209 "(" - NAME@1209..1212 - IDENT@1209..1212 "any" - R_PAREN@1212..1213 ")" - COMMA@1213..1214 "," - WHITESPACE@1214..1217 "\n " - MEMBER_FIELD@1217..1238 - FIELD_NORMAL@1217..1238 - FIELD_NAME_FIXED@1217..1220 - NAME@1217..1220 - IDENT@1217..1220 "all" - COLONCOLON@1220..1222 "::" - WHITESPACE@1222..1223 " " - EXPR_INTRINSIC@1223..1238 - INTRINSIC@1223..1233 "$intrinsic" - L_PAREN@1233..1234 "(" - NAME@1234..1237 - IDENT@1234..1237 "all" - R_PAREN@1237..1238 ")" - COMMA@1238..1239 "," - WHITESPACE@1239..1243 "\n\n " - MEMBER_FIELD@1243..1280 - FIELD_METHOD@1243..1280 - FIELD_NAME_FIXED@1243..1251 - NAME@1243..1251 - IDENT@1243..1251 "isString" - PARAMS_DESC@1251..1254 - L_PAREN@1251..1252 "(" - PARAM@1252..1253 - DESTRUCT_FULL@1252..1253 - NAME@1252..1253 - IDENT@1252..1253 "v" - R_PAREN@1253..1254 ")" - COLONCOLON@1254..1256 "::" - WHITESPACE@1256..1257 " " - EXPR_BINARY@1257..1280 - LHS_EXPR@1257..1268 - EXPR_APPLY@1257..1268 - EXPR_INDEX@1257..1265 - EXPR_VAR@1257..1260 - NAME@1257..1260 - IDENT@1257..1260 "std" - DOT@1260..1261 "." - NAME@1261..1265 - IDENT@1261..1265 "type" - ARGS_DESC@1265..1268 - L_PAREN@1265..1266 "(" - ARG@1266..1267 - EXPR_VAR@1266..1267 - NAME@1266..1267 - IDENT@1266..1267 "v" - R_PAREN@1267..1268 ")" - WHITESPACE@1268..1269 " " - EQ@1269..1271 "==" - WHITESPACE@1271..1272 " " - EXPR_STRING@1272..1280 - STRING_SINGLE@1272..1280 "'string'" - COMMA@1280..1281 "," - WHITESPACE@1281..1284 "\n " - MEMBER_FIELD@1284..1321 - FIELD_METHOD@1284..1321 - FIELD_NAME_FIXED@1284..1292 - NAME@1284..1292 - IDENT@1284..1292 "isNumber" - PARAMS_DESC@1292..1295 - L_PAREN@1292..1293 "(" - PARAM@1293..1294 - DESTRUCT_FULL@1293..1294 - NAME@1293..1294 - IDENT@1293..1294 "v" - R_PAREN@1294..1295 ")" - COLONCOLON@1295..1297 "::" - WHITESPACE@1297..1298 " " - EXPR_BINARY@1298..1321 - LHS_EXPR@1298..1309 - EXPR_APPLY@1298..1309 - EXPR_INDEX@1298..1306 - EXPR_VAR@1298..1301 - NAME@1298..1301 - IDENT@1298..1301 "std" - DOT@1301..1302 "." - NAME@1302..1306 - IDENT@1302..1306 "type" - ARGS_DESC@1306..1309 - L_PAREN@1306..1307 "(" - ARG@1307..1308 - EXPR_VAR@1307..1308 - NAME@1307..1308 - IDENT@1307..1308 "v" - R_PAREN@1308..1309 ")" - WHITESPACE@1309..1310 " " - EQ@1310..1312 "==" - WHITESPACE@1312..1313 " " - EXPR_STRING@1313..1321 - STRING_SINGLE@1313..1321 "'number'" - COMMA@1321..1322 "," - WHITESPACE@1322..1325 "\n " - MEMBER_FIELD@1325..1364 - FIELD_METHOD@1325..1364 - FIELD_NAME_FIXED@1325..1334 - NAME@1325..1334 - IDENT@1325..1334 "isBoolean" - PARAMS_DESC@1334..1337 - L_PAREN@1334..1335 "(" - PARAM@1335..1336 - DESTRUCT_FULL@1335..1336 - NAME@1335..1336 - IDENT@1335..1336 "v" - R_PAREN@1336..1337 ")" - COLONCOLON@1337..1339 "::" - WHITESPACE@1339..1340 " " - EXPR_BINARY@1340..1364 - LHS_EXPR@1340..1351 - EXPR_APPLY@1340..1351 - EXPR_INDEX@1340..1348 - EXPR_VAR@1340..1343 - NAME@1340..1343 - IDENT@1340..1343 "std" - DOT@1343..1344 "." - NAME@1344..1348 - IDENT@1344..1348 "type" - ARGS_DESC@1348..1351 - L_PAREN@1348..1349 "(" - ARG@1349..1350 - EXPR_VAR@1349..1350 - NAME@1349..1350 - IDENT@1349..1350 "v" - R_PAREN@1350..1351 ")" - WHITESPACE@1351..1352 " " - EQ@1352..1354 "==" - WHITESPACE@1354..1355 " " - EXPR_STRING@1355..1364 - STRING_SINGLE@1355..1364 "'boolean'" - COMMA@1364..1365 "," - WHITESPACE@1365..1368 "\n " - MEMBER_FIELD@1368..1405 - FIELD_METHOD@1368..1405 - FIELD_NAME_FIXED@1368..1376 - NAME@1368..1376 - IDENT@1368..1376 "isObject" - PARAMS_DESC@1376..1379 - L_PAREN@1376..1377 "(" - PARAM@1377..1378 - DESTRUCT_FULL@1377..1378 - NAME@1377..1378 - IDENT@1377..1378 "v" - R_PAREN@1378..1379 ")" - COLONCOLON@1379..1381 "::" - WHITESPACE@1381..1382 " " - EXPR_BINARY@1382..1405 - LHS_EXPR@1382..1393 - EXPR_APPLY@1382..1393 - EXPR_INDEX@1382..1390 - EXPR_VAR@1382..1385 - NAME@1382..1385 - IDENT@1382..1385 "std" - DOT@1385..1386 "." - NAME@1386..1390 - IDENT@1386..1390 "type" - ARGS_DESC@1390..1393 - L_PAREN@1390..1391 "(" - ARG@1391..1392 - EXPR_VAR@1391..1392 - NAME@1391..1392 - IDENT@1391..1392 "v" - R_PAREN@1392..1393 ")" - WHITESPACE@1393..1394 " " - EQ@1394..1396 "==" - WHITESPACE@1396..1397 " " - EXPR_STRING@1397..1405 - STRING_SINGLE@1397..1405 "'object'" - COMMA@1405..1406 "," - WHITESPACE@1406..1409 "\n " - MEMBER_FIELD@1409..1444 - FIELD_METHOD@1409..1444 - FIELD_NAME_FIXED@1409..1416 - NAME@1409..1416 - IDENT@1409..1416 "isArray" - PARAMS_DESC@1416..1419 - L_PAREN@1416..1417 "(" - PARAM@1417..1418 - DESTRUCT_FULL@1417..1418 - NAME@1417..1418 - IDENT@1417..1418 "v" - R_PAREN@1418..1419 ")" - COLONCOLON@1419..1421 "::" - WHITESPACE@1421..1422 " " - EXPR_BINARY@1422..1444 - LHS_EXPR@1422..1433 - EXPR_APPLY@1422..1433 - EXPR_INDEX@1422..1430 - EXPR_VAR@1422..1425 - NAME@1422..1425 - IDENT@1422..1425 "std" - DOT@1425..1426 "." - NAME@1426..1430 - IDENT@1426..1430 "type" - ARGS_DESC@1430..1433 - L_PAREN@1430..1431 "(" - ARG@1431..1432 - EXPR_VAR@1431..1432 - NAME@1431..1432 - IDENT@1431..1432 "v" - R_PAREN@1432..1433 ")" - WHITESPACE@1433..1434 " " - EQ@1434..1436 "==" - WHITESPACE@1436..1437 " " - EXPR_STRING@1437..1444 - STRING_SINGLE@1437..1444 "'array'" - COMMA@1444..1445 "," - WHITESPACE@1445..1448 "\n " - MEMBER_FIELD@1448..1489 - FIELD_METHOD@1448..1489 - FIELD_NAME_FIXED@1448..1458 - NAME@1448..1458 - IDENT@1448..1458 "isFunction" - PARAMS_DESC@1458..1461 - L_PAREN@1458..1459 "(" - PARAM@1459..1460 - DESTRUCT_FULL@1459..1460 - NAME@1459..1460 - IDENT@1459..1460 "v" - R_PAREN@1460..1461 ")" - COLONCOLON@1461..1463 "::" - WHITESPACE@1463..1464 " " - EXPR_BINARY@1464..1489 - LHS_EXPR@1464..1475 - EXPR_APPLY@1464..1475 - EXPR_INDEX@1464..1472 - EXPR_VAR@1464..1467 - NAME@1464..1467 - IDENT@1464..1467 "std" - DOT@1467..1468 "." - NAME@1468..1472 - IDENT@1468..1472 "type" - ARGS_DESC@1472..1475 - L_PAREN@1472..1473 "(" - ARG@1473..1474 - EXPR_VAR@1473..1474 - NAME@1473..1474 - IDENT@1473..1474 "v" - R_PAREN@1474..1475 ")" - WHITESPACE@1475..1476 " " - EQ@1476..1478 "==" - WHITESPACE@1478..1479 " " - EXPR_STRING@1479..1489 - STRING_SINGLE@1479..1489 "'function'" - COMMA@1489..1490 "," - WHITESPACE@1490..1494 "\n\n " - MEMBER_FIELD@1494..1557 - FIELD_METHOD@1494..1557 - FIELD_NAME_FIXED@1494..1502 - NAME@1494..1502 - IDENT@1494..1502 "toString" - PARAMS_DESC@1502..1505 - L_PAREN@1502..1503 "(" - PARAM@1503..1504 - DESTRUCT_FULL@1503..1504 - NAME@1503..1504 - IDENT@1503..1504 "a" - R_PAREN@1504..1505 ")" - COLONCOLON@1505..1507 "::" - WHITESPACE@1507..1512 "\n " - EXPR_IF_THEN_ELSE@1512..1557 - IF_KW@1512..1514 "if" - WHITESPACE@1514..1515 " " - EXPR_BINARY@1515..1538 - LHS_EXPR@1515..1526 - EXPR_APPLY@1515..1526 - EXPR_INDEX@1515..1523 - EXPR_VAR@1515..1518 - NAME@1515..1518 - IDENT@1515..1518 "std" - DOT@1518..1519 "." - NAME@1519..1523 - IDENT@1519..1523 "type" - ARGS_DESC@1523..1526 - L_PAREN@1523..1524 "(" - ARG@1524..1525 - EXPR_VAR@1524..1525 - NAME@1524..1525 - IDENT@1524..1525 "a" - R_PAREN@1525..1526 ")" - WHITESPACE@1526..1527 " " - EQ@1527..1529 "==" - WHITESPACE@1529..1530 " " - EXPR_STRING@1530..1538 - STRING_SINGLE@1530..1538 "'string'" - WHITESPACE@1538..1539 " " - THEN_KW@1539..1543 "then" - WHITESPACE@1543..1544 " " - TRUE_EXPR@1544..1545 - EXPR_VAR@1544..1545 - NAME@1544..1545 - IDENT@1544..1545 "a" - WHITESPACE@1545..1546 " " - ELSE_KW@1546..1550 "else" - WHITESPACE@1550..1551 " " - FALSE_EXPR@1551..1557 - EXPR_BINARY@1551..1557 - LHS_EXPR@1551..1553 - EXPR_STRING@1551..1553 - STRING_SINGLE@1551..1553 "''" - WHITESPACE@1553..1554 " " - PLUS@1554..1555 "+" - WHITESPACE@1555..1556 " " - EXPR_VAR@1556..1557 - NAME@1556..1557 - IDENT@1556..1557 "a" - COMMA@1557..1558 "," - WHITESPACE@1558..1562 "\n\n " - MEMBER_FIELD@1562..1589 - FIELD_NORMAL@1562..1589 - FIELD_NAME_FIXED@1562..1568 - NAME@1562..1568 - IDENT@1562..1568 "substr" - COLONCOLON@1568..1570 "::" - WHITESPACE@1570..1571 " " - EXPR_INTRINSIC@1571..1589 - INTRINSIC@1571..1581 "$intrinsic" - L_PAREN@1581..1582 "(" - NAME@1582..1588 - IDENT@1582..1588 "substr" - R_PAREN@1588..1589 ")" - COMMA@1589..1590 "," - WHITESPACE@1590..1594 "\n\n " - MEMBER_FIELD@1594..1718 - FIELD_METHOD@1594..1718 - FIELD_NAME_FIXED@1594..1604 - NAME@1594..1604 - IDENT@1594..1604 "startsWith" - PARAMS_DESC@1604..1610 - L_PAREN@1604..1605 "(" - PARAM@1605..1606 - DESTRUCT_FULL@1605..1606 - NAME@1605..1606 - IDENT@1605..1606 "a" - COMMA@1606..1607 "," - WHITESPACE@1607..1608 " " - PARAM@1608..1609 - DESTRUCT_FULL@1608..1609 - NAME@1608..1609 - IDENT@1608..1609 "b" - R_PAREN@1609..1610 ")" - COLONCOLON@1610..1612 "::" - WHITESPACE@1612..1617 "\n " - EXPR_IF_THEN_ELSE@1617..1718 - IF_KW@1617..1619 "if" - WHITESPACE@1619..1620 " " - EXPR_BINARY@1620..1649 - LHS_EXPR@1620..1633 - EXPR_APPLY@1620..1633 - EXPR_INDEX@1620..1630 - EXPR_VAR@1620..1623 - NAME@1620..1623 - IDENT@1620..1623 "std" - DOT@1623..1624 "." - NAME@1624..1630 - IDENT@1624..1630 "length" - ARGS_DESC@1630..1633 - L_PAREN@1630..1631 "(" - ARG@1631..1632 - EXPR_VAR@1631..1632 - NAME@1631..1632 - IDENT@1631..1632 "a" - R_PAREN@1632..1633 ")" - WHITESPACE@1633..1634 " " - LT@1634..1635 "<" - WHITESPACE@1635..1636 " " - EXPR_APPLY@1636..1649 - EXPR_INDEX@1636..1646 - EXPR_VAR@1636..1639 - NAME@1636..1639 - IDENT@1636..1639 "std" - DOT@1639..1640 "." - NAME@1640..1646 - IDENT@1640..1646 "length" - ARGS_DESC@1646..1649 - L_PAREN@1646..1647 "(" - ARG@1647..1648 - EXPR_VAR@1647..1648 - NAME@1647..1648 - IDENT@1647..1648 "b" - R_PAREN@1648..1649 ")" - WHITESPACE@1649..1650 " " - THEN_KW@1650..1654 "then" - WHITESPACE@1654..1661 "\n " - TRUE_EXPR@1661..1666 - EXPR_LITERAL@1661..1666 - FALSE_KW@1661..1666 "false" - WHITESPACE@1666..1671 "\n " - ELSE_KW@1671..1675 "else" - WHITESPACE@1675..1682 "\n " - FALSE_EXPR@1682..1718 - EXPR_BINARY@1682..1718 - LHS_EXPR@1682..1713 - EXPR_APPLY@1682..1713 - EXPR_INDEX@1682..1692 - EXPR_VAR@1682..1685 - NAME@1682..1685 - IDENT@1682..1685 "std" - DOT@1685..1686 "." - NAME@1686..1692 - IDENT@1686..1692 "substr" - ARGS_DESC@1692..1713 - L_PAREN@1692..1693 "(" - ARG@1693..1694 - EXPR_VAR@1693..1694 - NAME@1693..1694 - IDENT@1693..1694 "a" - COMMA@1694..1695 "," - WHITESPACE@1695..1696 " " - ARG@1696..1697 - EXPR_NUMBER@1696..1697 - FLOAT@1696..1697 "0" - COMMA@1697..1698 "," - WHITESPACE@1698..1699 " " - ARG@1699..1712 - EXPR_APPLY@1699..1712 - EXPR_INDEX@1699..1709 - EXPR_VAR@1699..1702 - NAME@1699..1702 - IDENT@1699..1702 "std" - DOT@1702..1703 "." - NAME@1703..1709 - IDENT@1703..1709 "length" - ARGS_DESC@1709..1712 - L_PAREN@1709..1710 "(" - ARG@1710..1711 - EXPR_VAR@1710..1711 - NAME@1710..1711 - IDENT@1710..1711 "b" - R_PAREN@1711..1712 ")" - R_PAREN@1712..1713 ")" - WHITESPACE@1713..1714 " " - EQ@1714..1716 "==" - WHITESPACE@1716..1717 " " - EXPR_VAR@1717..1718 - NAME@1717..1718 - IDENT@1717..1718 "b" - COMMA@1718..1719 "," - WHITESPACE@1719..1723 "\n\n " - MEMBER_FIELD@1723..1873 - FIELD_METHOD@1723..1873 - FIELD_NAME_FIXED@1723..1731 - NAME@1723..1731 - IDENT@1723..1731 "endsWith" - PARAMS_DESC@1731..1737 - L_PAREN@1731..1732 "(" - PARAM@1732..1733 - DESTRUCT_FULL@1732..1733 - NAME@1732..1733 - IDENT@1732..1733 "a" - COMMA@1733..1734 "," - WHITESPACE@1734..1735 " " - PARAM@1735..1736 - DESTRUCT_FULL@1735..1736 - NAME@1735..1736 - IDENT@1735..1736 "b" - R_PAREN@1736..1737 ")" - COLONCOLON@1737..1739 "::" - WHITESPACE@1739..1744 "\n " - EXPR_IF_THEN_ELSE@1744..1873 - IF_KW@1744..1746 "if" - WHITESPACE@1746..1747 " " - EXPR_BINARY@1747..1776 - LHS_EXPR@1747..1760 - EXPR_APPLY@1747..1760 - EXPR_INDEX@1747..1757 - EXPR_VAR@1747..1750 - NAME@1747..1750 - IDENT@1747..1750 "std" - DOT@1750..1751 "." - NAME@1751..1757 - IDENT@1751..1757 "length" - ARGS_DESC@1757..1760 - L_PAREN@1757..1758 "(" - ARG@1758..1759 - EXPR_VAR@1758..1759 - NAME@1758..1759 - IDENT@1758..1759 "a" - R_PAREN@1759..1760 ")" - WHITESPACE@1760..1761 " " - LT@1761..1762 "<" - WHITESPACE@1762..1763 " " - EXPR_APPLY@1763..1776 - EXPR_INDEX@1763..1773 - EXPR_VAR@1763..1766 - NAME@1763..1766 - IDENT@1763..1766 "std" - DOT@1766..1767 "." - NAME@1767..1773 - IDENT@1767..1773 "length" - ARGS_DESC@1773..1776 - L_PAREN@1773..1774 "(" - ARG@1774..1775 - EXPR_VAR@1774..1775 - NAME@1774..1775 - IDENT@1774..1775 "b" - R_PAREN@1775..1776 ")" - WHITESPACE@1776..1777 " " - THEN_KW@1777..1781 "then" - WHITESPACE@1781..1788 "\n " - TRUE_EXPR@1788..1793 - EXPR_LITERAL@1788..1793 - FALSE_KW@1788..1793 "false" - WHITESPACE@1793..1798 "\n " - ELSE_KW@1798..1802 "else" - WHITESPACE@1802..1809 "\n " - FALSE_EXPR@1809..1873 - EXPR_BINARY@1809..1873 - LHS_EXPR@1809..1868 - EXPR_APPLY@1809..1868 - EXPR_INDEX@1809..1819 - EXPR_VAR@1809..1812 - NAME@1809..1812 - IDENT@1809..1812 "std" - DOT@1812..1813 "." - NAME@1813..1819 - IDENT@1813..1819 "substr" - ARGS_DESC@1819..1868 - L_PAREN@1819..1820 "(" - ARG@1820..1821 - EXPR_VAR@1820..1821 - NAME@1820..1821 - IDENT@1820..1821 "a" - COMMA@1821..1822 "," - WHITESPACE@1822..1823 " " - ARG@1823..1852 - EXPR_BINARY@1823..1852 - LHS_EXPR@1823..1836 - EXPR_APPLY@1823..1836 - EXPR_INDEX@1823..1833 - EXPR_VAR@1823..1826 - NAME@1823..1826 - IDENT@1823..1826 "std" - DOT@1826..1827 "." - NAME@1827..1833 - IDENT@1827..1833 "length" - ARGS_DESC@1833..1836 - L_PAREN@1833..1834 "(" - ARG@1834..1835 - EXPR_VAR@1834..1835 - NAME@1834..1835 - IDENT@1834..1835 "a" - R_PAREN@1835..1836 ")" - WHITESPACE@1836..1837 " " - MINUS@1837..1838 "-" - WHITESPACE@1838..1839 " " - EXPR_APPLY@1839..1852 - EXPR_INDEX@1839..1849 - EXPR_VAR@1839..1842 - NAME@1839..1842 - IDENT@1839..1842 "std" - DOT@1842..1843 "." - NAME@1843..1849 - IDENT@1843..1849 "length" - ARGS_DESC@1849..1852 - L_PAREN@1849..1850 "(" - ARG@1850..1851 - EXPR_VAR@1850..1851 - NAME@1850..1851 - IDENT@1850..1851 "b" - R_PAREN@1851..1852 ")" - COMMA@1852..1853 "," - WHITESPACE@1853..1854 " " - ARG@1854..1867 - EXPR_APPLY@1854..1867 - EXPR_INDEX@1854..1864 - EXPR_VAR@1854..1857 - NAME@1854..1857 - IDENT@1854..1857 "std" - DOT@1857..1858 "." - NAME@1858..1864 - IDENT@1858..1864 "length" - ARGS_DESC@1864..1867 - L_PAREN@1864..1865 "(" - ARG@1865..1866 - EXPR_VAR@1865..1866 - NAME@1865..1866 - IDENT@1865..1866 "b" - R_PAREN@1866..1867 ")" - R_PAREN@1867..1868 ")" - WHITESPACE@1868..1869 " " - EQ@1869..1871 "==" - WHITESPACE@1871..1872 " " - EXPR_VAR@1872..1873 - NAME@1872..1873 - IDENT@1872..1873 "b" - COMMA@1873..1874 "," - WHITESPACE@1874..1878 "\n\n " - MEMBER_FIELD@1878..2021 - FIELD_METHOD@1878..2021 - FIELD_NAME_FIXED@1878..1889 - NAME@1878..1889 - IDENT@1878..1889 "lstripChars" - PARAMS_DESC@1889..1901 - L_PAREN@1889..1890 "(" - PARAM@1890..1893 - DESTRUCT_FULL@1890..1893 - NAME@1890..1893 - IDENT@1890..1893 "str" - COMMA@1893..1894 "," - WHITESPACE@1894..1895 " " - PARAM@1895..1900 - DESTRUCT_FULL@1895..1900 - NAME@1895..1900 - IDENT@1895..1900 "chars" - R_PAREN@1900..1901 ")" - COLONCOLON@1901..1903 "::" - WHITESPACE@1903..1908 "\n " - EXPR_IF_THEN_ELSE@1908..2021 - IF_KW@1908..1910 "if" - WHITESPACE@1910..1911 " " - EXPR_BINARY@1911..1959 - LHS_EXPR@1911..1930 - EXPR_BINARY@1911..1930 - LHS_EXPR@1911..1926 - EXPR_APPLY@1911..1926 - EXPR_INDEX@1911..1921 - EXPR_VAR@1911..1914 - NAME@1911..1914 - IDENT@1911..1914 "std" - DOT@1914..1915 "." - NAME@1915..1921 - IDENT@1915..1921 "length" - ARGS_DESC@1921..1926 - L_PAREN@1921..1922 "(" - ARG@1922..1925 - EXPR_VAR@1922..1925 - NAME@1922..1925 - IDENT@1922..1925 "str" - R_PAREN@1925..1926 ")" - WHITESPACE@1926..1927 " " - GT@1927..1928 ">" - WHITESPACE@1928..1929 " " - EXPR_NUMBER@1929..1930 - FLOAT@1929..1930 "0" - WHITESPACE@1930..1931 " " - AND@1931..1933 "&&" - WHITESPACE@1933..1934 " " - EXPR_APPLY@1934..1959 - EXPR_INDEX@1934..1944 - EXPR_VAR@1934..1937 - NAME@1934..1937 - IDENT@1934..1937 "std" - DOT@1937..1938 "." - NAME@1938..1944 - IDENT@1938..1944 "member" - ARGS_DESC@1944..1959 - L_PAREN@1944..1945 "(" - ARG@1945..1950 - EXPR_VAR@1945..1950 - NAME@1945..1950 - IDENT@1945..1950 "chars" - COMMA@1950..1951 "," - WHITESPACE@1951..1952 " " - ARG@1952..1958 - EXPR_INDEX_EXPR@1952..1958 - LHS_EXPR@1952..1955 - EXPR_VAR@1952..1955 - NAME@1952..1955 - IDENT@1952..1955 "str" - L_BRACK@1955..1956 "[" - EXPR_NUMBER@1956..1957 - FLOAT@1956..1957 "0" - R_BRACK@1957..1958 "]" - R_PAREN@1958..1959 ")" - WHITESPACE@1959..1960 " " - THEN_KW@1960..1964 "then" - WHITESPACE@1964..1971 "\n " - TRUE_EXPR@1971..2002 - EXPR_APPLY@1971..2002 - EXPR_INDEX@1971..1986 - EXPR_VAR@1971..1974 - NAME@1971..1974 - IDENT@1971..1974 "std" - DOT@1974..1975 "." - NAME@1975..1986 - IDENT@1975..1986 "lstripChars" - ARGS_DESC@1986..2002 - L_PAREN@1986..1987 "(" - ARG@1987..1994 - EXPR_SLICE@1987..1994 - EXPR_VAR@1987..1990 - NAME@1987..1990 - IDENT@1987..1990 "str" - SLICE_DESC@1990..1994 - L_BRACK@1990..1991 "[" - EXPR_NUMBER@1991..1992 - FLOAT@1991..1992 "1" - COLON@1992..1993 ":" - R_BRACK@1993..1994 "]" - COMMA@1994..1995 "," - WHITESPACE@1995..1996 " " - ARG@1996..2001 - EXPR_VAR@1996..2001 - NAME@1996..2001 - IDENT@1996..2001 "chars" - R_PAREN@2001..2002 ")" - WHITESPACE@2002..2007 "\n " - ELSE_KW@2007..2011 "else" - WHITESPACE@2011..2018 "\n " - FALSE_EXPR@2018..2021 - EXPR_VAR@2018..2021 - NAME@2018..2021 - IDENT@2018..2021 "str" - COMMA@2021..2022 "," - WHITESPACE@2022..2026 "\n\n " - MEMBER_FIELD@2026..2202 - FIELD_METHOD@2026..2202 - FIELD_NAME_FIXED@2026..2037 - NAME@2026..2037 - IDENT@2026..2037 "rstripChars" - PARAMS_DESC@2037..2049 - L_PAREN@2037..2038 "(" - PARAM@2038..2041 - DESTRUCT_FULL@2038..2041 - NAME@2038..2041 - IDENT@2038..2041 "str" - COMMA@2041..2042 "," - WHITESPACE@2042..2043 " " - PARAM@2043..2048 - DESTRUCT_FULL@2043..2048 - NAME@2043..2048 - IDENT@2043..2048 "chars" - R_PAREN@2048..2049 ")" - COLONCOLON@2049..2051 "::" - WHITESPACE@2051..2056 "\n " - EXPR_LOCAL@2056..2202 - LOCAL_KW@2056..2061 "local" - WHITESPACE@2061..2062 " " - BIND_DESTRUCT@2062..2083 - DESTRUCT_FULL@2062..2065 - NAME@2062..2065 - IDENT@2062..2065 "len" - WHITESPACE@2065..2066 " " - ASSIGN@2066..2067 "=" - WHITESPACE@2067..2068 " " - EXPR_APPLY@2068..2083 - EXPR_INDEX@2068..2078 - EXPR_VAR@2068..2071 - NAME@2068..2071 - IDENT@2068..2071 "std" - DOT@2071..2072 "." - NAME@2072..2078 - IDENT@2072..2078 "length" - ARGS_DESC@2078..2083 - L_PAREN@2078..2079 "(" - ARG@2079..2082 - EXPR_VAR@2079..2082 - NAME@2079..2082 - IDENT@2079..2082 "str" - R_PAREN@2082..2083 ")" - SEMI@2083..2084 ";" - WHITESPACE@2084..2089 "\n " - EXPR_IF_THEN_ELSE@2089..2202 - IF_KW@2089..2091 "if" - WHITESPACE@2091..2092 " " - EXPR_BINARY@2092..2134 - LHS_EXPR@2092..2099 - EXPR_BINARY@2092..2099 - LHS_EXPR@2092..2095 - EXPR_VAR@2092..2095 - NAME@2092..2095 - IDENT@2092..2095 "len" - WHITESPACE@2095..2096 " " - GT@2096..2097 ">" - WHITESPACE@2097..2098 " " - EXPR_NUMBER@2098..2099 - FLOAT@2098..2099 "0" - WHITESPACE@2099..2100 " " - AND@2100..2102 "&&" - WHITESPACE@2102..2103 " " - EXPR_APPLY@2103..2134 - EXPR_INDEX@2103..2113 - EXPR_VAR@2103..2106 - NAME@2103..2106 - IDENT@2103..2106 "std" - DOT@2106..2107 "." - NAME@2107..2113 - IDENT@2107..2113 "member" - ARGS_DESC@2113..2134 - L_PAREN@2113..2114 "(" - ARG@2114..2119 - EXPR_VAR@2114..2119 - NAME@2114..2119 - IDENT@2114..2119 "chars" - COMMA@2119..2120 "," - WHITESPACE@2120..2121 " " - ARG@2121..2133 - EXPR_INDEX_EXPR@2121..2133 - LHS_EXPR@2121..2124 - EXPR_VAR@2121..2124 - NAME@2121..2124 - IDENT@2121..2124 "str" - L_BRACK@2124..2125 "[" - EXPR_BINARY@2125..2132 - LHS_EXPR@2125..2128 - EXPR_VAR@2125..2128 - NAME@2125..2128 - IDENT@2125..2128 "len" - WHITESPACE@2128..2129 " " - MINUS@2129..2130 "-" - WHITESPACE@2130..2131 " " - EXPR_NUMBER@2131..2132 - FLOAT@2131..2132 "1" - R_BRACK@2132..2133 "]" - R_PAREN@2133..2134 ")" - WHITESPACE@2134..2135 " " - THEN_KW@2135..2139 "then" - WHITESPACE@2139..2146 "\n " - TRUE_EXPR@2146..2183 - EXPR_APPLY@2146..2183 - EXPR_INDEX@2146..2161 - EXPR_VAR@2146..2149 - NAME@2146..2149 - IDENT@2146..2149 "std" - DOT@2149..2150 "." - NAME@2150..2161 - IDENT@2150..2161 "rstripChars" - ARGS_DESC@2161..2183 - L_PAREN@2161..2162 "(" - ARG@2162..2175 - EXPR_SLICE@2162..2175 - EXPR_VAR@2162..2165 - NAME@2162..2165 - IDENT@2162..2165 "str" - SLICE_DESC@2165..2175 - L_BRACK@2165..2166 "[" - COLON@2166..2167 ":" - SLICE_DESC_END@2167..2174 - EXPR_BINARY@2167..2174 - LHS_EXPR@2167..2170 - EXPR_VAR@2167..2170 - NAME@2167..2170 - IDENT@2167..2170 "len" - WHITESPACE@2170..2171 " " - MINUS@2171..2172 "-" - WHITESPACE@2172..2173 " " - EXPR_NUMBER@2173..2174 - FLOAT@2173..2174 "1" - R_BRACK@2174..2175 "]" - COMMA@2175..2176 "," - WHITESPACE@2176..2177 " " - ARG@2177..2182 - EXPR_VAR@2177..2182 - NAME@2177..2182 - IDENT@2177..2182 "chars" - R_PAREN@2182..2183 ")" - WHITESPACE@2183..2188 "\n " - ELSE_KW@2188..2192 "else" - WHITESPACE@2192..2199 "\n " - FALSE_EXPR@2199..2202 - EXPR_VAR@2199..2202 - NAME@2199..2202 - IDENT@2199..2202 "str" - COMMA@2202..2203 "," - WHITESPACE@2203..2207 "\n\n " - MEMBER_FIELD@2207..2287 - FIELD_METHOD@2207..2287 - FIELD_NAME_FIXED@2207..2217 - NAME@2207..2217 - IDENT@2207..2217 "stripChars" - PARAMS_DESC@2217..2229 - L_PAREN@2217..2218 "(" - PARAM@2218..2221 - DESTRUCT_FULL@2218..2221 - NAME@2218..2221 - IDENT@2218..2221 "str" - COMMA@2221..2222 "," - WHITESPACE@2222..2223 " " - PARAM@2223..2228 - DESTRUCT_FULL@2223..2228 - NAME@2223..2228 - IDENT@2223..2228 "chars" - R_PAREN@2228..2229 ")" - COLONCOLON@2229..2231 "::" - WHITESPACE@2231..2236 "\n " - EXPR_APPLY@2236..2287 - EXPR_INDEX@2236..2251 - EXPR_VAR@2236..2239 - NAME@2236..2239 - IDENT@2236..2239 "std" - DOT@2239..2240 "." - NAME@2240..2251 - IDENT@2240..2251 "lstripChars" - ARGS_DESC@2251..2287 - L_PAREN@2251..2252 "(" - ARG@2252..2279 - EXPR_APPLY@2252..2279 - EXPR_INDEX@2252..2267 - EXPR_VAR@2252..2255 - NAME@2252..2255 - IDENT@2252..2255 "std" - DOT@2255..2256 "." - NAME@2256..2267 - IDENT@2256..2267 "rstripChars" - ARGS_DESC@2267..2279 - L_PAREN@2267..2268 "(" - ARG@2268..2271 - EXPR_VAR@2268..2271 - NAME@2268..2271 - IDENT@2268..2271 "str" - COMMA@2271..2272 "," - WHITESPACE@2272..2273 " " - ARG@2273..2278 - EXPR_VAR@2273..2278 - NAME@2273..2278 - IDENT@2273..2278 "chars" - R_PAREN@2278..2279 ")" - COMMA@2279..2280 "," - WHITESPACE@2280..2281 " " - ARG@2281..2286 - EXPR_VAR@2281..2286 - NAME@2281..2286 - IDENT@2281..2286 "chars" - R_PAREN@2286..2287 ")" - COMMA@2287..2288 "," - WHITESPACE@2288..2292 "\n\n " - MEMBER_FIELD@2292..2365 - FIELD_METHOD@2292..2365 - FIELD_NAME_FIXED@2292..2303 - NAME@2292..2303 - IDENT@2292..2303 "stringChars" - PARAMS_DESC@2303..2308 - L_PAREN@2303..2304 "(" - PARAM@2304..2307 - DESTRUCT_FULL@2304..2307 - NAME@2304..2307 - IDENT@2304..2307 "str" - R_PAREN@2307..2308 ")" - COLONCOLON@2308..2310 "::" - WHITESPACE@2310..2315 "\n " - EXPR_APPLY@2315..2365 - EXPR_INDEX@2315..2328 - EXPR_VAR@2315..2318 - NAME@2315..2318 - IDENT@2315..2318 "std" - DOT@2318..2319 "." - NAME@2319..2328 - IDENT@2319..2328 "makeArray" - ARGS_DESC@2328..2365 - L_PAREN@2328..2329 "(" - ARG@2329..2344 - EXPR_APPLY@2329..2344 - EXPR_INDEX@2329..2339 - EXPR_VAR@2329..2332 - NAME@2329..2332 - IDENT@2329..2332 "std" - DOT@2332..2333 "." - NAME@2333..2339 - IDENT@2333..2339 "length" - ARGS_DESC@2339..2344 - L_PAREN@2339..2340 "(" - ARG@2340..2343 - EXPR_VAR@2340..2343 - NAME@2340..2343 - IDENT@2340..2343 "str" - R_PAREN@2343..2344 ")" - COMMA@2344..2345 "," - WHITESPACE@2345..2346 " " - ARG@2346..2364 - EXPR_FUNCTION@2346..2364 - FUNCTION_KW@2346..2354 "function" - PARAMS_DESC@2354..2357 - L_PAREN@2354..2355 "(" - PARAM@2355..2356 - DESTRUCT_FULL@2355..2356 - NAME@2355..2356 - IDENT@2355..2356 "i" - R_PAREN@2356..2357 ")" - WHITESPACE@2357..2358 " " - EXPR_INDEX_EXPR@2358..2364 - LHS_EXPR@2358..2361 - EXPR_VAR@2358..2361 - NAME@2358..2361 - IDENT@2358..2361 "str" - L_BRACK@2361..2362 "[" - EXPR_VAR@2362..2363 - NAME@2362..2363 - IDENT@2362..2363 "i" - R_BRACK@2363..2364 "]" - R_PAREN@2364..2365 ")" - COMMA@2365..2366 "," - WHITESPACE@2366..2370 "\n\n " - MEMBER_BIND_STMT@2370..3086 - OBJ_LOCAL@2370..3086 - LOCAL_KW@2370..2375 "local" - WHITESPACE@2375..2376 " " - BIND_FUNCTION@2376..3086 - NAME@2376..2385 - IDENT@2376..2385 "parse_nat" - PARAMS_DESC@2385..2396 - L_PAREN@2385..2386 "(" - PARAM@2386..2389 - DESTRUCT_FULL@2386..2389 - NAME@2386..2389 - IDENT@2386..2389 "str" - COMMA@2389..2390 "," - WHITESPACE@2390..2391 " " - PARAM@2391..2395 - DESTRUCT_FULL@2391..2395 - NAME@2391..2395 - IDENT@2391..2395 "base" - R_PAREN@2395..2396 ")" - WHITESPACE@2396..2397 " " - ASSIGN@2397..2398 "=" - WHITESPACE@2398..2403 "\n " - EXPR_ASSERT@2403..3086 - ASSERTION@2403..2467 - ASSERT_KW@2403..2409 "assert" - WHITESPACE@2409..2410 " " - LHS_EXPR@2410..2432 - EXPR_BINARY@2410..2432 - LHS_EXPR@2410..2418 - EXPR_BINARY@2410..2418 - LHS_EXPR@2410..2414 - EXPR_VAR@2410..2414 - NAME@2410..2414 - IDENT@2410..2414 "base" - WHITESPACE@2414..2415 " " - GT@2415..2416 ">" - WHITESPACE@2416..2417 " " - EXPR_NUMBER@2417..2418 - FLOAT@2417..2418 "0" - WHITESPACE@2418..2419 " " - AND@2419..2421 "&&" - WHITESPACE@2421..2422 " " - EXPR_BINARY@2422..2432 - LHS_EXPR@2422..2426 - EXPR_VAR@2422..2426 - NAME@2422..2426 - IDENT@2422..2426 "base" - WHITESPACE@2426..2427 " " - LE@2427..2429 "<=" - WHITESPACE@2429..2430 " " - EXPR_NUMBER@2430..2432 - FLOAT@2430..2432 "16" - WHITESPACE@2432..2433 " " - COLON@2433..2434 ":" - WHITESPACE@2434..2435 " " - EXPR_BINARY@2435..2467 - LHS_EXPR@2435..2460 - EXPR_STRING@2435..2460 - STRING_SINGLE@2435..2460 "'integer base %d inva ..." - WHITESPACE@2460..2461 " " - MODULO@2461..2462 "%" - WHITESPACE@2462..2463 " " - EXPR_VAR@2463..2467 - NAME@2463..2467 - IDENT@2463..2467 "base" - SEMI@2467..2468 ";" - WHITESPACE@2468..2473 "\n " - SINGLE_LINE_SLASH_COMMENT@2473..2517 "// These codepoints a ..." - WHITESPACE@2517..2521 " " - EXPR_LOCAL@2521..3086 - LOCAL_KW@2521..2526 "local" - WHITESPACE@2526..2527 " " - BIND_DESTRUCT@2527..2557 - DESTRUCT_FULL@2527..2536 - NAME@2527..2536 - IDENT@2527..2536 "zero_code" - WHITESPACE@2536..2537 " " - ASSIGN@2537..2538 "=" - WHITESPACE@2538..2539 " " - EXPR_APPLY@2539..2557 - EXPR_INDEX@2539..2552 - EXPR_VAR@2539..2542 - NAME@2539..2542 - IDENT@2539..2542 "std" - DOT@2542..2543 "." - NAME@2543..2552 - IDENT@2543..2552 "codepoint" - ARGS_DESC@2552..2557 - L_PAREN@2552..2553 "(" - ARG@2553..2556 - EXPR_STRING@2553..2556 - STRING_SINGLE@2553..2556 "'0'" - R_PAREN@2556..2557 ")" - SEMI@2557..2558 ";" - WHITESPACE@2558..2563 "\n " - EXPR_LOCAL@2563..3086 - LOCAL_KW@2563..2568 "local" - WHITESPACE@2568..2569 " " - BIND_DESTRUCT@2569..2602 - DESTRUCT_FULL@2569..2581 - NAME@2569..2581 - IDENT@2569..2581 "upper_a_code" - WHITESPACE@2581..2582 " " - ASSIGN@2582..2583 "=" - WHITESPACE@2583..2584 " " - EXPR_APPLY@2584..2602 - EXPR_INDEX@2584..2597 - EXPR_VAR@2584..2587 - NAME@2584..2587 - IDENT@2584..2587 "std" - DOT@2587..2588 "." - NAME@2588..2597 - IDENT@2588..2597 "codepoint" - ARGS_DESC@2597..2602 - L_PAREN@2597..2598 "(" - ARG@2598..2601 - EXPR_STRING@2598..2601 - STRING_SINGLE@2598..2601 "'A'" - R_PAREN@2601..2602 ")" - SEMI@2602..2603 ";" - WHITESPACE@2603..2608 "\n " - EXPR_LOCAL@2608..3086 - LOCAL_KW@2608..2613 "local" - WHITESPACE@2613..2614 " " - BIND_DESTRUCT@2614..2647 - DESTRUCT_FULL@2614..2626 - NAME@2614..2626 - IDENT@2614..2626 "lower_a_code" - WHITESPACE@2626..2627 " " - ASSIGN@2627..2628 "=" - WHITESPACE@2628..2629 " " - EXPR_APPLY@2629..2647 - EXPR_INDEX@2629..2642 - EXPR_VAR@2629..2632 - NAME@2629..2632 - IDENT@2629..2632 "std" - DOT@2632..2633 "." - NAME@2633..2642 - IDENT@2633..2642 "codepoint" - ARGS_DESC@2642..2647 - L_PAREN@2642..2643 "(" - ARG@2643..2646 - EXPR_STRING@2643..2646 - STRING_SINGLE@2643..2646 "'a'" - R_PAREN@2646..2647 ")" - SEMI@2647..2648 ";" - WHITESPACE@2648..2653 "\n " - EXPR_LOCAL@2653..3086 - LOCAL_KW@2653..2658 "local" - WHITESPACE@2658..2659 " " - BIND_FUNCTION@2659..3036 - NAME@2659..2667 - IDENT@2659..2667 "addDigit" - PARAMS_DESC@2667..2684 - L_PAREN@2667..2668 "(" - PARAM@2668..2677 - DESTRUCT_FULL@2668..2677 - NAME@2668..2677 - IDENT@2668..2677 "aggregate" - COMMA@2677..2678 "," - WHITESPACE@2678..2679 " " - PARAM@2679..2683 - DESTRUCT_FULL@2679..2683 - NAME@2679..2683 - IDENT@2679..2683 "char" - R_PAREN@2683..2684 ")" - WHITESPACE@2684..2685 " " - ASSIGN@2685..2686 "=" - WHITESPACE@2686..2693 "\n " - EXPR_LOCAL@2693..3036 - LOCAL_KW@2693..2698 "local" - WHITESPACE@2698..2699 " " - BIND_DESTRUCT@2699..2725 - DESTRUCT_FULL@2699..2703 - NAME@2699..2703 - IDENT@2699..2703 "code" - WHITESPACE@2703..2704 " " - ASSIGN@2704..2705 "=" - WHITESPACE@2705..2706 " " - EXPR_APPLY@2706..2725 - EXPR_INDEX@2706..2719 - EXPR_VAR@2706..2709 - NAME@2706..2709 - IDENT@2706..2709 "std" - DOT@2709..2710 "." - NAME@2710..2719 - IDENT@2710..2719 "codepoint" - ARGS_DESC@2719..2725 - L_PAREN@2719..2720 "(" - ARG@2720..2724 - EXPR_VAR@2720..2724 - NAME@2720..2724 - IDENT@2720..2724 "char" - R_PAREN@2724..2725 ")" - SEMI@2725..2726 ";" - WHITESPACE@2726..2733 "\n " - EXPR_LOCAL@2733..3036 - LOCAL_KW@2733..2738 "local" - WHITESPACE@2738..2739 " " - BIND_DESTRUCT@2739..2917 - DESTRUCT_FULL@2739..2744 - NAME@2739..2744 - IDENT@2739..2744 "digit" - WHITESPACE@2744..2745 " " - ASSIGN@2745..2746 "=" - WHITESPACE@2746..2747 " " - EXPR_IF_THEN_ELSE@2747..2917 - IF_KW@2747..2749 "if" - WHITESPACE@2749..2750 " " - EXPR_BINARY@2750..2770 - LHS_EXPR@2750..2754 - EXPR_VAR@2750..2754 - NAME@2750..2754 - IDENT@2750..2754 "code" - WHITESPACE@2754..2755 " " - GE@2755..2757 ">=" - WHITESPACE@2757..2758 " " - EXPR_VAR@2758..2770 - NAME@2758..2770 - IDENT@2758..2770 "lower_a_code" - WHITESPACE@2770..2771 " " - THEN_KW@2771..2775 "then" - WHITESPACE@2775..2784 "\n " - TRUE_EXPR@2784..2808 - EXPR_BINARY@2784..2808 - LHS_EXPR@2784..2803 - EXPR_BINARY@2784..2803 - LHS_EXPR@2784..2788 - EXPR_VAR@2784..2788 - NAME@2784..2788 - IDENT@2784..2788 "code" - WHITESPACE@2788..2789 " " - MINUS@2789..2790 "-" - WHITESPACE@2790..2791 " " - EXPR_VAR@2791..2803 - NAME@2791..2803 - IDENT@2791..2803 "lower_a_code" - WHITESPACE@2803..2804 " " - PLUS@2804..2805 "+" - WHITESPACE@2805..2806 " " - EXPR_NUMBER@2806..2808 - FLOAT@2806..2808 "10" - WHITESPACE@2808..2815 "\n " - ELSE_KW@2815..2819 "else" - WHITESPACE@2819..2820 " " - FALSE_EXPR@2820..2917 - EXPR_IF_THEN_ELSE@2820..2917 - IF_KW@2820..2822 "if" - WHITESPACE@2822..2823 " " - EXPR_BINARY@2823..2843 - LHS_EXPR@2823..2827 - EXPR_VAR@2823..2827 - NAME@2823..2827 - IDENT@2823..2827 "code" - WHITESPACE@2827..2828 " " - GE@2828..2830 ">=" - WHITESPACE@2830..2831 " " - EXPR_VAR@2831..2843 - NAME@2831..2843 - IDENT@2831..2843 "upper_a_code" - WHITESPACE@2843..2844 " " - THEN_KW@2844..2848 "then" - WHITESPACE@2848..2857 "\n " - TRUE_EXPR@2857..2881 - EXPR_BINARY@2857..2881 - LHS_EXPR@2857..2876 - EXPR_BINARY@2857..2876 - LHS_EXPR@2857..2861 - EXPR_VAR@2857..2861 - NAME@2857..2861 - IDENT@2857..2861 "code" - WHITESPACE@2861..2862 " " - MINUS@2862..2863 "-" - WHITESPACE@2863..2864 " " - EXPR_VAR@2864..2876 - NAME@2864..2876 - IDENT@2864..2876 "upper_a_code" - WHITESPACE@2876..2877 " " - PLUS@2877..2878 "+" - WHITESPACE@2878..2879 " " - EXPR_NUMBER@2879..2881 - FLOAT@2879..2881 "10" - WHITESPACE@2881..2888 "\n " - ELSE_KW@2888..2892 "else" - WHITESPACE@2892..2901 "\n " - FALSE_EXPR@2901..2917 - EXPR_BINARY@2901..2917 - LHS_EXPR@2901..2905 - EXPR_VAR@2901..2905 - NAME@2901..2905 - IDENT@2901..2905 "code" - WHITESPACE@2905..2906 " " - MINUS@2906..2907 "-" - WHITESPACE@2907..2908 " " - EXPR_VAR@2908..2917 - NAME@2908..2917 - IDENT@2908..2917 "zero_code" - SEMI@2917..2918 ";" - WHITESPACE@2918..2925 "\n " - EXPR_ASSERT@2925..3036 - ASSERTION@2925..3004 - ASSERT_KW@2925..2931 "assert" - WHITESPACE@2931..2932 " " - LHS_EXPR@2932..2958 - EXPR_BINARY@2932..2958 - LHS_EXPR@2932..2942 - EXPR_BINARY@2932..2942 - LHS_EXPR@2932..2937 - EXPR_VAR@2932..2937 - NAME@2932..2937 - IDENT@2932..2937 "digit" - WHITESPACE@2937..2938 " " - GE@2938..2940 ">=" - WHITESPACE@2940..2941 " " - EXPR_NUMBER@2941..2942 - FLOAT@2941..2942 "0" - WHITESPACE@2942..2943 " " - AND@2943..2945 "&&" - WHITESPACE@2945..2946 " " - EXPR_BINARY@2946..2958 - LHS_EXPR@2946..2951 - EXPR_VAR@2946..2951 - NAME@2946..2951 - IDENT@2946..2951 "digit" - WHITESPACE@2951..2952 " " - LT@2952..2953 "<" - WHITESPACE@2953..2954 " " - EXPR_VAR@2954..2958 - NAME@2954..2958 - IDENT@2954..2958 "base" - WHITESPACE@2958..2959 " " - COLON@2959..2960 ":" - WHITESPACE@2960..2961 " " - EXPR_BINARY@2961..3004 - LHS_EXPR@2961..2990 - EXPR_STRING@2961..2990 - STRING_SINGLE@2961..2990 "'%s is not a base %d ..." + WHITESPACE@1101..1106 "\n " + EXPR_IF_THEN_ELSE@1106..1434 + IF_KW@1106..1108 "if" + WHITESPACE@1108..1109 " " + EXPR_UNARY@1109..1130 + NOT@1109..1110 "!" + EXPR_APPLY@1110..1130 + EXPR_INDEX@1110..1124 + EXPR_VAR@1110..1113 + NAME@1110..1113 + IDENT@1110..1113 "std" + DOT@1113..1114 "." + NAME@1114..1124 + IDENT@1114..1124 "isFunction" + ARGS_DESC@1124..1130 + L_PAREN@1124..1125 "(" + ARG@1125..1129 + EXPR_VAR@1125..1129 + NAME@1125..1129 + IDENT@1125..1129 "func" + R_PAREN@1129..1130 ")" + WHITESPACE@1130..1131 " " + THEN_KW@1131..1135 "then" + WHITESPACE@1135..1142 "\n " + TRUE_EXPR@1142..1220 + EXPR_ERROR@1142..1220 + ERROR_KW@1142..1147 "error" + WHITESPACE@1147..1148 " " + EXPR_PARENED@1148..1220 + L_PAREN@1148..1149 "(" + EXPR_BINARY@1149..1219 + LHS_EXPR@1149..1202 + EXPR_STRING@1149..1202 + STRING_SINGLE@1149..1202 "'std.mapWithIndex fir ..." + WHITESPACE@1202..1203 " " + PLUS@1203..1204 "+" + WHITESPACE@1204..1205 " " + EXPR_APPLY@1205..1219 + EXPR_INDEX@1205..1213 + EXPR_VAR@1205..1208 + NAME@1205..1208 + IDENT@1205..1208 "std" + DOT@1208..1209 "." + NAME@1209..1213 + IDENT@1209..1213 "type" + ARGS_DESC@1213..1219 + L_PAREN@1213..1214 "(" + ARG@1214..1218 + EXPR_VAR@1214..1218 + NAME@1214..1218 + IDENT@1214..1218 "func" + R_PAREN@1218..1219 ")" + R_PAREN@1219..1220 ")" + WHITESPACE@1220..1225 "\n " + ELSE_KW@1225..1229 "else" + WHITESPACE@1229..1230 " " + FALSE_EXPR@1230..1434 + EXPR_IF_THEN_ELSE@1230..1434 + IF_KW@1230..1232 "if" + WHITESPACE@1232..1233 " " + EXPR_BINARY@1233..1272 + LHS_EXPR@1233..1250 + EXPR_UNARY@1233..1250 + NOT@1233..1234 "!" + EXPR_APPLY@1234..1250 + EXPR_INDEX@1234..1245 + EXPR_VAR@1234..1237 + NAME@1234..1237 + IDENT@1234..1237 "std" + DOT@1237..1238 "." + NAME@1238..1245 + IDENT@1238..1245 "isArray" + ARGS_DESC@1245..1250 + L_PAREN@1245..1246 "(" + ARG@1246..1249 + EXPR_VAR@1246..1249 + NAME@1246..1249 + IDENT@1246..1249 "arr" + R_PAREN@1249..1250 ")" + WHITESPACE@1250..1251 " " + AND@1251..1253 "&&" + WHITESPACE@1253..1254 " " + EXPR_UNARY@1254..1272 + NOT@1254..1255 "!" + EXPR_APPLY@1255..1272 + EXPR_INDEX@1255..1267 + EXPR_VAR@1255..1258 + NAME@1255..1258 + IDENT@1255..1258 "std" + DOT@1258..1259 "." + NAME@1259..1267 + IDENT@1259..1267 "isString" + ARGS_DESC@1267..1272 + L_PAREN@1267..1268 "(" + ARG@1268..1271 + EXPR_VAR@1268..1271 + NAME@1268..1271 + IDENT@1268..1271 "arr" + R_PAREN@1271..1272 ")" + WHITESPACE@1272..1273 " " + THEN_KW@1273..1277 "then" + WHITESPACE@1277..1284 "\n " + TRUE_EXPR@1284..1359 + EXPR_ERROR@1284..1359 + ERROR_KW@1284..1289 "error" + WHITESPACE@1289..1290 " " + EXPR_PARENED@1290..1359 + L_PAREN@1290..1291 "(" + EXPR_BINARY@1291..1358 + LHS_EXPR@1291..1342 + EXPR_STRING@1291..1342 + STRING_SINGLE@1291..1342 "'std.mapWithIndex sec ..." + WHITESPACE@1342..1343 " " + PLUS@1343..1344 "+" + WHITESPACE@1344..1345 " " + EXPR_APPLY@1345..1358 + EXPR_INDEX@1345..1353 + EXPR_VAR@1345..1348 + NAME@1345..1348 + IDENT@1345..1348 "std" + DOT@1348..1349 "." + NAME@1349..1353 + IDENT@1349..1353 "type" + ARGS_DESC@1353..1358 + L_PAREN@1353..1354 "(" + ARG@1354..1357 + EXPR_VAR@1354..1357 + NAME@1354..1357 + IDENT@1354..1357 "arr" + R_PAREN@1357..1358 ")" + R_PAREN@1358..1359 ")" + WHITESPACE@1359..1364 "\n " + ELSE_KW@1364..1368 "else" + WHITESPACE@1368..1375 "\n " + FALSE_EXPR@1375..1434 + EXPR_APPLY@1375..1434 + EXPR_INDEX@1375..1388 + EXPR_VAR@1375..1378 + NAME@1375..1378 + IDENT@1375..1378 "std" + DOT@1378..1379 "." + NAME@1379..1388 + IDENT@1379..1388 "makeArray" + ARGS_DESC@1388..1434 + L_PAREN@1388..1389 "(" + ARG@1389..1404 + EXPR_APPLY@1389..1404 + EXPR_INDEX@1389..1399 + EXPR_VAR@1389..1392 + NAME@1389..1392 + IDENT@1389..1392 "std" + DOT@1392..1393 "." + NAME@1393..1399 + IDENT@1393..1399 "length" + ARGS_DESC@1399..1404 + L_PAREN@1399..1400 "(" + ARG@1400..1403 + EXPR_VAR@1400..1403 + NAME@1400..1403 + IDENT@1400..1403 "arr" + R_PAREN@1403..1404 ")" + COMMA@1404..1405 "," + WHITESPACE@1405..1406 " " + ARG@1406..1433 + EXPR_FUNCTION@1406..1433 + FUNCTION_KW@1406..1414 "function" + PARAMS_DESC@1414..1417 + L_PAREN@1414..1415 "(" + PARAM@1415..1416 + DESTRUCT_FULL@1415..1416 + NAME@1415..1416 + IDENT@1415..1416 "i" + R_PAREN@1416..1417 ")" + WHITESPACE@1417..1418 " " + EXPR_APPLY@1418..1433 + EXPR_VAR@1418..1422 + NAME@1418..1422 + IDENT@1418..1422 "func" + ARGS_DESC@1422..1433 + L_PAREN@1422..1423 "(" + ARG@1423..1424 + EXPR_VAR@1423..1424 + NAME@1423..1424 + IDENT@1423..1424 "i" + COMMA@1424..1425 "," + WHITESPACE@1425..1426 " " + ARG@1426..1432 + EXPR_INDEX_EXPR@1426..1432 + LHS_EXPR@1426..1429 + EXPR_VAR@1426..1429 + NAME@1426..1429 + IDENT@1426..1429 "arr" + L_BRACK@1429..1430 "[" + EXPR_VAR@1430..1431 + NAME@1430..1431 + IDENT@1430..1431 "i" + R_BRACK@1431..1432 "]" + R_PAREN@1432..1433 ")" + R_PAREN@1433..1434 ")" + COMMA@1434..1435 "," + WHITESPACE@1435..1439 "\n\n " + MEMBER_FIELD@1439..1767 + FIELD_METHOD@1439..1767 + FIELD_NAME_FIXED@1439..1449 + NAME@1439..1449 + IDENT@1439..1449 "mapWithKey" + PARAMS_DESC@1449..1460 + L_PAREN@1449..1450 "(" + PARAM@1450..1454 + DESTRUCT_FULL@1450..1454 + NAME@1450..1454 + IDENT@1450..1454 "func" + COMMA@1454..1455 "," + WHITESPACE@1455..1456 " " + PARAM@1456..1459 + DESTRUCT_FULL@1456..1459 + NAME@1456..1459 + IDENT@1456..1459 "obj" + R_PAREN@1459..1460 ")" + COLONCOLON@1460..1462 "::" + WHITESPACE@1462..1467 "\n " + EXPR_IF_THEN_ELSE@1467..1767 + IF_KW@1467..1469 "if" + WHITESPACE@1469..1470 " " + EXPR_UNARY@1470..1491 + NOT@1470..1471 "!" + EXPR_APPLY@1471..1491 + EXPR_INDEX@1471..1485 + EXPR_VAR@1471..1474 + NAME@1471..1474 + IDENT@1471..1474 "std" + DOT@1474..1475 "." + NAME@1475..1485 + IDENT@1475..1485 "isFunction" + ARGS_DESC@1485..1491 + L_PAREN@1485..1486 "(" + ARG@1486..1490 + EXPR_VAR@1486..1490 + NAME@1486..1490 + IDENT@1486..1490 "func" + R_PAREN@1490..1491 ")" + WHITESPACE@1491..1492 " " + THEN_KW@1492..1496 "then" + WHITESPACE@1496..1503 "\n " + TRUE_EXPR@1503..1579 + EXPR_ERROR@1503..1579 + ERROR_KW@1503..1508 "error" + WHITESPACE@1508..1509 " " + EXPR_PARENED@1509..1579 + L_PAREN@1509..1510 "(" + EXPR_BINARY@1510..1578 + LHS_EXPR@1510..1561 + EXPR_STRING@1510..1561 + STRING_SINGLE@1510..1561 "'std.mapWithKey first ..." + WHITESPACE@1561..1562 " " + PLUS@1562..1563 "+" + WHITESPACE@1563..1564 " " + EXPR_APPLY@1564..1578 + EXPR_INDEX@1564..1572 + EXPR_VAR@1564..1567 + NAME@1564..1567 + IDENT@1564..1567 "std" + DOT@1567..1568 "." + NAME@1568..1572 + IDENT@1568..1572 "type" + ARGS_DESC@1572..1578 + L_PAREN@1572..1573 "(" + ARG@1573..1577 + EXPR_VAR@1573..1577 + NAME@1573..1577 + IDENT@1573..1577 "func" + R_PAREN@1577..1578 ")" + R_PAREN@1578..1579 ")" + WHITESPACE@1579..1584 "\n " + ELSE_KW@1584..1588 "else" + WHITESPACE@1588..1589 " " + FALSE_EXPR@1589..1767 + EXPR_IF_THEN_ELSE@1589..1767 + IF_KW@1589..1591 "if" + WHITESPACE@1591..1592 " " + EXPR_UNARY@1592..1610 + NOT@1592..1593 "!" + EXPR_APPLY@1593..1610 + EXPR_INDEX@1593..1605 + EXPR_VAR@1593..1596 + NAME@1593..1596 + IDENT@1593..1596 "std" + DOT@1596..1597 "." + NAME@1597..1605 + IDENT@1597..1605 "isObject" + ARGS_DESC@1605..1610 + L_PAREN@1605..1606 "(" + ARG@1606..1609 + EXPR_VAR@1606..1609 + NAME@1606..1609 + IDENT@1606..1609 "obj" + R_PAREN@1609..1610 ")" + WHITESPACE@1610..1611 " " + THEN_KW@1611..1615 "then" + WHITESPACE@1615..1622 "\n " + TRUE_EXPR@1622..1696 + EXPR_ERROR@1622..1696 + ERROR_KW@1622..1627 "error" + WHITESPACE@1627..1628 " " + EXPR_PARENED@1628..1696 + L_PAREN@1628..1629 "(" + EXPR_BINARY@1629..1695 + LHS_EXPR@1629..1679 + EXPR_STRING@1629..1679 + STRING_SINGLE@1629..1679 "'std.mapWithKey secon ..." + WHITESPACE@1679..1680 " " + PLUS@1680..1681 "+" + WHITESPACE@1681..1682 " " + EXPR_APPLY@1682..1695 + EXPR_INDEX@1682..1690 + EXPR_VAR@1682..1685 + NAME@1682..1685 + IDENT@1682..1685 "std" + DOT@1685..1686 "." + NAME@1686..1690 + IDENT@1686..1690 "type" + ARGS_DESC@1690..1695 + L_PAREN@1690..1691 "(" + ARG@1691..1694 + EXPR_VAR@1691..1694 + NAME@1691..1694 + IDENT@1691..1694 "obj" + R_PAREN@1694..1695 ")" + R_PAREN@1695..1696 ")" + WHITESPACE@1696..1701 "\n " + ELSE_KW@1701..1705 "else" + WHITESPACE@1705..1712 "\n " + FALSE_EXPR@1712..1767 + EXPR_OBJECT@1712..1767 + OBJ_BODY_MEMBER_LIST@1712..1767 + L_BRACE@1712..1713 "{" + WHITESPACE@1713..1714 " " + MEMBER_FIELD@1714..1765 + FIELD_NORMAL@1714..1734 + FIELD_NAME_DYNAMIC@1714..1717 + L_BRACK@1714..1715 "[" + EXPR_VAR@1715..1716 + NAME@1715..1716 + IDENT@1715..1716 "k" + R_BRACK@1716..1717 "]" + COLON@1717..1718 ":" + WHITESPACE@1718..1719 " " + EXPR_APPLY@1719..1734 + EXPR_VAR@1719..1723 + NAME@1719..1723 + IDENT@1719..1723 "func" + ARGS_DESC@1723..1734 + L_PAREN@1723..1724 "(" + ARG@1724..1725 + EXPR_VAR@1724..1725 + NAME@1724..1725 + IDENT@1724..1725 "k" + COMMA@1725..1726 "," + WHITESPACE@1726..1727 " " + ARG@1727..1733 + EXPR_INDEX_EXPR@1727..1733 + LHS_EXPR@1727..1730 + EXPR_VAR@1727..1730 + NAME@1727..1730 + IDENT@1727..1730 "obj" + L_BRACK@1730..1731 "[" + EXPR_VAR@1731..1732 + NAME@1731..1732 + IDENT@1731..1732 "k" + R_BRACK@1732..1733 "]" + R_PAREN@1733..1734 ")" + WHITESPACE@1734..1735 " " + FOR_SPEC@1735..1765 + FOR_KW@1735..1738 "for" + WHITESPACE@1738..1739 " " + NAME@1739..1740 + IDENT@1739..1740 "k" + WHITESPACE@1740..1741 " " + IN_KW@1741..1743 "in" + WHITESPACE@1743..1744 " " + EXPR_APPLY@1744..1765 + EXPR_INDEX@1744..1760 + EXPR_VAR@1744..1747 + NAME@1744..1747 + IDENT@1744..1747 "std" + DOT@1747..1748 "." + NAME@1748..1760 + IDENT@1748..1760 "objectFields" + ARGS_DESC@1760..1765 + L_PAREN@1760..1761 "(" + ARG@1761..1764 + EXPR_VAR@1761..1764 + NAME@1761..1764 + IDENT@1761..1764 "obj" + R_PAREN@1764..1765 ")" + WHITESPACE@1765..1766 " " + R_BRACE@1766..1767 "}" + COMMA@1767..1768 "," + WHITESPACE@1768..1772 "\n\n " + MEMBER_FIELD@1772..1815 + FIELD_METHOD@1772..1815 + FIELD_NAME_FIXED@1772..1777 + NAME@1772..1777 + IDENT@1772..1777 "lines" + PARAMS_DESC@1777..1782 + L_PAREN@1777..1778 "(" + PARAM@1778..1781 + DESTRUCT_FULL@1778..1781 + NAME@1778..1781 + IDENT@1778..1781 "arr" + R_PAREN@1781..1782 ")" + COLONCOLON@1782..1784 "::" + WHITESPACE@1784..1789 "\n " + EXPR_APPLY@1789..1815 + EXPR_INDEX@1789..1797 + EXPR_VAR@1789..1792 + NAME@1789..1792 + IDENT@1789..1792 "std" + DOT@1792..1793 "." + NAME@1793..1797 + IDENT@1793..1797 "join" + ARGS_DESC@1797..1815 + L_PAREN@1797..1798 "(" + ARG@1798..1802 + EXPR_STRING@1798..1802 + STRING_SINGLE@1798..1802 "'\\n'" + COMMA@1802..1803 "," + WHITESPACE@1803..1804 " " + ARG@1804..1814 + EXPR_BINARY@1804..1814 + LHS_EXPR@1804..1807 + EXPR_VAR@1804..1807 + NAME@1804..1807 + IDENT@1804..1807 "arr" + WHITESPACE@1807..1808 " " + PLUS@1808..1809 "+" + WHITESPACE@1809..1810 " " + EXPR_ARRAY@1810..1814 + L_BRACK@1810..1811 "[" + EXPR_STRING@1811..1813 + STRING_SINGLE@1811..1813 "''" + R_BRACK@1813..1814 "]" + R_PAREN@1814..1815 ")" + COMMA@1815..1816 "," + WHITESPACE@1816..1820 "\n\n " + MEMBER_FIELD@1820..2032 + FIELD_METHOD@1820..2032 + FIELD_NAME_FIXED@1820..1828 + NAME@1820..1828 + IDENT@1820..1828 "deepJoin" + PARAMS_DESC@1828..1833 + L_PAREN@1828..1829 "(" + PARAM@1829..1832 + DESTRUCT_FULL@1829..1832 + NAME@1829..1832 + IDENT@1829..1832 "arr" + R_PAREN@1832..1833 ")" + COLONCOLON@1833..1835 "::" + WHITESPACE@1835..1840 "\n " + EXPR_IF_THEN_ELSE@1840..2032 + IF_KW@1840..1842 "if" + WHITESPACE@1842..1843 " " + EXPR_APPLY@1843..1860 + EXPR_INDEX@1843..1855 + EXPR_VAR@1843..1846 + NAME@1843..1846 + IDENT@1843..1846 "std" + DOT@1846..1847 "." + NAME@1847..1855 + IDENT@1847..1855 "isString" + ARGS_DESC@1855..1860 + L_PAREN@1855..1856 "(" + ARG@1856..1859 + EXPR_VAR@1856..1859 + NAME@1856..1859 + IDENT@1856..1859 "arr" + R_PAREN@1859..1860 ")" + WHITESPACE@1860..1861 " " + THEN_KW@1861..1865 "then" + WHITESPACE@1865..1872 "\n " + TRUE_EXPR@1872..1875 + EXPR_VAR@1872..1875 + NAME@1872..1875 + IDENT@1872..1875 "arr" + WHITESPACE@1875..1880 "\n " + ELSE_KW@1880..1884 "else" + WHITESPACE@1884..1885 " " + FALSE_EXPR@1885..2032 + EXPR_IF_THEN_ELSE@1885..2032 + IF_KW@1885..1887 "if" + WHITESPACE@1887..1888 " " + EXPR_APPLY@1888..1904 + EXPR_INDEX@1888..1899 + EXPR_VAR@1888..1891 + NAME@1888..1891 + IDENT@1888..1891 "std" + DOT@1891..1892 "." + NAME@1892..1899 + IDENT@1892..1899 "isArray" + ARGS_DESC@1899..1904 + L_PAREN@1899..1900 "(" + ARG@1900..1903 + EXPR_VAR@1900..1903 + NAME@1900..1903 + IDENT@1900..1903 "arr" + R_PAREN@1903..1904 ")" + WHITESPACE@1904..1905 " " + THEN_KW@1905..1909 "then" + WHITESPACE@1909..1916 "\n " + TRUE_EXPR@1916..1960 + EXPR_APPLY@1916..1960 + EXPR_INDEX@1916..1924 + EXPR_VAR@1916..1919 + NAME@1916..1919 + IDENT@1916..1919 "std" + DOT@1919..1920 "." + NAME@1920..1924 + IDENT@1920..1924 "join" + ARGS_DESC@1924..1960 + L_PAREN@1924..1925 "(" + ARG@1925..1927 + EXPR_STRING@1925..1927 + STRING_SINGLE@1925..1927 "''" + COMMA@1927..1928 "," + WHITESPACE@1928..1929 " " + ARG@1929..1959 + EXPR_ARRAY_COMP@1929..1959 + L_BRACK@1929..1930 "[" + EXPR_APPLY@1930..1945 + EXPR_INDEX@1930..1942 + EXPR_VAR@1930..1933 + NAME@1930..1933 + IDENT@1930..1933 "std" + DOT@1933..1934 "." + NAME@1934..1942 + IDENT@1934..1942 "deepJoin" + ARGS_DESC@1942..1945 + L_PAREN@1942..1943 "(" + ARG@1943..1944 + EXPR_VAR@1943..1944 + NAME@1943..1944 + IDENT@1943..1944 "x" + R_PAREN@1944..1945 ")" + WHITESPACE@1945..1946 " " + FOR_SPEC@1946..1958 + FOR_KW@1946..1949 "for" + WHITESPACE@1949..1950 " " + NAME@1950..1951 + IDENT@1950..1951 "x" + WHITESPACE@1951..1952 " " + IN_KW@1952..1954 "in" + WHITESPACE@1954..1955 " " + EXPR_VAR@1955..1958 + NAME@1955..1958 + IDENT@1955..1958 "arr" + R_BRACK@1958..1959 "]" + R_PAREN@1959..1960 ")" + WHITESPACE@1960..1965 "\n " + ELSE_KW@1965..1969 "else" + WHITESPACE@1969..1976 "\n " + FALSE_EXPR@1976..2032 + EXPR_ERROR@1976..2032 + ERROR_KW@1976..1981 "error" + WHITESPACE@1981..1982 " " + EXPR_BINARY@1982..2032 + LHS_EXPR@1982..2016 + EXPR_STRING@1982..2016 + STRING_SINGLE@1982..2016 "'Expected string or a ..." + WHITESPACE@2016..2017 " " + MODULO@2017..2018 "%" + WHITESPACE@2018..2019 " " + EXPR_APPLY@2019..2032 + EXPR_INDEX@2019..2027 + EXPR_VAR@2019..2022 + NAME@2019..2022 + IDENT@2019..2022 "std" + DOT@2022..2023 "." + NAME@2023..2027 + IDENT@2023..2027 "type" + ARGS_DESC@2027..2032 + L_PAREN@2027..2028 "(" + ARG@2028..2031 + EXPR_VAR@2028..2031 + NAME@2028..2031 + IDENT@2028..2031 "arr" + R_PAREN@2031..2032 ")" + COMMA@2032..2033 "," + WHITESPACE@2033..2037 "\n\n " + MEMBER_FIELD@2037..2512 + FIELD_METHOD@2037..2512 + FIELD_NAME_FIXED@2037..2046 + NAME@2037..2046 + IDENT@2037..2046 "filterMap" + PARAMS_DESC@2046..2074 + L_PAREN@2046..2047 "(" + PARAM@2047..2058 + DESTRUCT_FULL@2047..2058 + NAME@2047..2058 + IDENT@2047..2058 "filter_func" + COMMA@2058..2059 "," + WHITESPACE@2059..2060 " " + PARAM@2060..2068 + DESTRUCT_FULL@2060..2068 + NAME@2060..2068 + IDENT@2060..2068 "map_func" + COMMA@2068..2069 "," + WHITESPACE@2069..2070 " " + PARAM@2070..2073 + DESTRUCT_FULL@2070..2073 + NAME@2070..2073 + IDENT@2070..2073 "arr" + R_PAREN@2073..2074 ")" + COLONCOLON@2074..2076 "::" + WHITESPACE@2076..2081 "\n " + EXPR_IF_THEN_ELSE@2081..2512 + IF_KW@2081..2083 "if" + WHITESPACE@2083..2084 " " + EXPR_UNARY@2084..2112 + NOT@2084..2085 "!" + EXPR_APPLY@2085..2112 + EXPR_INDEX@2085..2099 + EXPR_VAR@2085..2088 + NAME@2085..2088 + IDENT@2085..2088 "std" + DOT@2088..2089 "." + NAME@2089..2099 + IDENT@2089..2099 "isFunction" + ARGS_DESC@2099..2112 + L_PAREN@2099..2100 "(" + ARG@2100..2111 + EXPR_VAR@2100..2111 + NAME@2100..2111 + IDENT@2100..2111 "filter_func" + R_PAREN@2111..2112 ")" + WHITESPACE@2112..2113 " " + THEN_KW@2113..2117 "then" + WHITESPACE@2117..2124 "\n " + TRUE_EXPR@2124..2206 + EXPR_ERROR@2124..2206 + ERROR_KW@2124..2129 "error" + WHITESPACE@2129..2130 " " + EXPR_PARENED@2130..2206 + L_PAREN@2130..2131 "(" + EXPR_BINARY@2131..2205 + LHS_EXPR@2131..2181 + EXPR_STRING@2131..2181 + STRING_SINGLE@2131..2181 "'std.filterMap first ..." + WHITESPACE@2181..2182 " " + PLUS@2182..2183 "+" + WHITESPACE@2183..2184 " " + EXPR_APPLY@2184..2205 + EXPR_INDEX@2184..2192 + EXPR_VAR@2184..2187 + NAME@2184..2187 + IDENT@2184..2187 "std" + DOT@2187..2188 "." + NAME@2188..2192 + IDENT@2188..2192 "type" + ARGS_DESC@2192..2205 + L_PAREN@2192..2193 "(" + ARG@2193..2204 + EXPR_VAR@2193..2204 + NAME@2193..2204 + IDENT@2193..2204 "filter_func" + R_PAREN@2204..2205 ")" + R_PAREN@2205..2206 ")" + WHITESPACE@2206..2211 "\n " + ELSE_KW@2211..2215 "else" + WHITESPACE@2215..2216 " " + FALSE_EXPR@2216..2512 + EXPR_IF_THEN_ELSE@2216..2512 + IF_KW@2216..2218 "if" + WHITESPACE@2218..2219 " " + EXPR_UNARY@2219..2244 + NOT@2219..2220 "!" + EXPR_APPLY@2220..2244 + EXPR_INDEX@2220..2234 + EXPR_VAR@2220..2223 + NAME@2220..2223 + IDENT@2220..2223 "std" + DOT@2223..2224 "." + NAME@2224..2234 + IDENT@2224..2234 "isFunction" + ARGS_DESC@2234..2244 + L_PAREN@2234..2235 "(" + ARG@2235..2243 + EXPR_VAR@2235..2243 + NAME@2235..2243 + IDENT@2235..2243 "map_func" + R_PAREN@2243..2244 ")" + WHITESPACE@2244..2245 " " + THEN_KW@2245..2249 "then" + WHITESPACE@2249..2256 "\n " + TRUE_EXPR@2256..2336 + EXPR_ERROR@2256..2336 + ERROR_KW@2256..2261 "error" + WHITESPACE@2261..2262 " " + EXPR_PARENED@2262..2336 + L_PAREN@2262..2263 "(" + EXPR_BINARY@2263..2335 + LHS_EXPR@2263..2314 + EXPR_STRING@2263..2314 + STRING_SINGLE@2263..2314 "'std.filterMap second ..." + WHITESPACE@2314..2315 " " + PLUS@2315..2316 "+" + WHITESPACE@2316..2317 " " + EXPR_APPLY@2317..2335 + EXPR_INDEX@2317..2325 + EXPR_VAR@2317..2320 + NAME@2317..2320 + IDENT@2317..2320 "std" + DOT@2320..2321 "." + NAME@2321..2325 + IDENT@2321..2325 "type" + ARGS_DESC@2325..2335 + L_PAREN@2325..2326 "(" + ARG@2326..2334 + EXPR_VAR@2326..2334 + NAME@2326..2334 + IDENT@2326..2334 "map_func" + R_PAREN@2334..2335 ")" + R_PAREN@2335..2336 ")" + WHITESPACE@2336..2341 "\n " + ELSE_KW@2341..2345 "else" + WHITESPACE@2345..2346 " " + FALSE_EXPR@2346..2512 + EXPR_IF_THEN_ELSE@2346..2512 + IF_KW@2346..2348 "if" + WHITESPACE@2348..2349 " " + EXPR_UNARY@2349..2366 + NOT@2349..2350 "!" + EXPR_APPLY@2350..2366 + EXPR_INDEX@2350..2361 + EXPR_VAR@2350..2353 + NAME@2350..2353 + IDENT@2350..2353 "std" + DOT@2353..2354 "." + NAME@2354..2361 + IDENT@2354..2361 "isArray" + ARGS_DESC@2361..2366 + L_PAREN@2361..2362 "(" + ARG@2362..2365 + EXPR_VAR@2362..2365 + NAME@2362..2365 + IDENT@2362..2365 "arr" + R_PAREN@2365..2366 ")" + WHITESPACE@2366..2367 " " + THEN_KW@2367..2371 "then" + WHITESPACE@2371..2378 "\n " + TRUE_EXPR@2378..2449 + EXPR_ERROR@2378..2449 + ERROR_KW@2378..2383 "error" + WHITESPACE@2383..2384 " " + EXPR_PARENED@2384..2449 + L_PAREN@2384..2385 "(" + EXPR_BINARY@2385..2448 + LHS_EXPR@2385..2432 + EXPR_STRING@2385..2432 + STRING_SINGLE@2385..2432 "'std.filterMap third ..." + WHITESPACE@2432..2433 " " + PLUS@2433..2434 "+" + WHITESPACE@2434..2435 " " + EXPR_APPLY@2435..2448 + EXPR_INDEX@2435..2443 + EXPR_VAR@2435..2438 + NAME@2435..2438 + IDENT@2435..2438 "std" + DOT@2438..2439 "." + NAME@2439..2443 + IDENT@2439..2443 "type" + ARGS_DESC@2443..2448 + L_PAREN@2443..2444 "(" + ARG@2444..2447 + EXPR_VAR@2444..2447 + NAME@2444..2447 + IDENT@2444..2447 "arr" + R_PAREN@2447..2448 ")" + R_PAREN@2448..2449 ")" + WHITESPACE@2449..2454 "\n " + ELSE_KW@2454..2458 "else" + WHITESPACE@2458..2465 "\n " + FALSE_EXPR@2465..2512 + EXPR_APPLY@2465..2512 + EXPR_INDEX@2465..2472 + EXPR_VAR@2465..2468 + NAME@2465..2468 + IDENT@2465..2468 "std" + DOT@2468..2469 "." + NAME@2469..2472 + IDENT@2469..2472 "map" + ARGS_DESC@2472..2512 + L_PAREN@2472..2473 "(" + ARG@2473..2481 + EXPR_VAR@2473..2481 + NAME@2473..2481 + IDENT@2473..2481 "map_func" + COMMA@2481..2482 "," + WHITESPACE@2482..2483 " " + ARG@2483..2511 + EXPR_APPLY@2483..2511 + EXPR_INDEX@2483..2493 + EXPR_VAR@2483..2486 + NAME@2483..2486 + IDENT@2483..2486 "std" + DOT@2486..2487 "." + NAME@2487..2493 + IDENT@2487..2493 "filter" + ARGS_DESC@2493..2511 + L_PAREN@2493..2494 "(" + ARG@2494..2505 + EXPR_VAR@2494..2505 + NAME@2494..2505 + IDENT@2494..2505 "filter_func" + COMMA@2505..2506 "," + WHITESPACE@2506..2507 " " + ARG@2507..2510 + EXPR_VAR@2507..2510 + NAME@2507..2510 + IDENT@2507..2510 "arr" + R_PAREN@2510..2511 ")" + R_PAREN@2511..2512 ")" + COMMA@2512..2513 "," + WHITESPACE@2513..2517 "\n\n " + MEMBER_FIELD@2517..2625 + FIELD_METHOD@2517..2625 + FIELD_NAME_FIXED@2517..2528 + NAME@2517..2528 + IDENT@2517..2528 "assertEqual" + PARAMS_DESC@2528..2534 + L_PAREN@2528..2529 "(" + PARAM@2529..2530 + DESTRUCT_FULL@2529..2530 + NAME@2529..2530 + IDENT@2529..2530 "a" + COMMA@2530..2531 "," + WHITESPACE@2531..2532 " " + PARAM@2532..2533 + DESTRUCT_FULL@2532..2533 + NAME@2532..2533 + IDENT@2532..2533 "b" + R_PAREN@2533..2534 ")" + COLONCOLON@2534..2536 "::" + WHITESPACE@2536..2541 "\n " + EXPR_IF_THEN_ELSE@2541..2625 + IF_KW@2541..2543 "if" + WHITESPACE@2543..2544 " " + EXPR_BINARY@2544..2550 + LHS_EXPR@2544..2545 + EXPR_VAR@2544..2545 + NAME@2544..2545 + IDENT@2544..2545 "a" + WHITESPACE@2545..2546 " " + EQ@2546..2548 "==" + WHITESPACE@2548..2549 " " + EXPR_VAR@2549..2550 + NAME@2549..2550 + IDENT@2549..2550 "b" + WHITESPACE@2550..2551 " " + THEN_KW@2551..2555 "then" + WHITESPACE@2555..2562 "\n " + TRUE_EXPR@2562..2566 + EXPR_LITERAL@2562..2566 + TRUE_KW@2562..2566 "true" + WHITESPACE@2566..2571 "\n " + ELSE_KW@2571..2575 "else" + WHITESPACE@2575..2582 "\n " + FALSE_EXPR@2582..2625 + EXPR_ERROR@2582..2625 + ERROR_KW@2582..2587 "error" + WHITESPACE@2587..2588 " " + EXPR_BINARY@2588..2625 + LHS_EXPR@2588..2621 + EXPR_BINARY@2588..2621 + LHS_EXPR@2588..2612 + EXPR_BINARY@2588..2612 + LHS_EXPR@2588..2608 + EXPR_STRING@2588..2608 + STRING_SINGLE@2588..2608 "'Assertion failed. '" + WHITESPACE@2608..2609 " " + PLUS@2609..2610 "+" + WHITESPACE@2610..2611 " " + EXPR_VAR@2611..2612 + NAME@2611..2612 + IDENT@2611..2612 "a" + WHITESPACE@2612..2613 " " + PLUS@2613..2614 "+" + WHITESPACE@2614..2615 " " + EXPR_STRING@2615..2621 + STRING_SINGLE@2615..2621 "' != '" + WHITESPACE@2621..2622 " " + PLUS@2622..2623 "+" + WHITESPACE@2623..2624 " " + EXPR_VAR@2624..2625 + NAME@2624..2625 + IDENT@2624..2625 "b" + COMMA@2625..2626 "," + WHITESPACE@2626..2630 "\n\n " + MEMBER_FIELD@2630..2732 + FIELD_METHOD@2630..2732 + FIELD_NAME_FIXED@2630..2635 + NAME@2630..2635 + IDENT@2630..2635 "clamp" + PARAMS_DESC@2635..2654 + L_PAREN@2635..2636 "(" + PARAM@2636..2637 + DESTRUCT_FULL@2636..2637 + NAME@2636..2637 + IDENT@2636..2637 "x" + COMMA@2637..2638 "," + WHITESPACE@2638..2639 " " + PARAM@2639..2645 + DESTRUCT_FULL@2639..2645 + NAME@2639..2645 + IDENT@2639..2645 "minVal" + COMMA@2645..2646 "," + WHITESPACE@2646..2647 " " + PARAM@2647..2653 + DESTRUCT_FULL@2647..2653 + NAME@2647..2653 + IDENT@2647..2653 "maxVal" + R_PAREN@2653..2654 ")" + COLONCOLON@2654..2656 "::" + WHITESPACE@2656..2661 "\n " + EXPR_IF_THEN_ELSE@2661..2732 + IF_KW@2661..2663 "if" + WHITESPACE@2663..2664 " " + EXPR_BINARY@2664..2674 + LHS_EXPR@2664..2665 + EXPR_VAR@2664..2665 + NAME@2664..2665 + IDENT@2664..2665 "x" + WHITESPACE@2665..2666 " " + LT@2666..2667 "<" + WHITESPACE@2667..2668 " " + EXPR_VAR@2668..2674 + NAME@2668..2674 + IDENT@2668..2674 "minVal" + WHITESPACE@2674..2675 " " + THEN_KW@2675..2679 "then" + WHITESPACE@2679..2680 " " + TRUE_EXPR@2680..2686 + EXPR_VAR@2680..2686 + NAME@2680..2686 + IDENT@2680..2686 "minVal" + WHITESPACE@2686..2691 "\n " + ELSE_KW@2691..2695 "else" + WHITESPACE@2695..2696 " " + FALSE_EXPR@2696..2732 + EXPR_IF_THEN_ELSE@2696..2732 + IF_KW@2696..2698 "if" + WHITESPACE@2698..2699 " " + EXPR_BINARY@2699..2709 + LHS_EXPR@2699..2700 + EXPR_VAR@2699..2700 + NAME@2699..2700 + IDENT@2699..2700 "x" + WHITESPACE@2700..2701 " " + GT@2701..2702 ">" + WHITESPACE@2702..2703 " " + EXPR_VAR@2703..2709 + NAME@2703..2709 + IDENT@2703..2709 "maxVal" + WHITESPACE@2709..2710 " " + THEN_KW@2710..2714 "then" + WHITESPACE@2714..2715 " " + TRUE_EXPR@2715..2721 + EXPR_VAR@2715..2721 + NAME@2715..2721 + IDENT@2715..2721 "maxVal" + WHITESPACE@2721..2726 "\n " + ELSE_KW@2726..2730 "else" + WHITESPACE@2730..2731 " " + FALSE_EXPR@2731..2732 + EXPR_VAR@2731..2732 + NAME@2731..2732 + IDENT@2731..2732 "x" + COMMA@2732..2733 "," + WHITESPACE@2733..2737 "\n\n " + MEMBER_FIELD@2737..2804 + FIELD_METHOD@2737..2804 + FIELD_NAME_FIXED@2737..2750 + NAME@2737..2750 + IDENT@2737..2750 "flattenArrays" + PARAMS_DESC@2750..2756 + L_PAREN@2750..2751 "(" + PARAM@2751..2755 + DESTRUCT_FULL@2751..2755 + NAME@2751..2755 + IDENT@2751..2755 "arrs" + R_PAREN@2755..2756 ")" + COLONCOLON@2756..2758 "::" + WHITESPACE@2758..2763 "\n " + EXPR_APPLY@2763..2804 + EXPR_INDEX@2763..2772 + EXPR_VAR@2763..2766 + NAME@2763..2766 + IDENT@2763..2766 "std" + DOT@2766..2767 "." + NAME@2767..2772 + IDENT@2767..2772 "foldl" + ARGS_DESC@2772..2804 + L_PAREN@2772..2773 "(" + ARG@2773..2793 + EXPR_FUNCTION@2773..2793 + FUNCTION_KW@2773..2781 "function" + PARAMS_DESC@2781..2787 + L_PAREN@2781..2782 "(" + PARAM@2782..2783 + DESTRUCT_FULL@2782..2783 + NAME@2782..2783 + IDENT@2782..2783 "a" + COMMA@2783..2784 "," + WHITESPACE@2784..2785 " " + PARAM@2785..2786 + DESTRUCT_FULL@2785..2786 + NAME@2785..2786 + IDENT@2785..2786 "b" + R_PAREN@2786..2787 ")" + WHITESPACE@2787..2788 " " + EXPR_BINARY@2788..2793 + LHS_EXPR@2788..2789 + EXPR_VAR@2788..2789 + NAME@2788..2789 + IDENT@2788..2789 "a" + WHITESPACE@2789..2790 " " + PLUS@2790..2791 "+" + WHITESPACE@2791..2792 " " + EXPR_VAR@2792..2793 + NAME@2792..2793 + IDENT@2792..2793 "b" + COMMA@2793..2794 "," + WHITESPACE@2794..2795 " " + ARG@2795..2799 + EXPR_VAR@2795..2799 + NAME@2795..2799 + IDENT@2795..2799 "arrs" + COMMA@2799..2800 "," + WHITESPACE@2800..2801 " " + ARG@2801..2803 + EXPR_ARRAY@2801..2803 + L_BRACK@2801..2802 "[" + R_BRACK@2802..2803 "]" + R_PAREN@2803..2804 ")" + COMMA@2804..2805 "," + WHITESPACE@2805..2809 "\n\n " + MEMBER_FIELD@2809..3495 + FIELD_METHOD@2809..3495 + FIELD_NAME_FIXED@2809..2820 + NAME@2809..2820 + IDENT@2809..2820 "manifestIni" + PARAMS_DESC@2820..2825 + L_PAREN@2820..2821 "(" + PARAM@2821..2824 + DESTRUCT_FULL@2821..2824 + NAME@2821..2824 + IDENT@2821..2824 "ini" + R_PAREN@2824..2825 ")" + COLONCOLON@2825..2827 "::" + WHITESPACE@2827..2832 "\n " + EXPR_LOCAL@2832..3495 + LOCAL_KW@2832..2837 "local" + WHITESPACE@2837..2838 " " + BIND_FUNCTION@2838..3135 + NAME@2838..2848 + IDENT@2838..2848 "body_lines" + PARAMS_DESC@2848..2854 + L_PAREN@2848..2849 "(" + PARAM@2849..2853 + DESTRUCT_FULL@2849..2853 + NAME@2849..2853 + IDENT@2849..2853 "body" + R_PAREN@2853..2854 ")" + WHITESPACE@2854..2855 " " + ASSIGN@2855..2856 "=" + WHITESPACE@2856..2863 "\n " + EXPR_APPLY@2863..3135 + EXPR_INDEX@2863..2871 + EXPR_VAR@2863..2866 + NAME@2863..2866 + IDENT@2863..2866 "std" + DOT@2866..2867 "." + NAME@2867..2871 + IDENT@2867..2871 "join" + ARGS_DESC@2871..3135 + L_PAREN@2871..2872 "(" + ARG@2872..2874 + EXPR_ARRAY@2872..2874 + L_BRACK@2872..2873 "[" + R_BRACK@2873..2874 "]" + COMMA@2874..2875 "," + WHITESPACE@2875..2876 " " + ARG@2876..3134 + EXPR_ARRAY_COMP@2876..3134 + L_BRACK@2876..2877 "[" + WHITESPACE@2877..2886 "\n " + EXPR_LOCAL@2886..3085 + LOCAL_KW@2886..2891 "local" + WHITESPACE@2891..2892 " " + BIND_DESTRUCT@2892..2917 + DESTRUCT_FULL@2892..2907 + NAME@2892..2907 + IDENT@2892..2907 "value_or_values" + WHITESPACE@2907..2908 " " + ASSIGN@2908..2909 "=" + WHITESPACE@2909..2910 " " + EXPR_INDEX_EXPR@2910..2917 + LHS_EXPR@2910..2914 + EXPR_VAR@2910..2914 + NAME@2910..2914 + IDENT@2910..2914 "body" + L_BRACK@2914..2915 "[" + EXPR_VAR@2915..2916 + NAME@2915..2916 + IDENT@2915..2916 "k" + R_BRACK@2916..2917 "]" + SEMI@2917..2918 ";" + WHITESPACE@2918..2927 "\n " + EXPR_IF_THEN_ELSE@2927..3085 + IF_KW@2927..2929 "if" + WHITESPACE@2929..2930 " " + EXPR_APPLY@2930..2958 + EXPR_INDEX@2930..2941 + EXPR_VAR@2930..2933 + NAME@2930..2933 + IDENT@2930..2933 "std" + DOT@2933..2934 "." + NAME@2934..2941 + IDENT@2934..2941 "isArray" + ARGS_DESC@2941..2958 + L_PAREN@2941..2942 "(" + ARG@2942..2957 + EXPR_VAR@2942..2957 + NAME@2942..2957 + IDENT@2942..2957 "value_or_values" + R_PAREN@2957..2958 ")" + WHITESPACE@2958..2959 " " + THEN_KW@2959..2963 "then" + WHITESPACE@2963..2974 "\n " + TRUE_EXPR@2974..3027 + EXPR_ARRAY_COMP@2974..3027 + L_BRACK@2974..2975 "[" + EXPR_BINARY@2975..2997 + LHS_EXPR@2975..2984 + EXPR_STRING@2975..2984 + STRING_SINGLE@2975..2984 "'%s = %s'" + WHITESPACE@2984..2985 " " + MODULO@2985..2986 "%" + WHITESPACE@2986..2987 " " + EXPR_ARRAY@2987..2997 + L_BRACK@2987..2988 "[" + EXPR_VAR@2988..2989 + NAME@2988..2989 + IDENT@2988..2989 "k" + COMMA@2989..2990 "," WHITESPACE@2990..2991 " " - MODULO@2991..2992 "%" - WHITESPACE@2992..2993 " " - EXPR_ARRAY@2993..3004 - L_BRACK@2993..2994 "[" - EXPR_VAR@2994..2997 - NAME@2994..2997 - IDENT@2994..2997 "str" - COMMA@2997..2998 "," - WHITESPACE@2998..2999 " " - EXPR_VAR@2999..3003 - NAME@2999..3003 - IDENT@2999..3003 "base" - R_BRACK@3003..3004 "]" - SEMI@3004..3005 ";" - WHITESPACE@3005..3012 "\n " - EXPR_BINARY@3012..3036 - LHS_EXPR@3012..3028 - EXPR_BINARY@3012..3028 - LHS_EXPR@3012..3016 - EXPR_VAR@3012..3016 - NAME@3012..3016 - IDENT@3012..3016 "base" - WHITESPACE@3016..3017 " " - MUL@3017..3018 "*" - WHITESPACE@3018..3019 " " - EXPR_VAR@3019..3028 - NAME@3019..3028 - IDENT@3019..3028 "aggregate" - WHITESPACE@3028..3029 " " - PLUS@3029..3030 "+" - WHITESPACE@3030..3031 " " - EXPR_VAR@3031..3036 - NAME@3031..3036 - IDENT@3031..3036 "digit" - SEMI@3036..3037 ";" - WHITESPACE@3037..3042 "\n " - EXPR_APPLY@3042..3086 - EXPR_INDEX@3042..3051 - EXPR_VAR@3042..3045 - NAME@3042..3045 - IDENT@3042..3045 "std" - DOT@3045..3046 "." - NAME@3046..3051 - IDENT@3046..3051 "foldl" - ARGS_DESC@3051..3086 - L_PAREN@3051..3052 "(" - ARG@3052..3060 - EXPR_VAR@3052..3060 - NAME@3052..3060 - IDENT@3052..3060 "addDigit" - COMMA@3060..3061 "," - WHITESPACE@3061..3062 " " - ARG@3062..3082 - EXPR_APPLY@3062..3082 - EXPR_INDEX@3062..3077 - EXPR_VAR@3062..3065 - NAME@3062..3065 - IDENT@3062..3065 "std" - DOT@3065..3066 "." - NAME@3066..3077 - IDENT@3066..3077 "stringChars" - ARGS_DESC@3077..3082 - L_PAREN@3077..3078 "(" - ARG@3078..3081 - EXPR_VAR@3078..3081 - NAME@3078..3081 - IDENT@3078..3081 "str" - R_PAREN@3081..3082 ")" - COMMA@3082..3083 "," - WHITESPACE@3083..3084 " " - ARG@3084..3085 - EXPR_NUMBER@3084..3085 - FLOAT@3084..3085 "0" - R_PAREN@3085..3086 ")" - COMMA@3086..3087 "," - WHITESPACE@3087..3091 "\n\n " - MEMBER_FIELD@3091..3347 - FIELD_METHOD@3091..3347 - FIELD_NAME_FIXED@3091..3099 - NAME@3091..3099 - IDENT@3091..3099 "parseInt" - PARAMS_DESC@3099..3104 - L_PAREN@3099..3100 "(" - PARAM@3100..3103 - DESTRUCT_FULL@3100..3103 - NAME@3100..3103 - IDENT@3100..3103 "str" - R_PAREN@3103..3104 ")" - COLONCOLON@3104..3106 "::" - WHITESPACE@3106..3111 "\n " - EXPR_ASSERT@3111..3347 - ASSERTION@3111..3177 - ASSERT_KW@3111..3117 "assert" - WHITESPACE@3117..3118 " " - LHS_EXPR@3118..3135 - EXPR_APPLY@3118..3135 - EXPR_INDEX@3118..3130 - EXPR_VAR@3118..3121 - NAME@3118..3121 - IDENT@3118..3121 "std" - DOT@3121..3122 "." - NAME@3122..3130 - IDENT@3122..3130 "isString" - ARGS_DESC@3130..3135 - L_PAREN@3130..3131 "(" - ARG@3131..3134 - EXPR_VAR@3131..3134 - NAME@3131..3134 - IDENT@3131..3134 "str" - R_PAREN@3134..3135 ")" - WHITESPACE@3135..3136 " " - COLON@3136..3137 ":" - WHITESPACE@3137..3138 " " - EXPR_BINARY@3138..3177 - LHS_EXPR@3138..3161 - EXPR_STRING@3138..3161 - STRING_SINGLE@3138..3161 "'Expected string, got '" - WHITESPACE@3161..3162 " " - PLUS@3162..3163 "+" - WHITESPACE@3163..3164 " " - EXPR_APPLY@3164..3177 - EXPR_INDEX@3164..3172 - EXPR_VAR@3164..3167 - NAME@3164..3167 - IDENT@3164..3167 "std" - DOT@3167..3168 "." - NAME@3168..3172 - IDENT@3168..3172 "type" - ARGS_DESC@3172..3177 - L_PAREN@3172..3173 "(" - ARG@3173..3176 - EXPR_VAR@3173..3176 - NAME@3173..3176 - IDENT@3173..3176 "str" - R_PAREN@3176..3177 ")" - SEMI@3177..3178 ";" - WHITESPACE@3178..3183 "\n " - EXPR_ASSERT@3183..3347 - ASSERTION@3183..3256 - ASSERT_KW@3183..3189 "assert" - WHITESPACE@3189..3190 " " - LHS_EXPR@3190..3223 - EXPR_BINARY@3190..3223 - LHS_EXPR@3190..3209 - EXPR_BINARY@3190..3209 - LHS_EXPR@3190..3205 - EXPR_APPLY@3190..3205 - EXPR_INDEX@3190..3200 - EXPR_VAR@3190..3193 - NAME@3190..3193 - IDENT@3190..3193 "std" - DOT@3193..3194 "." - NAME@3194..3200 - IDENT@3194..3200 "length" - ARGS_DESC@3200..3205 - L_PAREN@3200..3201 "(" - ARG@3201..3204 - EXPR_VAR@3201..3204 - NAME@3201..3204 - IDENT@3201..3204 "str" - R_PAREN@3204..3205 ")" - WHITESPACE@3205..3206 " " - GT@3206..3207 ">" - WHITESPACE@3207..3208 " " - EXPR_NUMBER@3208..3209 - FLOAT@3208..3209 "0" - WHITESPACE@3209..3210 " " - AND@3210..3212 "&&" - WHITESPACE@3212..3213 " " - EXPR_BINARY@3213..3223 - LHS_EXPR@3213..3216 - EXPR_VAR@3213..3216 - NAME@3213..3216 - IDENT@3213..3216 "str" - WHITESPACE@3216..3217 " " - NE@3217..3219 "!=" - WHITESPACE@3219..3220 " " - EXPR_STRING@3220..3223 - STRING_SINGLE@3220..3223 "'-'" - WHITESPACE@3223..3224 " " - COLON@3224..3225 ":" - WHITESPACE@3225..3226 " " - EXPR_BINARY@3226..3256 - LHS_EXPR@3226..3248 - EXPR_STRING@3226..3248 - STRING_SINGLE@3226..3248 "'Not an integer: \"%s\"'" - WHITESPACE@3248..3249 " " - MODULO@3249..3250 "%" - WHITESPACE@3250..3251 " " - EXPR_ARRAY@3251..3256 - L_BRACK@3251..3252 "[" - EXPR_VAR@3252..3255 - NAME@3252..3255 - IDENT@3252..3255 "str" - R_BRACK@3255..3256 "]" - SEMI@3256..3257 ";" - WHITESPACE@3257..3262 "\n " - EXPR_IF_THEN_ELSE@3262..3347 - IF_KW@3262..3264 "if" - WHITESPACE@3264..3265 " " - EXPR_BINARY@3265..3278 - LHS_EXPR@3265..3271 - EXPR_INDEX_EXPR@3265..3271 - LHS_EXPR@3265..3268 - EXPR_VAR@3265..3268 - NAME@3265..3268 - IDENT@3265..3268 "str" - L_BRACK@3268..3269 "[" - EXPR_NUMBER@3269..3270 - FLOAT@3269..3270 "0" - R_BRACK@3270..3271 "]" - WHITESPACE@3271..3272 " " - EQ@3272..3274 "==" + EXPR_VAR@2991..2996 + NAME@2991..2996 + IDENT@2991..2996 "value" + R_BRACK@2996..2997 "]" + WHITESPACE@2997..2998 " " + FOR_SPEC@2998..3026 + FOR_KW@2998..3001 "for" + WHITESPACE@3001..3002 " " + NAME@3002..3007 + IDENT@3002..3007 "value" + WHITESPACE@3007..3008 " " + IN_KW@3008..3010 "in" + WHITESPACE@3010..3011 " " + EXPR_VAR@3011..3026 + NAME@3011..3026 + IDENT@3011..3026 "value_or_values" + R_BRACK@3026..3027 "]" + WHITESPACE@3027..3036 "\n " + ELSE_KW@3036..3040 "else" + WHITESPACE@3040..3051 "\n " + FALSE_EXPR@3051..3085 + EXPR_ARRAY@3051..3085 + L_BRACK@3051..3052 "[" + EXPR_BINARY@3052..3084 + LHS_EXPR@3052..3061 + EXPR_STRING@3052..3061 + STRING_SINGLE@3052..3061 "'%s = %s'" + WHITESPACE@3061..3062 " " + MODULO@3062..3063 "%" + WHITESPACE@3063..3064 " " + EXPR_ARRAY@3064..3084 + L_BRACK@3064..3065 "[" + EXPR_VAR@3065..3066 + NAME@3065..3066 + IDENT@3065..3066 "k" + COMMA@3066..3067 "," + WHITESPACE@3067..3068 " " + EXPR_VAR@3068..3083 + NAME@3068..3083 + IDENT@3068..3083 "value_or_values" + R_BRACK@3083..3084 "]" + R_BRACK@3084..3085 "]" + WHITESPACE@3085..3095 "\n\n " + FOR_SPEC@3095..3126 + FOR_KW@3095..3098 "for" + WHITESPACE@3098..3099 " " + NAME@3099..3100 + IDENT@3099..3100 "k" + WHITESPACE@3100..3101 " " + IN_KW@3101..3103 "in" + WHITESPACE@3103..3104 " " + EXPR_APPLY@3104..3126 + EXPR_INDEX@3104..3120 + EXPR_VAR@3104..3107 + NAME@3104..3107 + IDENT@3104..3107 "std" + DOT@3107..3108 "." + NAME@3108..3120 + IDENT@3108..3120 "objectFields" + ARGS_DESC@3120..3126 + L_PAREN@3120..3121 "(" + ARG@3121..3125 + EXPR_VAR@3121..3125 + NAME@3121..3125 + IDENT@3121..3125 "body" + R_PAREN@3125..3126 ")" + WHITESPACE@3126..3133 "\n " + R_BRACK@3133..3134 "]" + R_PAREN@3134..3135 ")" + SEMI@3135..3136 ";" + WHITESPACE@3136..3142 "\n\n " + EXPR_LOCAL@3142..3495 + LOCAL_KW@3142..3147 "local" + WHITESPACE@3147..3148 " " + BIND_FUNCTION@3148..3216 + NAME@3148..3161 + IDENT@3148..3161 "section_lines" + PARAMS_DESC@3161..3175 + L_PAREN@3161..3162 "(" + PARAM@3162..3167 + DESTRUCT_FULL@3162..3167 + NAME@3162..3167 + IDENT@3162..3167 "sname" + COMMA@3167..3168 "," + WHITESPACE@3168..3169 " " + PARAM@3169..3174 + DESTRUCT_FULL@3169..3174 + NAME@3169..3174 + IDENT@3169..3174 "sbody" + R_PAREN@3174..3175 ")" + WHITESPACE@3175..3176 " " + ASSIGN@3176..3177 "=" + WHITESPACE@3177..3178 " " + EXPR_BINARY@3178..3216 + LHS_EXPR@3178..3196 + EXPR_ARRAY@3178..3196 + L_BRACK@3178..3179 "[" + EXPR_BINARY@3179..3195 + LHS_EXPR@3179..3185 + EXPR_STRING@3179..3185 + STRING_SINGLE@3179..3185 "'[%s]'" + WHITESPACE@3185..3186 " " + MODULO@3186..3187 "%" + WHITESPACE@3187..3188 " " + EXPR_ARRAY@3188..3195 + L_BRACK@3188..3189 "[" + EXPR_VAR@3189..3194 + NAME@3189..3194 + IDENT@3189..3194 "sname" + R_BRACK@3194..3195 "]" + R_BRACK@3195..3196 "]" + WHITESPACE@3196..3197 " " + PLUS@3197..3198 "+" + WHITESPACE@3198..3199 " " + EXPR_APPLY@3199..3216 + EXPR_VAR@3199..3209 + NAME@3199..3209 + IDENT@3199..3209 "body_lines" + ARGS_DESC@3209..3216 + L_PAREN@3209..3210 "(" + ARG@3210..3215 + EXPR_VAR@3210..3215 + NAME@3210..3215 + IDENT@3210..3215 "sbody" + R_PAREN@3215..3216 ")" + COMMA@3216..3217 "," + WHITESPACE@3217..3228 "\n " + BIND_DESTRUCT@3228..3303 + DESTRUCT_FULL@3228..3237 + NAME@3228..3237 + IDENT@3228..3237 "main_body" + WHITESPACE@3237..3238 " " + ASSIGN@3238..3239 "=" + WHITESPACE@3239..3240 " " + EXPR_IF_THEN_ELSE@3240..3303 + IF_KW@3240..3242 "if" + WHITESPACE@3242..3243 " " + EXPR_APPLY@3243..3269 + EXPR_INDEX@3243..3256 + EXPR_VAR@3243..3246 + NAME@3243..3246 + IDENT@3243..3246 "std" + DOT@3246..3247 "." + NAME@3247..3256 + IDENT@3247..3256 "objectHas" + ARGS_DESC@3256..3269 + L_PAREN@3256..3257 "(" + ARG@3257..3260 + EXPR_VAR@3257..3260 + NAME@3257..3260 + IDENT@3257..3260 "ini" + COMMA@3260..3261 "," + WHITESPACE@3261..3262 " " + ARG@3262..3268 + EXPR_STRING@3262..3268 + STRING_SINGLE@3262..3268 "'main'" + R_PAREN@3268..3269 ")" + WHITESPACE@3269..3270 " " + THEN_KW@3270..3274 "then" WHITESPACE@3274..3275 " " - EXPR_STRING@3275..3278 - STRING_SINGLE@3275..3278 "'-'" - WHITESPACE@3278..3279 " " - THEN_KW@3279..3283 "then" - WHITESPACE@3283..3290 "\n " - TRUE_EXPR@3290..3313 - EXPR_UNARY@3290..3313 - MINUS@3290..3291 "-" - EXPR_APPLY@3291..3313 - EXPR_VAR@3291..3300 - NAME@3291..3300 - IDENT@3291..3300 "parse_nat" - ARGS_DESC@3300..3313 - L_PAREN@3300..3301 "(" - ARG@3301..3308 - EXPR_SLICE@3301..3308 - EXPR_VAR@3301..3304 - NAME@3301..3304 - IDENT@3301..3304 "str" - SLICE_DESC@3304..3308 - L_BRACK@3304..3305 "[" - EXPR_NUMBER@3305..3306 - FLOAT@3305..3306 "1" - COLON@3306..3307 ":" - R_BRACK@3307..3308 "]" - COMMA@3308..3309 "," - WHITESPACE@3309..3310 " " - ARG@3310..3312 - EXPR_NUMBER@3310..3312 - FLOAT@3310..3312 "10" - R_PAREN@3312..3313 ")" - WHITESPACE@3313..3318 "\n " - ELSE_KW@3318..3322 "else" - WHITESPACE@3322..3329 "\n " - FALSE_EXPR@3329..3347 - EXPR_APPLY@3329..3347 - EXPR_VAR@3329..3338 - NAME@3329..3338 - IDENT@3329..3338 "parse_nat" - ARGS_DESC@3338..3347 - L_PAREN@3338..3339 "(" - ARG@3339..3342 - EXPR_VAR@3339..3342 - NAME@3339..3342 - IDENT@3339..3342 "str" - COMMA@3342..3343 "," - WHITESPACE@3343..3344 " " - ARG@3344..3346 - EXPR_NUMBER@3344..3346 - FLOAT@3344..3346 "10" - R_PAREN@3346..3347 ")" - COMMA@3347..3348 "," - WHITESPACE@3348..3352 "\n\n " - MEMBER_FIELD@3352..3523 - FIELD_METHOD@3352..3523 - FIELD_NAME_FIXED@3352..3362 - NAME@3352..3362 - IDENT@3352..3362 "parseOctal" - PARAMS_DESC@3362..3367 - L_PAREN@3362..3363 "(" - PARAM@3363..3366 - DESTRUCT_FULL@3363..3366 - NAME@3363..3366 - IDENT@3363..3366 "str" - R_PAREN@3366..3367 ")" - COLONCOLON@3367..3369 "::" - WHITESPACE@3369..3374 "\n " - EXPR_ASSERT@3374..3523 - ASSERTION@3374..3440 - ASSERT_KW@3374..3380 "assert" - WHITESPACE@3380..3381 " " - LHS_EXPR@3381..3398 - EXPR_APPLY@3381..3398 - EXPR_INDEX@3381..3393 - EXPR_VAR@3381..3384 - NAME@3381..3384 - IDENT@3381..3384 "std" - DOT@3384..3385 "." - NAME@3385..3393 - IDENT@3385..3393 "isString" - ARGS_DESC@3393..3398 - L_PAREN@3393..3394 "(" - ARG@3394..3397 - EXPR_VAR@3394..3397 - NAME@3394..3397 - IDENT@3394..3397 "str" - R_PAREN@3397..3398 ")" - WHITESPACE@3398..3399 " " - COLON@3399..3400 ":" - WHITESPACE@3400..3401 " " - EXPR_BINARY@3401..3440 - LHS_EXPR@3401..3424 - EXPR_STRING@3401..3424 - STRING_SINGLE@3401..3424 "'Expected string, got '" - WHITESPACE@3424..3425 " " - PLUS@3425..3426 "+" - WHITESPACE@3426..3427 " " - EXPR_APPLY@3427..3440 - EXPR_INDEX@3427..3435 - EXPR_VAR@3427..3430 - NAME@3427..3430 - IDENT@3427..3430 "std" - DOT@3430..3431 "." - NAME@3431..3435 - IDENT@3431..3435 "type" - ARGS_DESC@3435..3440 - L_PAREN@3435..3436 "(" - ARG@3436..3439 - EXPR_VAR@3436..3439 - NAME@3436..3439 - IDENT@3436..3439 "str" - R_PAREN@3439..3440 ")" - SEMI@3440..3441 ";" - WHITESPACE@3441..3446 "\n " - EXPR_ASSERT@3446..3523 - ASSERTION@3446..3500 - ASSERT_KW@3446..3452 "assert" - WHITESPACE@3452..3453 " " - LHS_EXPR@3453..3472 - EXPR_BINARY@3453..3472 - LHS_EXPR@3453..3468 - EXPR_APPLY@3453..3468 - EXPR_INDEX@3453..3463 - EXPR_VAR@3453..3456 - NAME@3453..3456 - IDENT@3453..3456 "std" - DOT@3456..3457 "." - NAME@3457..3463 - IDENT@3457..3463 "length" - ARGS_DESC@3463..3468 - L_PAREN@3463..3464 "(" - ARG@3464..3467 - EXPR_VAR@3464..3467 - NAME@3464..3467 - IDENT@3464..3467 "str" - R_PAREN@3467..3468 ")" - WHITESPACE@3468..3469 " " - GT@3469..3470 ">" - WHITESPACE@3470..3471 " " - EXPR_NUMBER@3471..3472 - FLOAT@3471..3472 "0" - WHITESPACE@3472..3473 " " - COLON@3473..3474 ":" - WHITESPACE@3474..3475 " " - EXPR_STRING@3475..3500 - STRING_SINGLE@3475..3500 "'Not an octal number: ..." - SEMI@3500..3501 ";" - WHITESPACE@3501..3506 "\n " - EXPR_APPLY@3506..3523 - EXPR_VAR@3506..3515 - NAME@3506..3515 - IDENT@3506..3515 "parse_nat" - ARGS_DESC@3515..3523 - L_PAREN@3515..3516 "(" - ARG@3516..3519 - EXPR_VAR@3516..3519 - NAME@3516..3519 - IDENT@3516..3519 "str" - COMMA@3519..3520 "," - WHITESPACE@3520..3521 " " - ARG@3521..3522 - EXPR_NUMBER@3521..3522 - FLOAT@3521..3522 "8" - R_PAREN@3522..3523 ")" - COMMA@3523..3524 "," - WHITESPACE@3524..3528 "\n\n " - MEMBER_FIELD@3528..3694 - FIELD_METHOD@3528..3694 - FIELD_NAME_FIXED@3528..3536 - NAME@3528..3536 - IDENT@3528..3536 "parseHex" - PARAMS_DESC@3536..3541 - L_PAREN@3536..3537 "(" - PARAM@3537..3540 - DESTRUCT_FULL@3537..3540 - NAME@3537..3540 - IDENT@3537..3540 "str" - R_PAREN@3540..3541 ")" - COLONCOLON@3541..3543 "::" - WHITESPACE@3543..3548 "\n " - EXPR_ASSERT@3548..3694 - ASSERTION@3548..3614 - ASSERT_KW@3548..3554 "assert" - WHITESPACE@3554..3555 " " - LHS_EXPR@3555..3572 - EXPR_APPLY@3555..3572 - EXPR_INDEX@3555..3567 - EXPR_VAR@3555..3558 - NAME@3555..3558 - IDENT@3555..3558 "std" - DOT@3558..3559 "." - NAME@3559..3567 - IDENT@3559..3567 "isString" - ARGS_DESC@3567..3572 - L_PAREN@3567..3568 "(" - ARG@3568..3571 - EXPR_VAR@3568..3571 - NAME@3568..3571 - IDENT@3568..3571 "str" - R_PAREN@3571..3572 ")" - WHITESPACE@3572..3573 " " - COLON@3573..3574 ":" - WHITESPACE@3574..3575 " " - EXPR_BINARY@3575..3614 - LHS_EXPR@3575..3598 - EXPR_STRING@3575..3598 - STRING_SINGLE@3575..3598 "'Expected string, got '" - WHITESPACE@3598..3599 " " - PLUS@3599..3600 "+" - WHITESPACE@3600..3601 " " - EXPR_APPLY@3601..3614 - EXPR_INDEX@3601..3609 - EXPR_VAR@3601..3604 - NAME@3601..3604 - IDENT@3601..3604 "std" - DOT@3604..3605 "." - NAME@3605..3609 - IDENT@3605..3609 "type" - ARGS_DESC@3609..3614 - L_PAREN@3609..3610 "(" - ARG@3610..3613 - EXPR_VAR@3610..3613 - NAME@3610..3613 - IDENT@3610..3613 "str" - R_PAREN@3613..3614 ")" - SEMI@3614..3615 ";" - WHITESPACE@3615..3620 "\n " - EXPR_ASSERT@3620..3694 - ASSERTION@3620..3670 - ASSERT_KW@3620..3626 "assert" - WHITESPACE@3626..3627 " " - LHS_EXPR@3627..3646 - EXPR_BINARY@3627..3646 - LHS_EXPR@3627..3642 - EXPR_APPLY@3627..3642 - EXPR_INDEX@3627..3637 - EXPR_VAR@3627..3630 - NAME@3627..3630 - IDENT@3627..3630 "std" - DOT@3630..3631 "." - NAME@3631..3637 - IDENT@3631..3637 "length" - ARGS_DESC@3637..3642 - L_PAREN@3637..3638 "(" - ARG@3638..3641 - EXPR_VAR@3638..3641 - NAME@3638..3641 - IDENT@3638..3641 "str" - R_PAREN@3641..3642 ")" - WHITESPACE@3642..3643 " " - GT@3643..3644 ">" - WHITESPACE@3644..3645 " " - EXPR_NUMBER@3645..3646 - FLOAT@3645..3646 "0" - WHITESPACE@3646..3647 " " - COLON@3647..3648 ":" - WHITESPACE@3648..3649 " " - EXPR_STRING@3649..3670 - STRING_SINGLE@3649..3670 "'Not hexadecimal: \"\"'" - SEMI@3670..3671 ";" - WHITESPACE@3671..3676 "\n " - EXPR_APPLY@3676..3694 - EXPR_VAR@3676..3685 - NAME@3676..3685 - IDENT@3676..3685 "parse_nat" - ARGS_DESC@3685..3694 - L_PAREN@3685..3686 "(" - ARG@3686..3689 - EXPR_VAR@3686..3689 - NAME@3686..3689 - IDENT@3686..3689 "str" - COMMA@3689..3690 "," - WHITESPACE@3690..3691 " " - ARG@3691..3693 - EXPR_NUMBER@3691..3693 - FLOAT@3691..3693 "16" - R_PAREN@3693..3694 ")" - COMMA@3694..3695 "," - WHITESPACE@3695..3699 "\n\n " - MEMBER_FIELD@3699..3741 - FIELD_METHOD@3699..3741 - FIELD_NAME_FIXED@3699..3704 - NAME@3699..3704 - IDENT@3699..3704 "split" - PARAMS_DESC@3704..3712 - L_PAREN@3704..3705 "(" - PARAM@3705..3708 - DESTRUCT_FULL@3705..3708 - NAME@3705..3708 - IDENT@3705..3708 "str" - COMMA@3708..3709 "," - WHITESPACE@3709..3710 " " - PARAM@3710..3711 - DESTRUCT_FULL@3710..3711 - NAME@3710..3711 - IDENT@3710..3711 "c" - R_PAREN@3711..3712 ")" - COLONCOLON@3712..3714 "::" - WHITESPACE@3714..3715 " " - EXPR_APPLY@3715..3741 - EXPR_INDEX@3715..3729 - EXPR_VAR@3715..3718 - NAME@3715..3718 - IDENT@3715..3718 "std" - DOT@3718..3719 "." - NAME@3719..3729 - IDENT@3719..3729 "splitLimit" - ARGS_DESC@3729..3741 - L_PAREN@3729..3730 "(" - ARG@3730..3733 - EXPR_VAR@3730..3733 - NAME@3730..3733 - IDENT@3730..3733 "str" - COMMA@3733..3734 "," - WHITESPACE@3734..3735 " " - ARG@3735..3736 - EXPR_VAR@3735..3736 - NAME@3735..3736 - IDENT@3735..3736 "c" - COMMA@3736..3737 "," - WHITESPACE@3737..3738 " " - ARG@3738..3740 - EXPR_UNARY@3738..3740 - MINUS@3738..3739 "-" - EXPR_NUMBER@3739..3740 - FLOAT@3739..3740 "1" - R_PAREN@3740..3741 ")" - COMMA@3741..3742 "," - WHITESPACE@3742..3746 "\n\n " - MEMBER_FIELD@3746..3781 - FIELD_NORMAL@3746..3781 - FIELD_NAME_FIXED@3746..3756 - NAME@3746..3756 - IDENT@3746..3756 "splitLimit" - COLONCOLON@3756..3758 "::" - WHITESPACE@3758..3759 " " - EXPR_INTRINSIC@3759..3781 - INTRINSIC@3759..3769 "$intrinsic" - L_PAREN@3769..3770 "(" - NAME@3770..3780 - IDENT@3770..3780 "splitLimit" - R_PAREN@3780..3781 ")" - COMMA@3781..3782 "," - WHITESPACE@3782..3786 "\n\n " - MEMBER_FIELD@3786..3821 - FIELD_NORMAL@3786..3821 - FIELD_NAME_FIXED@3786..3796 - NAME@3786..3796 - IDENT@3786..3796 "strReplace" - COLONCOLON@3796..3798 "::" - WHITESPACE@3798..3799 " " - EXPR_INTRINSIC@3799..3821 - INTRINSIC@3799..3809 "$intrinsic" - L_PAREN@3809..3810 "(" - NAME@3810..3820 - IDENT@3810..3820 "strReplace" - R_PAREN@3820..3821 ")" - COMMA@3821..3822 "," - WHITESPACE@3822..3826 "\n\n " - MEMBER_FIELD@3826..3861 - FIELD_NORMAL@3826..3861 - FIELD_NAME_FIXED@3826..3836 - NAME@3826..3836 - IDENT@3826..3836 "asciiUpper" - COLONCOLON@3836..3838 "::" - WHITESPACE@3838..3839 " " - EXPR_INTRINSIC@3839..3861 - INTRINSIC@3839..3849 "$intrinsic" - L_PAREN@3849..3850 "(" - NAME@3850..3860 - IDENT@3850..3860 "asciiUpper" - R_PAREN@3860..3861 ")" - COMMA@3861..3862 "," - WHITESPACE@3862..3866 "\n\n " - MEMBER_FIELD@3866..3901 - FIELD_NORMAL@3866..3901 - FIELD_NAME_FIXED@3866..3876 - NAME@3866..3876 - IDENT@3866..3876 "asciiLower" - COLONCOLON@3876..3878 "::" - WHITESPACE@3878..3879 " " - EXPR_INTRINSIC@3879..3901 - INTRINSIC@3879..3889 "$intrinsic" - L_PAREN@3889..3890 "(" - NAME@3890..3900 - IDENT@3890..3900 "asciiLower" - R_PAREN@3900..3901 ")" - COMMA@3901..3902 "," - WHITESPACE@3902..3906 "\n\n " - MEMBER_FIELD@3906..3931 - FIELD_NORMAL@3906..3931 - FIELD_NAME_FIXED@3906..3911 - NAME@3906..3911 - IDENT@3906..3911 "range" - COLONCOLON@3911..3913 "::" - WHITESPACE@3913..3914 " " - EXPR_INTRINSIC@3914..3931 - INTRINSIC@3914..3924 "$intrinsic" - L_PAREN@3924..3925 "(" - NAME@3925..3930 - IDENT@3925..3930 "range" - R_PAREN@3930..3931 ")" - COMMA@3931..3932 "," - WHITESPACE@3932..3936 "\n\n " - MEMBER_FIELD@3936..4188 - FIELD_METHOD@3936..4188 - FIELD_NAME_FIXED@3936..3942 - NAME@3936..3942 - IDENT@3936..3942 "repeat" - PARAMS_DESC@3942..3955 - L_PAREN@3942..3943 "(" - PARAM@3943..3947 - DESTRUCT_FULL@3943..3947 - NAME@3943..3947 - IDENT@3943..3947 "what" - COMMA@3947..3948 "," - WHITESPACE@3948..3949 " " - PARAM@3949..3954 - DESTRUCT_FULL@3949..3954 - NAME@3949..3954 - IDENT@3949..3954 "count" - R_PAREN@3954..3955 ")" - COLONCOLON@3955..3957 "::" - WHITESPACE@3957..3962 "\n " - EXPR_LOCAL@3962..4188 - LOCAL_KW@3962..3967 "local" - WHITESPACE@3967..3968 " " - BIND_DESTRUCT@3968..4126 - DESTRUCT_FULL@3968..3974 - NAME@3968..3974 - IDENT@3968..3974 "joiner" - WHITESPACE@3974..3975 " " - ASSIGN@3975..3976 "=" - WHITESPACE@3976..3983 "\n " - EXPR_IF_THEN_ELSE@3983..4126 - IF_KW@3983..3985 "if" - WHITESPACE@3985..3986 " " - EXPR_APPLY@3986..4004 - EXPR_INDEX@3986..3998 - EXPR_VAR@3986..3989 - NAME@3986..3989 - IDENT@3986..3989 "std" - DOT@3989..3990 "." - NAME@3990..3998 - IDENT@3990..3998 "isString" - ARGS_DESC@3998..4004 - L_PAREN@3998..3999 "(" - ARG@3999..4003 - EXPR_VAR@3999..4003 - NAME@3999..4003 - IDENT@3999..4003 "what" - R_PAREN@4003..4004 ")" - WHITESPACE@4004..4005 " " - THEN_KW@4005..4009 "then" - WHITESPACE@4009..4010 " " - TRUE_EXPR@4010..4012 - EXPR_STRING@4010..4012 - STRING_SINGLE@4010..4012 "''" - WHITESPACE@4012..4019 "\n " - ELSE_KW@4019..4023 "else" - WHITESPACE@4023..4024 " " - FALSE_EXPR@4024..4126 - EXPR_IF_THEN_ELSE@4024..4126 - IF_KW@4024..4026 "if" - WHITESPACE@4026..4027 " " - EXPR_APPLY@4027..4044 - EXPR_INDEX@4027..4038 - EXPR_VAR@4027..4030 - NAME@4027..4030 - IDENT@4027..4030 "std" - DOT@4030..4031 "." - NAME@4031..4038 - IDENT@4031..4038 "isArray" - ARGS_DESC@4038..4044 - L_PAREN@4038..4039 "(" - ARG@4039..4043 - EXPR_VAR@4039..4043 - NAME@4039..4043 - IDENT@4039..4043 "what" - R_PAREN@4043..4044 ")" - WHITESPACE@4044..4045 " " - THEN_KW@4045..4049 "then" - WHITESPACE@4049..4050 " " - TRUE_EXPR@4050..4052 - EXPR_ARRAY@4050..4052 - L_BRACK@4050..4051 "[" - R_BRACK@4051..4052 "]" - WHITESPACE@4052..4059 "\n " - ELSE_KW@4059..4063 "else" - WHITESPACE@4063..4064 " " - FALSE_EXPR@4064..4126 - EXPR_ERROR@4064..4126 - ERROR_KW@4064..4069 "error" - WHITESPACE@4069..4070 " " - EXPR_STRING@4070..4126 - STRING_SINGLE@4070..4126 "'std.repeat first arg ..." - SEMI@4126..4127 ";" - WHITESPACE@4127..4132 "\n " - EXPR_APPLY@4132..4188 - EXPR_INDEX@4132..4140 - EXPR_VAR@4132..4135 - NAME@4132..4135 - IDENT@4132..4135 "std" - DOT@4135..4136 "." - NAME@4136..4140 - IDENT@4136..4140 "join" - ARGS_DESC@4140..4188 - L_PAREN@4140..4141 "(" - ARG@4141..4147 - EXPR_VAR@4141..4147 - NAME@4141..4147 - IDENT@4141..4147 "joiner" - COMMA@4147..4148 "," - WHITESPACE@4148..4149 " " - ARG@4149..4187 - EXPR_APPLY@4149..4187 - EXPR_INDEX@4149..4162 - EXPR_VAR@4149..4152 - NAME@4149..4152 - IDENT@4149..4152 "std" - DOT@4152..4153 "." - NAME@4153..4162 - IDENT@4153..4162 "makeArray" - ARGS_DESC@4162..4187 - L_PAREN@4162..4163 "(" - ARG@4163..4168 - EXPR_VAR@4163..4168 - NAME@4163..4168 - IDENT@4163..4168 "count" - COMMA@4168..4169 "," - WHITESPACE@4169..4170 " " - ARG@4170..4186 - EXPR_FUNCTION@4170..4186 - FUNCTION_KW@4170..4178 "function" - PARAMS_DESC@4178..4181 - L_PAREN@4178..4179 "(" - PARAM@4179..4180 - DESTRUCT_FULL@4179..4180 - NAME@4179..4180 - IDENT@4179..4180 "i" - R_PAREN@4180..4181 ")" - WHITESPACE@4181..4182 " " - EXPR_VAR@4182..4186 - NAME@4182..4186 - IDENT@4182..4186 "what" - R_PAREN@4186..4187 ")" - R_PAREN@4187..4188 ")" - COMMA@4188..4189 "," - WHITESPACE@4189..4193 "\n\n " - MEMBER_FIELD@4193..4218 - FIELD_NORMAL@4193..4218 - FIELD_NAME_FIXED@4193..4198 - NAME@4193..4198 - IDENT@4193..4198 "slice" - COLONCOLON@4198..4200 "::" - WHITESPACE@4200..4201 " " - EXPR_INTRINSIC@4201..4218 - INTRINSIC@4201..4211 "$intrinsic" - L_PAREN@4211..4212 "(" - NAME@4212..4217 - IDENT@4212..4217 "slice" - R_PAREN@4217..4218 ")" - COMMA@4218..4219 "," - WHITESPACE@4219..4223 "\n\n " - MEMBER_FIELD@4223..4250 - FIELD_NORMAL@4223..4250 - FIELD_NAME_FIXED@4223..4229 - NAME@4223..4229 - IDENT@4223..4229 "member" - COLONCOLON@4229..4231 "::" - WHITESPACE@4231..4232 " " - EXPR_INTRINSIC@4232..4250 - INTRINSIC@4232..4242 "$intrinsic" - L_PAREN@4242..4243 "(" - NAME@4243..4249 - IDENT@4243..4249 "member" - R_PAREN@4249..4250 ")" - COMMA@4250..4251 "," - WHITESPACE@4251..4255 "\n\n " - MEMBER_FIELD@4255..4280 - FIELD_NORMAL@4255..4280 - FIELD_NAME_FIXED@4255..4260 - NAME@4255..4260 - IDENT@4255..4260 "count" - COLONCOLON@4260..4262 "::" - WHITESPACE@4262..4263 " " - EXPR_INTRINSIC@4263..4280 - INTRINSIC@4263..4273 "$intrinsic" - L_PAREN@4273..4274 "(" - NAME@4274..4279 - IDENT@4274..4279 "count" - R_PAREN@4279..4280 ")" - COMMA@4280..4281 "," - WHITESPACE@4281..4285 "\n\n " - MEMBER_FIELD@4285..4306 - FIELD_NORMAL@4285..4306 - FIELD_NAME_FIXED@4285..4288 - NAME@4285..4288 - IDENT@4285..4288 "mod" - COLONCOLON@4288..4290 "::" - WHITESPACE@4290..4291 " " - EXPR_INTRINSIC@4291..4306 - INTRINSIC@4291..4301 "$intrinsic" - L_PAREN@4301..4302 "(" - NAME@4302..4305 - IDENT@4302..4305 "mod" - R_PAREN@4305..4306 ")" - COMMA@4306..4307 "," - WHITESPACE@4307..4311 "\n\n " - MEMBER_FIELD@4311..4332 - FIELD_NORMAL@4311..4332 - FIELD_NAME_FIXED@4311..4314 - NAME@4311..4314 - IDENT@4311..4314 "map" - COLONCOLON@4314..4316 "::" - WHITESPACE@4316..4317 " " - EXPR_INTRINSIC@4317..4332 - INTRINSIC@4317..4327 "$intrinsic" - L_PAREN@4327..4328 "(" - NAME@4328..4331 - IDENT@4328..4331 "map" - R_PAREN@4331..4332 ")" - COMMA@4332..4333 "," - WHITESPACE@4333..4337 "\n\n " - MEMBER_FIELD@4337..4695 - FIELD_METHOD@4337..4695 - FIELD_NAME_FIXED@4337..4349 - NAME@4337..4349 - IDENT@4337..4349 "mapWithIndex" - PARAMS_DESC@4349..4360 - L_PAREN@4349..4350 "(" - PARAM@4350..4354 - DESTRUCT_FULL@4350..4354 - NAME@4350..4354 - IDENT@4350..4354 "func" - COMMA@4354..4355 "," - WHITESPACE@4355..4356 " " - PARAM@4356..4359 - DESTRUCT_FULL@4356..4359 - NAME@4356..4359 - IDENT@4356..4359 "arr" - R_PAREN@4359..4360 ")" - COLONCOLON@4360..4362 "::" - WHITESPACE@4362..4367 "\n " - EXPR_IF_THEN_ELSE@4367..4695 - IF_KW@4367..4369 "if" - WHITESPACE@4369..4370 " " - EXPR_UNARY@4370..4391 - NOT@4370..4371 "!" - EXPR_APPLY@4371..4391 - EXPR_INDEX@4371..4385 - EXPR_VAR@4371..4374 - NAME@4371..4374 - IDENT@4371..4374 "std" - DOT@4374..4375 "." - NAME@4375..4385 - IDENT@4375..4385 "isFunction" - ARGS_DESC@4385..4391 - L_PAREN@4385..4386 "(" - ARG@4386..4390 - EXPR_VAR@4386..4390 - NAME@4386..4390 - IDENT@4386..4390 "func" - R_PAREN@4390..4391 ")" - WHITESPACE@4391..4392 " " - THEN_KW@4392..4396 "then" - WHITESPACE@4396..4403 "\n " - TRUE_EXPR@4403..4481 - EXPR_ERROR@4403..4481 - ERROR_KW@4403..4408 "error" - WHITESPACE@4408..4409 " " - EXPR_PARENED@4409..4481 - L_PAREN@4409..4410 "(" - EXPR_BINARY@4410..4480 - LHS_EXPR@4410..4463 - EXPR_STRING@4410..4463 - STRING_SINGLE@4410..4463 "'std.mapWithIndex fir ..." - WHITESPACE@4463..4464 " " - PLUS@4464..4465 "+" - WHITESPACE@4465..4466 " " - EXPR_APPLY@4466..4480 - EXPR_INDEX@4466..4474 - EXPR_VAR@4466..4469 - NAME@4466..4469 - IDENT@4466..4469 "std" - DOT@4469..4470 "." - NAME@4470..4474 - IDENT@4470..4474 "type" - ARGS_DESC@4474..4480 - L_PAREN@4474..4475 "(" - ARG@4475..4479 - EXPR_VAR@4475..4479 - NAME@4475..4479 - IDENT@4475..4479 "func" - R_PAREN@4479..4480 ")" - R_PAREN@4480..4481 ")" - WHITESPACE@4481..4486 "\n " - ELSE_KW@4486..4490 "else" - WHITESPACE@4490..4491 " " - FALSE_EXPR@4491..4695 - EXPR_IF_THEN_ELSE@4491..4695 - IF_KW@4491..4493 "if" - WHITESPACE@4493..4494 " " - EXPR_BINARY@4494..4533 - LHS_EXPR@4494..4511 - EXPR_UNARY@4494..4511 - NOT@4494..4495 "!" - EXPR_APPLY@4495..4511 - EXPR_INDEX@4495..4506 - EXPR_VAR@4495..4498 - NAME@4495..4498 - IDENT@4495..4498 "std" - DOT@4498..4499 "." - NAME@4499..4506 - IDENT@4499..4506 "isArray" - ARGS_DESC@4506..4511 - L_PAREN@4506..4507 "(" - ARG@4507..4510 - EXPR_VAR@4507..4510 - NAME@4507..4510 - IDENT@4507..4510 "arr" - R_PAREN@4510..4511 ")" - WHITESPACE@4511..4512 " " - AND@4512..4514 "&&" - WHITESPACE@4514..4515 " " - EXPR_UNARY@4515..4533 - NOT@4515..4516 "!" - EXPR_APPLY@4516..4533 - EXPR_INDEX@4516..4528 - EXPR_VAR@4516..4519 - NAME@4516..4519 - IDENT@4516..4519 "std" - DOT@4519..4520 "." - NAME@4520..4528 - IDENT@4520..4528 "isString" - ARGS_DESC@4528..4533 - L_PAREN@4528..4529 "(" - ARG@4529..4532 - EXPR_VAR@4529..4532 - NAME@4529..4532 - IDENT@4529..4532 "arr" - R_PAREN@4532..4533 ")" - WHITESPACE@4533..4534 " " - THEN_KW@4534..4538 "then" - WHITESPACE@4538..4545 "\n " - TRUE_EXPR@4545..4620 - EXPR_ERROR@4545..4620 - ERROR_KW@4545..4550 "error" - WHITESPACE@4550..4551 " " - EXPR_PARENED@4551..4620 - L_PAREN@4551..4552 "(" - EXPR_BINARY@4552..4619 - LHS_EXPR@4552..4603 - EXPR_STRING@4552..4603 - STRING_SINGLE@4552..4603 "'std.mapWithIndex sec ..." - WHITESPACE@4603..4604 " " - PLUS@4604..4605 "+" - WHITESPACE@4605..4606 " " - EXPR_APPLY@4606..4619 - EXPR_INDEX@4606..4614 - EXPR_VAR@4606..4609 - NAME@4606..4609 - IDENT@4606..4609 "std" - DOT@4609..4610 "." - NAME@4610..4614 - IDENT@4610..4614 "type" - ARGS_DESC@4614..4619 - L_PAREN@4614..4615 "(" - ARG@4615..4618 - EXPR_VAR@4615..4618 - NAME@4615..4618 - IDENT@4615..4618 "arr" - R_PAREN@4618..4619 ")" - R_PAREN@4619..4620 ")" - WHITESPACE@4620..4625 "\n " - ELSE_KW@4625..4629 "else" - WHITESPACE@4629..4636 "\n " - FALSE_EXPR@4636..4695 - EXPR_APPLY@4636..4695 - EXPR_INDEX@4636..4649 - EXPR_VAR@4636..4639 - NAME@4636..4639 - IDENT@4636..4639 "std" - DOT@4639..4640 "." - NAME@4640..4649 - IDENT@4640..4649 "makeArray" - ARGS_DESC@4649..4695 - L_PAREN@4649..4650 "(" - ARG@4650..4665 - EXPR_APPLY@4650..4665 - EXPR_INDEX@4650..4660 - EXPR_VAR@4650..4653 - NAME@4650..4653 - IDENT@4650..4653 "std" - DOT@4653..4654 "." - NAME@4654..4660 - IDENT@4654..4660 "length" - ARGS_DESC@4660..4665 - L_PAREN@4660..4661 "(" - ARG@4661..4664 - EXPR_VAR@4661..4664 - NAME@4661..4664 - IDENT@4661..4664 "arr" - R_PAREN@4664..4665 ")" - COMMA@4665..4666 "," - WHITESPACE@4666..4667 " " - ARG@4667..4694 - EXPR_FUNCTION@4667..4694 - FUNCTION_KW@4667..4675 "function" - PARAMS_DESC@4675..4678 - L_PAREN@4675..4676 "(" - PARAM@4676..4677 - DESTRUCT_FULL@4676..4677 - NAME@4676..4677 - IDENT@4676..4677 "i" - R_PAREN@4677..4678 ")" - WHITESPACE@4678..4679 " " - EXPR_APPLY@4679..4694 - EXPR_VAR@4679..4683 - NAME@4679..4683 - IDENT@4679..4683 "func" - ARGS_DESC@4683..4694 - L_PAREN@4683..4684 "(" - ARG@4684..4685 - EXPR_VAR@4684..4685 - NAME@4684..4685 - IDENT@4684..4685 "i" - COMMA@4685..4686 "," - WHITESPACE@4686..4687 " " - ARG@4687..4693 - EXPR_INDEX_EXPR@4687..4693 - LHS_EXPR@4687..4690 - EXPR_VAR@4687..4690 - NAME@4687..4690 - IDENT@4687..4690 "arr" - L_BRACK@4690..4691 "[" - EXPR_VAR@4691..4692 - NAME@4691..4692 - IDENT@4691..4692 "i" - R_BRACK@4692..4693 "]" - R_PAREN@4693..4694 ")" - R_PAREN@4694..4695 ")" - COMMA@4695..4696 "," - WHITESPACE@4696..4700 "\n\n " - MEMBER_FIELD@4700..5028 - FIELD_METHOD@4700..5028 - FIELD_NAME_FIXED@4700..4710 - NAME@4700..4710 - IDENT@4700..4710 "mapWithKey" - PARAMS_DESC@4710..4721 - L_PAREN@4710..4711 "(" - PARAM@4711..4715 - DESTRUCT_FULL@4711..4715 - NAME@4711..4715 - IDENT@4711..4715 "func" - COMMA@4715..4716 "," - WHITESPACE@4716..4717 " " - PARAM@4717..4720 - DESTRUCT_FULL@4717..4720 - NAME@4717..4720 - IDENT@4717..4720 "obj" - R_PAREN@4720..4721 ")" - COLONCOLON@4721..4723 "::" - WHITESPACE@4723..4728 "\n " - EXPR_IF_THEN_ELSE@4728..5028 - IF_KW@4728..4730 "if" - WHITESPACE@4730..4731 " " - EXPR_UNARY@4731..4752 - NOT@4731..4732 "!" - EXPR_APPLY@4732..4752 - EXPR_INDEX@4732..4746 - EXPR_VAR@4732..4735 - NAME@4732..4735 - IDENT@4732..4735 "std" - DOT@4735..4736 "." - NAME@4736..4746 - IDENT@4736..4746 "isFunction" - ARGS_DESC@4746..4752 - L_PAREN@4746..4747 "(" - ARG@4747..4751 - EXPR_VAR@4747..4751 - NAME@4747..4751 - IDENT@4747..4751 "func" - R_PAREN@4751..4752 ")" - WHITESPACE@4752..4753 " " - THEN_KW@4753..4757 "then" - WHITESPACE@4757..4764 "\n " - TRUE_EXPR@4764..4840 - EXPR_ERROR@4764..4840 - ERROR_KW@4764..4769 "error" - WHITESPACE@4769..4770 " " - EXPR_PARENED@4770..4840 - L_PAREN@4770..4771 "(" - EXPR_BINARY@4771..4839 - LHS_EXPR@4771..4822 - EXPR_STRING@4771..4822 - STRING_SINGLE@4771..4822 "'std.mapWithKey first ..." - WHITESPACE@4822..4823 " " - PLUS@4823..4824 "+" - WHITESPACE@4824..4825 " " - EXPR_APPLY@4825..4839 - EXPR_INDEX@4825..4833 - EXPR_VAR@4825..4828 - NAME@4825..4828 - IDENT@4825..4828 "std" - DOT@4828..4829 "." - NAME@4829..4833 - IDENT@4829..4833 "type" - ARGS_DESC@4833..4839 - L_PAREN@4833..4834 "(" - ARG@4834..4838 - EXPR_VAR@4834..4838 - NAME@4834..4838 - IDENT@4834..4838 "func" - R_PAREN@4838..4839 ")" - R_PAREN@4839..4840 ")" - WHITESPACE@4840..4845 "\n " - ELSE_KW@4845..4849 "else" - WHITESPACE@4849..4850 " " - FALSE_EXPR@4850..5028 - EXPR_IF_THEN_ELSE@4850..5028 - IF_KW@4850..4852 "if" - WHITESPACE@4852..4853 " " - EXPR_UNARY@4853..4871 - NOT@4853..4854 "!" - EXPR_APPLY@4854..4871 - EXPR_INDEX@4854..4866 - EXPR_VAR@4854..4857 - NAME@4854..4857 - IDENT@4854..4857 "std" - DOT@4857..4858 "." - NAME@4858..4866 - IDENT@4858..4866 "isObject" - ARGS_DESC@4866..4871 - L_PAREN@4866..4867 "(" - ARG@4867..4870 - EXPR_VAR@4867..4870 - NAME@4867..4870 - IDENT@4867..4870 "obj" - R_PAREN@4870..4871 ")" - WHITESPACE@4871..4872 " " - THEN_KW@4872..4876 "then" - WHITESPACE@4876..4883 "\n " - TRUE_EXPR@4883..4957 - EXPR_ERROR@4883..4957 - ERROR_KW@4883..4888 "error" - WHITESPACE@4888..4889 " " - EXPR_PARENED@4889..4957 - L_PAREN@4889..4890 "(" - EXPR_BINARY@4890..4956 - LHS_EXPR@4890..4940 - EXPR_STRING@4890..4940 - STRING_SINGLE@4890..4940 "'std.mapWithKey secon ..." - WHITESPACE@4940..4941 " " - PLUS@4941..4942 "+" - WHITESPACE@4942..4943 " " - EXPR_APPLY@4943..4956 - EXPR_INDEX@4943..4951 - EXPR_VAR@4943..4946 - NAME@4943..4946 - IDENT@4943..4946 "std" - DOT@4946..4947 "." - NAME@4947..4951 - IDENT@4947..4951 "type" - ARGS_DESC@4951..4956 - L_PAREN@4951..4952 "(" - ARG@4952..4955 - EXPR_VAR@4952..4955 - NAME@4952..4955 - IDENT@4952..4955 "obj" - R_PAREN@4955..4956 ")" - R_PAREN@4956..4957 ")" - WHITESPACE@4957..4962 "\n " - ELSE_KW@4962..4966 "else" - WHITESPACE@4966..4973 "\n " - FALSE_EXPR@4973..5028 - EXPR_OBJECT@4973..5028 - OBJ_BODY_MEMBER_LIST@4973..5028 - L_BRACE@4973..4974 "{" - WHITESPACE@4974..4975 " " - MEMBER_FIELD@4975..5026 - FIELD_NORMAL@4975..4995 - FIELD_NAME_DYNAMIC@4975..4978 - L_BRACK@4975..4976 "[" - EXPR_VAR@4976..4977 - NAME@4976..4977 - IDENT@4976..4977 "k" - R_BRACK@4977..4978 "]" - COLON@4978..4979 ":" - WHITESPACE@4979..4980 " " - EXPR_APPLY@4980..4995 - EXPR_VAR@4980..4984 - NAME@4980..4984 - IDENT@4980..4984 "func" - ARGS_DESC@4984..4995 - L_PAREN@4984..4985 "(" - ARG@4985..4986 - EXPR_VAR@4985..4986 - NAME@4985..4986 - IDENT@4985..4986 "k" - COMMA@4986..4987 "," - WHITESPACE@4987..4988 " " - ARG@4988..4994 - EXPR_INDEX_EXPR@4988..4994 - LHS_EXPR@4988..4991 - EXPR_VAR@4988..4991 - NAME@4988..4991 - IDENT@4988..4991 "obj" - L_BRACK@4991..4992 "[" - EXPR_VAR@4992..4993 - NAME@4992..4993 - IDENT@4992..4993 "k" - R_BRACK@4993..4994 "]" - R_PAREN@4994..4995 ")" - WHITESPACE@4995..4996 " " - FOR_SPEC@4996..5026 - FOR_KW@4996..4999 "for" - WHITESPACE@4999..5000 " " - NAME@5000..5001 - IDENT@5000..5001 "k" - WHITESPACE@5001..5002 " " - IN_KW@5002..5004 "in" - WHITESPACE@5004..5005 " " - EXPR_APPLY@5005..5026 - EXPR_INDEX@5005..5021 - EXPR_VAR@5005..5008 - NAME@5005..5008 - IDENT@5005..5008 "std" - DOT@5008..5009 "." - NAME@5009..5021 - IDENT@5009..5021 "objectFields" - ARGS_DESC@5021..5026 - L_PAREN@5021..5022 "(" - ARG@5022..5025 - EXPR_VAR@5022..5025 - NAME@5022..5025 - IDENT@5022..5025 "obj" - R_PAREN@5025..5026 ")" - WHITESPACE@5026..5027 " " - R_BRACE@5027..5028 "}" - COMMA@5028..5029 "," - WHITESPACE@5029..5033 "\n\n " - MEMBER_FIELD@5033..5062 - FIELD_NORMAL@5033..5062 - FIELD_NAME_FIXED@5033..5040 - NAME@5033..5040 - IDENT@5033..5040 "flatMap" - COLONCOLON@5040..5042 "::" - WHITESPACE@5042..5043 " " - EXPR_INTRINSIC@5043..5062 - INTRINSIC@5043..5053 "$intrinsic" - L_PAREN@5053..5054 "(" - NAME@5054..5061 - IDENT@5054..5061 "flatMap" - R_PAREN@5061..5062 ")" - COMMA@5062..5063 "," - WHITESPACE@5063..5067 "\n\n " - MEMBER_FIELD@5067..5090 - FIELD_NORMAL@5067..5090 - FIELD_NAME_FIXED@5067..5071 - NAME@5067..5071 - IDENT@5067..5071 "join" - COLONCOLON@5071..5073 "::" - WHITESPACE@5073..5074 " " - EXPR_INTRINSIC@5074..5090 - INTRINSIC@5074..5084 "$intrinsic" - L_PAREN@5084..5085 "(" - NAME@5085..5089 - IDENT@5085..5089 "join" - R_PAREN@5089..5090 ")" - COMMA@5090..5091 "," - WHITESPACE@5091..5095 "\n\n " - MEMBER_FIELD@5095..5138 - FIELD_METHOD@5095..5138 - FIELD_NAME_FIXED@5095..5100 - NAME@5095..5100 - IDENT@5095..5100 "lines" - PARAMS_DESC@5100..5105 - L_PAREN@5100..5101 "(" - PARAM@5101..5104 - DESTRUCT_FULL@5101..5104 - NAME@5101..5104 - IDENT@5101..5104 "arr" - R_PAREN@5104..5105 ")" - COLONCOLON@5105..5107 "::" - WHITESPACE@5107..5112 "\n " - EXPR_APPLY@5112..5138 - EXPR_INDEX@5112..5120 - EXPR_VAR@5112..5115 - NAME@5112..5115 - IDENT@5112..5115 "std" - DOT@5115..5116 "." - NAME@5116..5120 - IDENT@5116..5120 "join" - ARGS_DESC@5120..5138 - L_PAREN@5120..5121 "(" - ARG@5121..5125 - EXPR_STRING@5121..5125 - STRING_SINGLE@5121..5125 "'\\n'" - COMMA@5125..5126 "," - WHITESPACE@5126..5127 " " - ARG@5127..5137 - EXPR_BINARY@5127..5137 - LHS_EXPR@5127..5130 - EXPR_VAR@5127..5130 - NAME@5127..5130 - IDENT@5127..5130 "arr" - WHITESPACE@5130..5131 " " - PLUS@5131..5132 "+" - WHITESPACE@5132..5133 " " - EXPR_ARRAY@5133..5137 - L_BRACK@5133..5134 "[" - EXPR_STRING@5134..5136 - STRING_SINGLE@5134..5136 "''" - R_BRACK@5136..5137 "]" - R_PAREN@5137..5138 ")" - COMMA@5138..5139 "," - WHITESPACE@5139..5143 "\n\n " - MEMBER_FIELD@5143..5355 - FIELD_METHOD@5143..5355 - FIELD_NAME_FIXED@5143..5151 - NAME@5143..5151 - IDENT@5143..5151 "deepJoin" - PARAMS_DESC@5151..5156 - L_PAREN@5151..5152 "(" - PARAM@5152..5155 - DESTRUCT_FULL@5152..5155 - NAME@5152..5155 - IDENT@5152..5155 "arr" - R_PAREN@5155..5156 ")" - COLONCOLON@5156..5158 "::" - WHITESPACE@5158..5163 "\n " - EXPR_IF_THEN_ELSE@5163..5355 - IF_KW@5163..5165 "if" - WHITESPACE@5165..5166 " " - EXPR_APPLY@5166..5183 - EXPR_INDEX@5166..5178 - EXPR_VAR@5166..5169 - NAME@5166..5169 - IDENT@5166..5169 "std" - DOT@5169..5170 "." - NAME@5170..5178 - IDENT@5170..5178 "isString" - ARGS_DESC@5178..5183 - L_PAREN@5178..5179 "(" - ARG@5179..5182 - EXPR_VAR@5179..5182 - NAME@5179..5182 - IDENT@5179..5182 "arr" - R_PAREN@5182..5183 ")" - WHITESPACE@5183..5184 " " - THEN_KW@5184..5188 "then" - WHITESPACE@5188..5195 "\n " - TRUE_EXPR@5195..5198 - EXPR_VAR@5195..5198 - NAME@5195..5198 - IDENT@5195..5198 "arr" - WHITESPACE@5198..5203 "\n " - ELSE_KW@5203..5207 "else" - WHITESPACE@5207..5208 " " - FALSE_EXPR@5208..5355 - EXPR_IF_THEN_ELSE@5208..5355 - IF_KW@5208..5210 "if" - WHITESPACE@5210..5211 " " - EXPR_APPLY@5211..5227 - EXPR_INDEX@5211..5222 - EXPR_VAR@5211..5214 - NAME@5211..5214 - IDENT@5211..5214 "std" - DOT@5214..5215 "." - NAME@5215..5222 - IDENT@5215..5222 "isArray" - ARGS_DESC@5222..5227 - L_PAREN@5222..5223 "(" - ARG@5223..5226 - EXPR_VAR@5223..5226 - NAME@5223..5226 - IDENT@5223..5226 "arr" - R_PAREN@5226..5227 ")" - WHITESPACE@5227..5228 " " - THEN_KW@5228..5232 "then" - WHITESPACE@5232..5239 "\n " - TRUE_EXPR@5239..5283 - EXPR_APPLY@5239..5283 - EXPR_INDEX@5239..5247 - EXPR_VAR@5239..5242 - NAME@5239..5242 - IDENT@5239..5242 "std" - DOT@5242..5243 "." - NAME@5243..5247 - IDENT@5243..5247 "join" - ARGS_DESC@5247..5283 - L_PAREN@5247..5248 "(" - ARG@5248..5250 - EXPR_STRING@5248..5250 - STRING_SINGLE@5248..5250 "''" - COMMA@5250..5251 "," - WHITESPACE@5251..5252 " " - ARG@5252..5282 - EXPR_ARRAY_COMP@5252..5282 - L_BRACK@5252..5253 "[" - EXPR_APPLY@5253..5268 - EXPR_INDEX@5253..5265 - EXPR_VAR@5253..5256 - NAME@5253..5256 - IDENT@5253..5256 "std" - DOT@5256..5257 "." - NAME@5257..5265 - IDENT@5257..5265 "deepJoin" - ARGS_DESC@5265..5268 - L_PAREN@5265..5266 "(" - ARG@5266..5267 - EXPR_VAR@5266..5267 - NAME@5266..5267 - IDENT@5266..5267 "x" - R_PAREN@5267..5268 ")" - WHITESPACE@5268..5269 " " - FOR_SPEC@5269..5281 - FOR_KW@5269..5272 "for" - WHITESPACE@5272..5273 " " - NAME@5273..5274 - IDENT@5273..5274 "x" - WHITESPACE@5274..5275 " " - IN_KW@5275..5277 "in" - WHITESPACE@5277..5278 " " - EXPR_VAR@5278..5281 - NAME@5278..5281 - IDENT@5278..5281 "arr" - R_BRACK@5281..5282 "]" - R_PAREN@5282..5283 ")" - WHITESPACE@5283..5288 "\n " - ELSE_KW@5288..5292 "else" - WHITESPACE@5292..5299 "\n " - FALSE_EXPR@5299..5355 - EXPR_ERROR@5299..5355 - ERROR_KW@5299..5304 "error" - WHITESPACE@5304..5305 " " - EXPR_BINARY@5305..5355 - LHS_EXPR@5305..5339 - EXPR_STRING@5305..5339 - STRING_SINGLE@5305..5339 "'Expected string or a ..." - WHITESPACE@5339..5340 " " - MODULO@5340..5341 "%" - WHITESPACE@5341..5342 " " - EXPR_APPLY@5342..5355 - EXPR_INDEX@5342..5350 - EXPR_VAR@5342..5345 - NAME@5342..5345 - IDENT@5342..5345 "std" - DOT@5345..5346 "." - NAME@5346..5350 - IDENT@5346..5350 "type" - ARGS_DESC@5350..5355 - L_PAREN@5350..5351 "(" - ARG@5351..5354 - EXPR_VAR@5351..5354 - NAME@5351..5354 - IDENT@5351..5354 "arr" - R_PAREN@5354..5355 ")" - COMMA@5355..5356 "," - WHITESPACE@5356..5361 "\n\n\n " - MEMBER_FIELD@5361..5388 - FIELD_NORMAL@5361..5388 - FIELD_NAME_FIXED@5361..5367 - NAME@5361..5367 - IDENT@5361..5367 "format" - COLONCOLON@5367..5369 "::" - WHITESPACE@5369..5370 " " - EXPR_INTRINSIC@5370..5388 - INTRINSIC@5370..5380 "$intrinsic" - L_PAREN@5380..5381 "(" - NAME@5381..5387 - IDENT@5381..5387 "format" - R_PAREN@5387..5388 ")" - COMMA@5388..5389 "," - WHITESPACE@5389..5393 "\n\n " - MEMBER_FIELD@5393..5418 - FIELD_NORMAL@5393..5418 - FIELD_NAME_FIXED@5393..5398 - NAME@5393..5398 - IDENT@5393..5398 "foldr" - COLONCOLON@5398..5400 "::" - WHITESPACE@5400..5401 " " - EXPR_INTRINSIC@5401..5418 - INTRINSIC@5401..5411 "$intrinsic" - L_PAREN@5411..5412 "(" - NAME@5412..5417 - IDENT@5412..5417 "foldr" - R_PAREN@5417..5418 ")" - COMMA@5418..5419 "," - WHITESPACE@5419..5423 "\n\n " - MEMBER_FIELD@5423..5448 - FIELD_NORMAL@5423..5448 - FIELD_NAME_FIXED@5423..5428 - NAME@5423..5428 - IDENT@5423..5428 "foldl" - COLONCOLON@5428..5430 "::" - WHITESPACE@5430..5431 " " - EXPR_INTRINSIC@5431..5448 - INTRINSIC@5431..5441 "$intrinsic" - L_PAREN@5441..5442 "(" - NAME@5442..5447 - IDENT@5442..5447 "foldl" - R_PAREN@5447..5448 ")" - COMMA@5448..5449 "," - WHITESPACE@5449..5453 "\n\n " - MEMBER_FIELD@5453..5928 - FIELD_METHOD@5453..5928 - FIELD_NAME_FIXED@5453..5462 - NAME@5453..5462 - IDENT@5453..5462 "filterMap" - PARAMS_DESC@5462..5490 - L_PAREN@5462..5463 "(" - PARAM@5463..5474 - DESTRUCT_FULL@5463..5474 - NAME@5463..5474 - IDENT@5463..5474 "filter_func" - COMMA@5474..5475 "," - WHITESPACE@5475..5476 " " - PARAM@5476..5484 - DESTRUCT_FULL@5476..5484 - NAME@5476..5484 - IDENT@5476..5484 "map_func" - COMMA@5484..5485 "," - WHITESPACE@5485..5486 " " - PARAM@5486..5489 - DESTRUCT_FULL@5486..5489 - NAME@5486..5489 - IDENT@5486..5489 "arr" - R_PAREN@5489..5490 ")" - COLONCOLON@5490..5492 "::" - WHITESPACE@5492..5497 "\n " - EXPR_IF_THEN_ELSE@5497..5928 - IF_KW@5497..5499 "if" - WHITESPACE@5499..5500 " " - EXPR_UNARY@5500..5528 - NOT@5500..5501 "!" - EXPR_APPLY@5501..5528 - EXPR_INDEX@5501..5515 - EXPR_VAR@5501..5504 - NAME@5501..5504 - IDENT@5501..5504 "std" - DOT@5504..5505 "." - NAME@5505..5515 - IDENT@5505..5515 "isFunction" - ARGS_DESC@5515..5528 - L_PAREN@5515..5516 "(" - ARG@5516..5527 - EXPR_VAR@5516..5527 - NAME@5516..5527 - IDENT@5516..5527 "filter_func" - R_PAREN@5527..5528 ")" - WHITESPACE@5528..5529 " " - THEN_KW@5529..5533 "then" - WHITESPACE@5533..5540 "\n " - TRUE_EXPR@5540..5622 - EXPR_ERROR@5540..5622 - ERROR_KW@5540..5545 "error" - WHITESPACE@5545..5546 " " - EXPR_PARENED@5546..5622 - L_PAREN@5546..5547 "(" - EXPR_BINARY@5547..5621 - LHS_EXPR@5547..5597 - EXPR_STRING@5547..5597 - STRING_SINGLE@5547..5597 "'std.filterMap first ..." - WHITESPACE@5597..5598 " " - PLUS@5598..5599 "+" - WHITESPACE@5599..5600 " " - EXPR_APPLY@5600..5621 - EXPR_INDEX@5600..5608 - EXPR_VAR@5600..5603 - NAME@5600..5603 - IDENT@5600..5603 "std" - DOT@5603..5604 "." - NAME@5604..5608 - IDENT@5604..5608 "type" - ARGS_DESC@5608..5621 - L_PAREN@5608..5609 "(" - ARG@5609..5620 - EXPR_VAR@5609..5620 - NAME@5609..5620 - IDENT@5609..5620 "filter_func" - R_PAREN@5620..5621 ")" - R_PAREN@5621..5622 ")" - WHITESPACE@5622..5627 "\n " - ELSE_KW@5627..5631 "else" - WHITESPACE@5631..5632 " " - FALSE_EXPR@5632..5928 - EXPR_IF_THEN_ELSE@5632..5928 - IF_KW@5632..5634 "if" - WHITESPACE@5634..5635 " " - EXPR_UNARY@5635..5660 - NOT@5635..5636 "!" - EXPR_APPLY@5636..5660 - EXPR_INDEX@5636..5650 - EXPR_VAR@5636..5639 - NAME@5636..5639 - IDENT@5636..5639 "std" - DOT@5639..5640 "." - NAME@5640..5650 - IDENT@5640..5650 "isFunction" - ARGS_DESC@5650..5660 - L_PAREN@5650..5651 "(" - ARG@5651..5659 - EXPR_VAR@5651..5659 - NAME@5651..5659 - IDENT@5651..5659 "map_func" - R_PAREN@5659..5660 ")" + TRUE_EXPR@3275..3295 + EXPR_APPLY@3275..3295 + EXPR_VAR@3275..3285 + NAME@3275..3285 + IDENT@3275..3285 "body_lines" + ARGS_DESC@3285..3295 + L_PAREN@3285..3286 "(" + ARG@3286..3294 + EXPR_INDEX@3286..3294 + EXPR_VAR@3286..3289 + NAME@3286..3289 + IDENT@3286..3289 "ini" + DOT@3289..3290 "." + NAME@3290..3294 + IDENT@3290..3294 "main" + R_PAREN@3294..3295 ")" + WHITESPACE@3295..3296 " " + ELSE_KW@3296..3300 "else" + WHITESPACE@3300..3301 " " + FALSE_EXPR@3301..3303 + EXPR_ARRAY@3301..3303 + L_BRACK@3301..3302 "[" + R_BRACK@3302..3303 "]" + COMMA@3303..3304 "," + WHITESPACE@3304..3315 "\n " + BIND_DESTRUCT@3315..3423 + DESTRUCT_FULL@3315..3327 + NAME@3315..3327 + IDENT@3315..3327 "all_sections" + WHITESPACE@3327..3328 " " + ASSIGN@3328..3329 "=" + WHITESPACE@3329..3330 " " + EXPR_ARRAY_COMP@3330..3423 + L_BRACK@3330..3331 "[" + WHITESPACE@3331..3338 "\n " + EXPR_APPLY@3338..3371 + EXPR_VAR@3338..3351 + NAME@3338..3351 + IDENT@3338..3351 "section_lines" + ARGS_DESC@3351..3371 + L_PAREN@3351..3352 "(" + ARG@3352..3353 + EXPR_VAR@3352..3353 + NAME@3352..3353 + IDENT@3352..3353 "k" + COMMA@3353..3354 "," + WHITESPACE@3354..3355 " " + ARG@3355..3370 + EXPR_INDEX_EXPR@3355..3370 + LHS_EXPR@3355..3367 + EXPR_INDEX@3355..3367 + EXPR_VAR@3355..3358 + NAME@3355..3358 + IDENT@3355..3358 "ini" + DOT@3358..3359 "." + NAME@3359..3367 + IDENT@3359..3367 "sections" + L_BRACK@3367..3368 "[" + EXPR_VAR@3368..3369 + NAME@3368..3369 + IDENT@3368..3369 "k" + R_BRACK@3369..3370 "]" + R_PAREN@3370..3371 ")" + WHITESPACE@3371..3378 "\n " + FOR_SPEC@3378..3417 + FOR_KW@3378..3381 "for" + WHITESPACE@3381..3382 " " + NAME@3382..3383 + IDENT@3382..3383 "k" + WHITESPACE@3383..3384 " " + IN_KW@3384..3386 "in" + WHITESPACE@3386..3387 " " + EXPR_APPLY@3387..3417 + EXPR_INDEX@3387..3403 + EXPR_VAR@3387..3390 + NAME@3387..3390 + IDENT@3387..3390 "std" + DOT@3390..3391 "." + NAME@3391..3403 + IDENT@3391..3403 "objectFields" + ARGS_DESC@3403..3417 + L_PAREN@3403..3404 "(" + ARG@3404..3416 + EXPR_INDEX@3404..3416 + EXPR_VAR@3404..3407 + NAME@3404..3407 + IDENT@3404..3407 "ini" + DOT@3407..3408 "." + NAME@3408..3416 + IDENT@3408..3416 "sections" + R_PAREN@3416..3417 ")" + WHITESPACE@3417..3422 "\n " + R_BRACK@3422..3423 "]" + SEMI@3423..3424 ";" + WHITESPACE@3424..3429 "\n " + EXPR_APPLY@3429..3495 + EXPR_INDEX@3429..3437 + EXPR_VAR@3429..3432 + NAME@3429..3432 + IDENT@3429..3432 "std" + DOT@3432..3433 "." + NAME@3433..3437 + IDENT@3433..3437 "join" + ARGS_DESC@3437..3495 + L_PAREN@3437..3438 "(" + ARG@3438..3442 + EXPR_STRING@3438..3442 + STRING_SINGLE@3438..3442 "'\\n'" + COMMA@3442..3443 "," + WHITESPACE@3443..3444 " " + ARG@3444..3494 + EXPR_BINARY@3444..3494 + LHS_EXPR@3444..3487 + EXPR_BINARY@3444..3487 + LHS_EXPR@3444..3453 + EXPR_VAR@3444..3453 + NAME@3444..3453 + IDENT@3444..3453 "main_body" + WHITESPACE@3453..3454 " " + PLUS@3454..3455 "+" + WHITESPACE@3455..3456 " " + EXPR_APPLY@3456..3487 + EXPR_INDEX@3456..3473 + EXPR_VAR@3456..3459 + NAME@3456..3459 + IDENT@3456..3459 "std" + DOT@3459..3460 "." + NAME@3460..3473 + IDENT@3460..3473 "flattenArrays" + ARGS_DESC@3473..3487 + L_PAREN@3473..3474 "(" + ARG@3474..3486 + EXPR_VAR@3474..3486 + NAME@3474..3486 + IDENT@3474..3486 "all_sections" + R_PAREN@3486..3487 ")" + WHITESPACE@3487..3488 " " + PLUS@3488..3489 "+" + WHITESPACE@3489..3490 " " + EXPR_ARRAY@3490..3494 + L_BRACK@3490..3491 "[" + EXPR_STRING@3491..3493 + STRING_SINGLE@3491..3493 "''" + R_BRACK@3493..3494 "]" + R_PAREN@3494..3495 ")" + COMMA@3495..3496 "," + WHITESPACE@3496..3500 "\n\n " + MEMBER_FIELD@3500..3553 + FIELD_METHOD@3500..3553 + FIELD_NAME_FIXED@3500..3512 + NAME@3500..3512 + IDENT@3500..3512 "manifestToml" + PARAMS_DESC@3512..3519 + L_PAREN@3512..3513 "(" + PARAM@3513..3518 + DESTRUCT_FULL@3513..3518 + NAME@3513..3518 + IDENT@3513..3518 "value" + R_PAREN@3518..3519 ")" + COLONCOLON@3519..3521 "::" + WHITESPACE@3521..3522 " " + EXPR_APPLY@3522..3553 + EXPR_INDEX@3522..3540 + EXPR_VAR@3522..3525 + NAME@3522..3525 + IDENT@3522..3525 "std" + DOT@3525..3526 "." + NAME@3526..3540 + IDENT@3526..3540 "manifestTomlEx" + ARGS_DESC@3540..3553 + L_PAREN@3540..3541 "(" + ARG@3541..3546 + EXPR_VAR@3541..3546 + NAME@3541..3546 + IDENT@3541..3546 "value" + COMMA@3546..3547 "," + WHITESPACE@3547..3548 " " + ARG@3548..3552 + EXPR_STRING@3548..3552 + STRING_SINGLE@3548..3552 "' '" + R_PAREN@3552..3553 ")" + COMMA@3553..3554 "," + WHITESPACE@3554..3558 "\n\n " + MEMBER_FIELD@3558..3613 + FIELD_METHOD@3558..3613 + FIELD_NAME_FIXED@3558..3576 + NAME@3558..3576 + IDENT@3558..3576 "escapeStringPython" + PARAMS_DESC@3576..3581 + L_PAREN@3576..3577 "(" + PARAM@3577..3580 + DESTRUCT_FULL@3577..3580 + NAME@3577..3580 + IDENT@3577..3580 "str" + R_PAREN@3580..3581 ")" + COLONCOLON@3581..3583 "::" + WHITESPACE@3583..3588 "\n " + EXPR_APPLY@3588..3613 + EXPR_INDEX@3588..3608 + EXPR_VAR@3588..3591 + NAME@3588..3591 + IDENT@3588..3591 "std" + DOT@3591..3592 "." + NAME@3592..3608 + IDENT@3592..3608 "escapeStringJson" + ARGS_DESC@3608..3613 + L_PAREN@3608..3609 "(" + ARG@3609..3612 + EXPR_VAR@3609..3612 + NAME@3609..3612 + IDENT@3609..3612 "str" + R_PAREN@3612..3613 ")" + COMMA@3613..3614 "," + WHITESPACE@3614..3618 "\n\n " + MEMBER_FIELD@3618..3835 + FIELD_METHOD@3618..3835 + FIELD_NAME_FIXED@3618..3634 + NAME@3618..3634 + IDENT@3618..3634 "escapeStringBash" + PARAMS_DESC@3634..3640 + L_PAREN@3634..3635 "(" + PARAM@3635..3639 + DESTRUCT_FULL@3635..3639 + NAME@3635..3639 + IDENT@3635..3639 "str_" + R_PAREN@3639..3640 ")" + COLONCOLON@3640..3642 "::" + WHITESPACE@3642..3647 "\n " + EXPR_LOCAL@3647..3835 + LOCAL_KW@3647..3652 "local" + WHITESPACE@3652..3653 " " + BIND_DESTRUCT@3653..3677 + DESTRUCT_FULL@3653..3656 + NAME@3653..3656 + IDENT@3653..3656 "str" + WHITESPACE@3656..3657 " " + ASSIGN@3657..3658 "=" + WHITESPACE@3658..3659 " " + EXPR_APPLY@3659..3677 + EXPR_INDEX@3659..3671 + EXPR_VAR@3659..3662 + NAME@3659..3662 + IDENT@3659..3662 "std" + DOT@3662..3663 "." + NAME@3663..3671 + IDENT@3663..3671 "toString" + ARGS_DESC@3671..3677 + L_PAREN@3671..3672 "(" + ARG@3672..3676 + EXPR_VAR@3672..3676 + NAME@3672..3676 + IDENT@3672..3676 "str_" + R_PAREN@3676..3677 ")" + SEMI@3677..3678 ";" + WHITESPACE@3678..3683 "\n " + EXPR_LOCAL@3683..3835 + LOCAL_KW@3683..3688 "local" + WHITESPACE@3688..3689 " " + BIND_FUNCTION@3689..3764 + NAME@3689..3694 + IDENT@3689..3694 "trans" + PARAMS_DESC@3694..3698 + L_PAREN@3694..3695 "(" + PARAM@3695..3697 + DESTRUCT_FULL@3695..3697 + NAME@3695..3697 + IDENT@3695..3697 "ch" + R_PAREN@3697..3698 ")" + WHITESPACE@3698..3699 " " + ASSIGN@3699..3700 "=" + WHITESPACE@3700..3707 "\n " + EXPR_IF_THEN_ELSE@3707..3764 + IF_KW@3707..3709 "if" + WHITESPACE@3709..3710 " " + EXPR_BINARY@3710..3719 + LHS_EXPR@3710..3712 + EXPR_VAR@3710..3712 + NAME@3710..3712 + IDENT@3710..3712 "ch" + WHITESPACE@3712..3713 " " + EQ@3713..3715 "==" + WHITESPACE@3715..3716 " " + EXPR_STRING@3716..3719 + STRING_DOUBLE@3716..3719 "\"'\"" + WHITESPACE@3719..3720 " " + THEN_KW@3720..3724 "then" + WHITESPACE@3724..3733 "\n " + TRUE_EXPR@3733..3742 + EXPR_STRING@3733..3742 + STRING_DOUBLE@3733..3742 "\"'\\\"'\\\"'\"" + WHITESPACE@3742..3749 "\n " + ELSE_KW@3749..3753 "else" + WHITESPACE@3753..3762 "\n " + FALSE_EXPR@3762..3764 + EXPR_VAR@3762..3764 + NAME@3762..3764 + IDENT@3762..3764 "ch" + SEMI@3764..3765 ";" + WHITESPACE@3765..3770 "\n " + EXPR_BINARY@3770..3835 + LHS_EXPR@3770..3776 + EXPR_STRING@3770..3776 + STRING_DOUBLE@3770..3776 "\"'%s'\"" + WHITESPACE@3776..3777 " " + MODULO@3777..3778 "%" + WHITESPACE@3778..3779 " " + EXPR_APPLY@3779..3835 + EXPR_INDEX@3779..3787 + EXPR_VAR@3779..3782 + NAME@3779..3782 + IDENT@3779..3782 "std" + DOT@3782..3783 "." + NAME@3783..3787 + IDENT@3783..3787 "join" + ARGS_DESC@3787..3835 + L_PAREN@3787..3788 "(" + ARG@3788..3790 + EXPR_STRING@3788..3790 + STRING_SINGLE@3788..3790 "''" + COMMA@3790..3791 "," + WHITESPACE@3791..3792 " " + ARG@3792..3834 + EXPR_ARRAY_COMP@3792..3834 + L_BRACK@3792..3793 "[" + EXPR_APPLY@3793..3802 + EXPR_VAR@3793..3798 + NAME@3793..3798 + IDENT@3793..3798 "trans" + ARGS_DESC@3798..3802 + L_PAREN@3798..3799 "(" + ARG@3799..3801 + EXPR_VAR@3799..3801 + NAME@3799..3801 + IDENT@3799..3801 "ch" + R_PAREN@3801..3802 ")" + WHITESPACE@3802..3803 " " + FOR_SPEC@3803..3833 + FOR_KW@3803..3806 "for" + WHITESPACE@3806..3807 " " + NAME@3807..3809 + IDENT@3807..3809 "ch" + WHITESPACE@3809..3810 " " + IN_KW@3810..3812 "in" + WHITESPACE@3812..3813 " " + EXPR_APPLY@3813..3833 + EXPR_INDEX@3813..3828 + EXPR_VAR@3813..3816 + NAME@3813..3816 + IDENT@3813..3816 "std" + DOT@3816..3817 "." + NAME@3817..3828 + IDENT@3817..3828 "stringChars" + ARGS_DESC@3828..3833 + L_PAREN@3828..3829 "(" + ARG@3829..3832 + EXPR_VAR@3829..3832 + NAME@3829..3832 + IDENT@3829..3832 "str" + R_PAREN@3832..3833 ")" + R_BRACK@3833..3834 "]" + R_PAREN@3834..3835 ")" + COMMA@3835..3836 "," + WHITESPACE@3836..3840 "\n\n " + MEMBER_FIELD@3840..4054 + FIELD_METHOD@3840..4054 + FIELD_NAME_FIXED@3840..3859 + NAME@3840..3859 + IDENT@3840..3859 "escapeStringDollars" + PARAMS_DESC@3859..3865 + L_PAREN@3859..3860 "(" + PARAM@3860..3864 + DESTRUCT_FULL@3860..3864 + NAME@3860..3864 + IDENT@3860..3864 "str_" + R_PAREN@3864..3865 ")" + COLONCOLON@3865..3867 "::" + WHITESPACE@3867..3872 "\n " + EXPR_LOCAL@3872..4054 + LOCAL_KW@3872..3877 "local" + WHITESPACE@3877..3878 " " + BIND_DESTRUCT@3878..3902 + DESTRUCT_FULL@3878..3881 + NAME@3878..3881 + IDENT@3878..3881 "str" + WHITESPACE@3881..3882 " " + ASSIGN@3882..3883 "=" + WHITESPACE@3883..3884 " " + EXPR_APPLY@3884..3902 + EXPR_INDEX@3884..3896 + EXPR_VAR@3884..3887 + NAME@3884..3887 + IDENT@3884..3887 "std" + DOT@3887..3888 "." + NAME@3888..3896 + IDENT@3888..3896 "toString" + ARGS_DESC@3896..3902 + L_PAREN@3896..3897 "(" + ARG@3897..3901 + EXPR_VAR@3897..3901 + NAME@3897..3901 + IDENT@3897..3901 "str_" + R_PAREN@3901..3902 ")" + SEMI@3902..3903 ";" + WHITESPACE@3903..3908 "\n " + EXPR_LOCAL@3908..4054 + LOCAL_KW@3908..3913 "local" + WHITESPACE@3913..3914 " " + BIND_FUNCTION@3914..3984 + NAME@3914..3919 + IDENT@3914..3919 "trans" + PARAMS_DESC@3919..3923 + L_PAREN@3919..3920 "(" + PARAM@3920..3922 + DESTRUCT_FULL@3920..3922 + NAME@3920..3922 + IDENT@3920..3922 "ch" + R_PAREN@3922..3923 ")" + WHITESPACE@3923..3924 " " + ASSIGN@3924..3925 "=" + WHITESPACE@3925..3932 "\n " + EXPR_IF_THEN_ELSE@3932..3984 + IF_KW@3932..3934 "if" + WHITESPACE@3934..3935 " " + EXPR_BINARY@3935..3944 + LHS_EXPR@3935..3937 + EXPR_VAR@3935..3937 + NAME@3935..3937 + IDENT@3935..3937 "ch" + WHITESPACE@3937..3938 " " + EQ@3938..3940 "==" + WHITESPACE@3940..3941 " " + EXPR_STRING@3941..3944 + STRING_SINGLE@3941..3944 "'$'" + WHITESPACE@3944..3945 " " + THEN_KW@3945..3949 "then" + WHITESPACE@3949..3958 "\n " + TRUE_EXPR@3958..3962 + EXPR_STRING@3958..3962 + STRING_SINGLE@3958..3962 "'$$'" + WHITESPACE@3962..3969 "\n " + ELSE_KW@3969..3973 "else" + WHITESPACE@3973..3982 "\n " + FALSE_EXPR@3982..3984 + EXPR_VAR@3982..3984 + NAME@3982..3984 + IDENT@3982..3984 "ch" + SEMI@3984..3985 ";" + WHITESPACE@3985..3990 "\n " + EXPR_APPLY@3990..4054 + EXPR_INDEX@3990..3999 + EXPR_VAR@3990..3993 + NAME@3990..3993 + IDENT@3990..3993 "std" + DOT@3993..3994 "." + NAME@3994..3999 + IDENT@3994..3999 "foldl" + ARGS_DESC@3999..4054 + L_PAREN@3999..4000 "(" + ARG@4000..4027 + EXPR_FUNCTION@4000..4027 + FUNCTION_KW@4000..4008 "function" + PARAMS_DESC@4008..4014 + L_PAREN@4008..4009 "(" + PARAM@4009..4010 + DESTRUCT_FULL@4009..4010 + NAME@4009..4010 + IDENT@4009..4010 "a" + COMMA@4010..4011 "," + WHITESPACE@4011..4012 " " + PARAM@4012..4013 + DESTRUCT_FULL@4012..4013 + NAME@4012..4013 + IDENT@4012..4013 "b" + R_PAREN@4013..4014 ")" + WHITESPACE@4014..4015 " " + EXPR_BINARY@4015..4027 + LHS_EXPR@4015..4016 + EXPR_VAR@4015..4016 + NAME@4015..4016 + IDENT@4015..4016 "a" + WHITESPACE@4016..4017 " " + PLUS@4017..4018 "+" + WHITESPACE@4018..4019 " " + EXPR_APPLY@4019..4027 + EXPR_VAR@4019..4024 + NAME@4019..4024 + IDENT@4019..4024 "trans" + ARGS_DESC@4024..4027 + L_PAREN@4024..4025 "(" + ARG@4025..4026 + EXPR_VAR@4025..4026 + NAME@4025..4026 + IDENT@4025..4026 "b" + R_PAREN@4026..4027 ")" + COMMA@4027..4028 "," + WHITESPACE@4028..4029 " " + ARG@4029..4049 + EXPR_APPLY@4029..4049 + EXPR_INDEX@4029..4044 + EXPR_VAR@4029..4032 + NAME@4029..4032 + IDENT@4029..4032 "std" + DOT@4032..4033 "." + NAME@4033..4044 + IDENT@4033..4044 "stringChars" + ARGS_DESC@4044..4049 + L_PAREN@4044..4045 "(" + ARG@4045..4048 + EXPR_VAR@4045..4048 + NAME@4045..4048 + IDENT@4045..4048 "str" + R_PAREN@4048..4049 ")" + COMMA@4049..4050 "," + WHITESPACE@4050..4051 " " + ARG@4051..4053 + EXPR_STRING@4051..4053 + STRING_SINGLE@4051..4053 "''" + R_PAREN@4053..4054 ")" + COMMA@4054..4055 "," + WHITESPACE@4055..4059 "\n\n " + MEMBER_BIND_STMT@4059..4174 + OBJ_LOCAL@4059..4174 + LOCAL_KW@4059..4064 "local" + WHITESPACE@4064..4065 " " + BIND_DESTRUCT@4065..4174 + DESTRUCT_FULL@4065..4076 + NAME@4065..4076 + IDENT@4065..4076 "xml_escapes" + WHITESPACE@4076..4077 " " + ASSIGN@4077..4078 "=" + WHITESPACE@4078..4079 " " + EXPR_OBJECT@4079..4174 + OBJ_BODY_MEMBER_LIST@4079..4174 + L_BRACE@4079..4080 "{" + WHITESPACE@4080..4085 "\n " + MEMBER_FIELD@4085..4096 + FIELD_NORMAL@4085..4096 + FIELD_NAME_FIXED@4085..4088 + STRING_SINGLE@4085..4088 "'<'" + COLON@4088..4089 ":" + WHITESPACE@4089..4090 " " + EXPR_STRING@4090..4096 + STRING_SINGLE@4090..4096 "'<'" + COMMA@4096..4097 "," + WHITESPACE@4097..4102 "\n " + MEMBER_FIELD@4102..4113 + FIELD_NORMAL@4102..4113 + FIELD_NAME_FIXED@4102..4105 + STRING_SINGLE@4102..4105 "'>'" + COLON@4105..4106 ":" + WHITESPACE@4106..4107 " " + EXPR_STRING@4107..4113 + STRING_SINGLE@4107..4113 "'>'" + COMMA@4113..4114 "," + WHITESPACE@4114..4119 "\n " + MEMBER_FIELD@4119..4131 + FIELD_NORMAL@4119..4131 + FIELD_NAME_FIXED@4119..4122 + STRING_SINGLE@4119..4122 "'&'" + COLON@4122..4123 ":" + WHITESPACE@4123..4124 " " + EXPR_STRING@4124..4131 + STRING_SINGLE@4124..4131 "'&'" + COMMA@4131..4132 "," + WHITESPACE@4132..4137 "\n " + MEMBER_FIELD@4137..4150 + FIELD_NORMAL@4137..4150 + FIELD_NAME_FIXED@4137..4140 + STRING_SINGLE@4137..4140 "'\"'" + COLON@4140..4141 ":" + WHITESPACE@4141..4142 " " + EXPR_STRING@4142..4150 + STRING_SINGLE@4142..4150 "'"'" + COMMA@4150..4151 "," + WHITESPACE@4151..4156 "\n " + MEMBER_FIELD@4156..4169 + FIELD_NORMAL@4156..4169 + FIELD_NAME_FIXED@4156..4159 + STRING_DOUBLE@4156..4159 "\"'\"" + COLON@4159..4160 ":" + WHITESPACE@4160..4161 " " + EXPR_STRING@4161..4169 + STRING_SINGLE@4161..4169 "'''" + COMMA@4169..4170 "," + WHITESPACE@4170..4173 "\n " + R_BRACE@4173..4174 "}" + COMMA@4174..4175 "," + WHITESPACE@4175..4179 "\n\n " + MEMBER_FIELD@4179..4318 + FIELD_METHOD@4179..4318 + FIELD_NAME_FIXED@4179..4194 + NAME@4179..4194 + IDENT@4179..4194 "escapeStringXML" + PARAMS_DESC@4194..4200 + L_PAREN@4194..4195 "(" + PARAM@4195..4199 + DESTRUCT_FULL@4195..4199 + NAME@4195..4199 + IDENT@4195..4199 "str_" + R_PAREN@4199..4200 ")" + COLONCOLON@4200..4202 "::" + WHITESPACE@4202..4207 "\n " + EXPR_LOCAL@4207..4318 + LOCAL_KW@4207..4212 "local" + WHITESPACE@4212..4213 " " + BIND_DESTRUCT@4213..4237 + DESTRUCT_FULL@4213..4216 + NAME@4213..4216 + IDENT@4213..4216 "str" + WHITESPACE@4216..4217 " " + ASSIGN@4217..4218 "=" + WHITESPACE@4218..4219 " " + EXPR_APPLY@4219..4237 + EXPR_INDEX@4219..4231 + EXPR_VAR@4219..4222 + NAME@4219..4222 + IDENT@4219..4222 "std" + DOT@4222..4223 "." + NAME@4223..4231 + IDENT@4223..4231 "toString" + ARGS_DESC@4231..4237 + L_PAREN@4231..4232 "(" + ARG@4232..4236 + EXPR_VAR@4232..4236 + NAME@4232..4236 + IDENT@4232..4236 "str_" + R_PAREN@4236..4237 ")" + SEMI@4237..4238 ";" + WHITESPACE@4238..4243 "\n " + EXPR_APPLY@4243..4318 + EXPR_INDEX@4243..4251 + EXPR_VAR@4243..4246 + NAME@4243..4246 + IDENT@4243..4246 "std" + DOT@4246..4247 "." + NAME@4247..4251 + IDENT@4247..4251 "join" + ARGS_DESC@4251..4318 + L_PAREN@4251..4252 "(" + ARG@4252..4254 + EXPR_STRING@4252..4254 + STRING_SINGLE@4252..4254 "''" + COMMA@4254..4255 "," + WHITESPACE@4255..4256 " " + ARG@4256..4317 + EXPR_ARRAY_COMP@4256..4317 + L_BRACK@4256..4257 "[" + EXPR_APPLY@4257..4285 + EXPR_INDEX@4257..4264 + EXPR_VAR@4257..4260 + NAME@4257..4260 + IDENT@4257..4260 "std" + DOT@4260..4261 "." + NAME@4261..4264 + IDENT@4261..4264 "get" + ARGS_DESC@4264..4285 + L_PAREN@4264..4265 "(" + ARG@4265..4276 + EXPR_VAR@4265..4276 + NAME@4265..4276 + IDENT@4265..4276 "xml_escapes" + COMMA@4276..4277 "," + WHITESPACE@4277..4278 " " + ARG@4278..4280 + EXPR_VAR@4278..4280 + NAME@4278..4280 + IDENT@4278..4280 "ch" + COMMA@4280..4281 "," + WHITESPACE@4281..4282 " " + ARG@4282..4284 + EXPR_VAR@4282..4284 + NAME@4282..4284 + IDENT@4282..4284 "ch" + R_PAREN@4284..4285 ")" + WHITESPACE@4285..4286 " " + FOR_SPEC@4286..4316 + FOR_KW@4286..4289 "for" + WHITESPACE@4289..4290 " " + NAME@4290..4292 + IDENT@4290..4292 "ch" + WHITESPACE@4292..4293 " " + IN_KW@4293..4295 "in" + WHITESPACE@4295..4296 " " + EXPR_APPLY@4296..4316 + EXPR_INDEX@4296..4311 + EXPR_VAR@4296..4299 + NAME@4296..4299 + IDENT@4296..4299 "std" + DOT@4299..4300 "." + NAME@4300..4311 + IDENT@4300..4311 "stringChars" + ARGS_DESC@4311..4316 + L_PAREN@4311..4312 "(" + ARG@4312..4315 + EXPR_VAR@4312..4315 + NAME@4312..4315 + IDENT@4312..4315 "str" + R_PAREN@4315..4316 ")" + R_BRACK@4316..4317 "]" + R_PAREN@4317..4318 ")" + COMMA@4318..4319 "," + WHITESPACE@4319..4323 "\n\n " + MEMBER_FIELD@4323..4389 + FIELD_METHOD@4323..4389 + FIELD_NAME_FIXED@4323..4335 + NAME@4323..4335 + IDENT@4323..4335 "manifestJson" + PARAMS_DESC@4335..4342 + L_PAREN@4335..4336 "(" + PARAM@4336..4341 + DESTRUCT_FULL@4336..4341 + NAME@4336..4341 + IDENT@4336..4341 "value" + R_PAREN@4341..4342 ")" + COLONCOLON@4342..4344 "::" + WHITESPACE@4344..4345 " " + EXPR_APPLY@4345..4389 + EXPR_INDEX@4345..4363 + EXPR_VAR@4345..4348 + NAME@4345..4348 + IDENT@4345..4348 "std" + DOT@4348..4349 "." + NAME@4349..4363 + IDENT@4349..4363 "manifestJsonEx" + ARGS_DESC@4363..4389 + L_PAREN@4363..4364 "(" + ARG@4364..4369 + EXPR_VAR@4364..4369 + NAME@4364..4369 + IDENT@4364..4369 "value" + COMMA@4369..4370 "," + WHITESPACE@4370..4371 " " + ARG@4371..4377 + EXPR_STRING@4371..4377 + STRING_SINGLE@4371..4377 "' '" + R_PAREN@4377..4378 ")" + WHITESPACE@4378..4379 " " + TAILSTRICT_KW@4379..4389 "tailstrict" + COMMA@4389..4390 "," + WHITESPACE@4390..4394 "\n\n " + MEMBER_FIELD@4394..4462 + FIELD_METHOD@4394..4462 + FIELD_NAME_FIXED@4394..4414 + NAME@4394..4414 + IDENT@4394..4414 "manifestJsonMinified" + PARAMS_DESC@4414..4421 + L_PAREN@4414..4415 "(" + PARAM@4415..4420 + DESTRUCT_FULL@4415..4420 + NAME@4415..4420 + IDENT@4415..4420 "value" + R_PAREN@4420..4421 ")" + COLONCOLON@4421..4423 "::" + WHITESPACE@4423..4424 " " + EXPR_APPLY@4424..4462 + EXPR_INDEX@4424..4442 + EXPR_VAR@4424..4427 + NAME@4424..4427 + IDENT@4424..4427 "std" + DOT@4427..4428 "." + NAME@4428..4442 + IDENT@4428..4442 "manifestJsonEx" + ARGS_DESC@4442..4462 + L_PAREN@4442..4443 "(" + ARG@4443..4448 + EXPR_VAR@4443..4448 + NAME@4443..4448 + IDENT@4443..4448 "value" + COMMA@4448..4449 "," + WHITESPACE@4449..4450 " " + ARG@4450..4452 + EXPR_STRING@4450..4452 + STRING_SINGLE@4450..4452 "''" + COMMA@4452..4453 "," + WHITESPACE@4453..4454 " " + ARG@4454..4456 + EXPR_STRING@4454..4456 + STRING_SINGLE@4454..4456 "''" + COMMA@4456..4457 "," + WHITESPACE@4457..4458 " " + ARG@4458..4461 + EXPR_STRING@4458..4461 + STRING_SINGLE@4458..4461 "':'" + R_PAREN@4461..4462 ")" + COMMA@4462..4463 "," + WHITESPACE@4463..4467 "\n\n " + MEMBER_FIELD@4467..4852 + FIELD_METHOD@4467..4852 + FIELD_NAME_FIXED@4467..4485 + NAME@4467..4485 + IDENT@4467..4485 "manifestYamlStream" + PARAMS_DESC@4485..4560 + L_PAREN@4485..4486 "(" + PARAM@4486..4491 + DESTRUCT_FULL@4486..4491 + NAME@4486..4491 + IDENT@4486..4491 "value" + COMMA@4491..4492 "," + WHITESPACE@4492..4493 " " + PARAM@4493..4521 + DESTRUCT_FULL@4493..4515 + NAME@4493..4515 + IDENT@4493..4515 "indent_array_in_object" + ASSIGN@4515..4516 "=" + EXPR_LITERAL@4516..4521 + FALSE_KW@4516..4521 "false" + COMMA@4521..4522 "," + WHITESPACE@4522..4523 " " + PARAM@4523..4542 + DESTRUCT_FULL@4523..4537 + NAME@4523..4537 + IDENT@4523..4537 "c_document_end" + ASSIGN@4537..4538 "=" + EXPR_LITERAL@4538..4542 + TRUE_KW@4538..4542 "true" + COMMA@4542..4543 "," + WHITESPACE@4543..4544 " " + PARAM@4544..4559 + DESTRUCT_FULL@4544..4554 + NAME@4544..4554 + IDENT@4544..4554 "quote_keys" + ASSIGN@4554..4555 "=" + EXPR_LITERAL@4555..4559 + TRUE_KW@4555..4559 "true" + R_PAREN@4559..4560 ")" + COLONCOLON@4560..4562 "::" + WHITESPACE@4562..4567 "\n " + EXPR_IF_THEN_ELSE@4567..4852 + IF_KW@4567..4569 "if" + WHITESPACE@4569..4570 " " + EXPR_UNARY@4570..4589 + NOT@4570..4571 "!" + EXPR_APPLY@4571..4589 + EXPR_INDEX@4571..4582 + EXPR_VAR@4571..4574 + NAME@4571..4574 + IDENT@4571..4574 "std" + DOT@4574..4575 "." + NAME@4575..4582 + IDENT@4575..4582 "isArray" + ARGS_DESC@4582..4589 + L_PAREN@4582..4583 "(" + ARG@4583..4588 + EXPR_VAR@4583..4588 + NAME@4583..4588 + IDENT@4583..4588 "value" + R_PAREN@4588..4589 ")" + WHITESPACE@4589..4590 " " + THEN_KW@4590..4594 "then" + WHITESPACE@4594..4601 "\n " + TRUE_EXPR@4601..4669 + EXPR_ERROR@4601..4669 + ERROR_KW@4601..4606 "error" + WHITESPACE@4606..4607 " " + EXPR_BINARY@4607..4669 + LHS_EXPR@4607..4651 + EXPR_STRING@4607..4651 + STRING_SINGLE@4607..4651 "'manifestYamlStream o ..." + WHITESPACE@4651..4652 " " + PLUS@4652..4653 "+" + WHITESPACE@4653..4654 " " + EXPR_APPLY@4654..4669 + EXPR_INDEX@4654..4662 + EXPR_VAR@4654..4657 + NAME@4654..4657 + IDENT@4654..4657 "std" + DOT@4657..4658 "." + NAME@4658..4662 + IDENT@4658..4662 "type" + ARGS_DESC@4662..4669 + L_PAREN@4662..4663 "(" + ARG@4663..4668 + EXPR_VAR@4663..4668 + NAME@4663..4668 + IDENT@4663..4668 "value" + R_PAREN@4668..4669 ")" + WHITESPACE@4669..4674 "\n " + ELSE_KW@4674..4678 "else" + WHITESPACE@4678..4685 "\n " + FALSE_EXPR@4685..4852 + EXPR_BINARY@4685..4852 + LHS_EXPR@4685..4807 + EXPR_BINARY@4685..4807 + LHS_EXPR@4685..4692 + EXPR_STRING@4685..4692 + STRING_SINGLE@4685..4692 "'---\\n'" + WHITESPACE@4692..4693 " " + PLUS@4693..4694 "+" + WHITESPACE@4694..4695 " " + EXPR_APPLY@4695..4807 + EXPR_INDEX@4695..4703 + EXPR_VAR@4695..4698 + NAME@4695..4698 + IDENT@4695..4698 "std" + DOT@4698..4699 "." + NAME@4699..4703 + IDENT@4699..4703 "join" + ARGS_DESC@4703..4807 + L_PAREN@4703..4704 "(" + WHITESPACE@4704..4713 "\n " + ARG@4713..4722 + EXPR_STRING@4713..4722 + STRING_SINGLE@4713..4722 "'\\n---\\n'" + COMMA@4722..4723 "," + WHITESPACE@4723..4724 " " + ARG@4724..4799 + EXPR_ARRAY_COMP@4724..4799 + L_BRACK@4724..4725 "[" + EXPR_APPLY@4725..4783 + EXPR_INDEX@4725..4744 + EXPR_VAR@4725..4728 + NAME@4725..4728 + IDENT@4725..4728 "std" + DOT@4728..4729 "." + NAME@4729..4744 + IDENT@4729..4744 "manifestYamlDoc" + ARGS_DESC@4744..4783 + L_PAREN@4744..4745 "(" + ARG@4745..4746 + EXPR_VAR@4745..4746 + NAME@4745..4746 + IDENT@4745..4746 "e" + COMMA@4746..4747 "," + WHITESPACE@4747..4748 " " + ARG@4748..4770 + EXPR_VAR@4748..4770 + NAME@4748..4770 + IDENT@4748..4770 "indent_array_in_object" + COMMA@4770..4771 "," + WHITESPACE@4771..4772 " " + ARG@4772..4782 + EXPR_VAR@4772..4782 + NAME@4772..4782 + IDENT@4772..4782 "quote_keys" + R_PAREN@4782..4783 ")" + WHITESPACE@4783..4784 " " + FOR_SPEC@4784..4798 + FOR_KW@4784..4787 "for" + WHITESPACE@4787..4788 " " + NAME@4788..4789 + IDENT@4788..4789 "e" + WHITESPACE@4789..4790 " " + IN_KW@4790..4792 "in" + WHITESPACE@4792..4793 " " + EXPR_VAR@4793..4798 + NAME@4793..4798 + IDENT@4793..4798 "value" + R_BRACK@4798..4799 "]" + WHITESPACE@4799..4806 "\n " + R_PAREN@4806..4807 ")" + WHITESPACE@4807..4808 " " + PLUS@4808..4809 "+" + WHITESPACE@4809..4810 " " + EXPR_IF_THEN_ELSE@4810..4852 + IF_KW@4810..4812 "if" + WHITESPACE@4812..4813 " " + EXPR_VAR@4813..4827 + NAME@4813..4827 + IDENT@4813..4827 "c_document_end" + WHITESPACE@4827..4828 " " + THEN_KW@4828..4832 "then" + WHITESPACE@4832..4833 " " + TRUE_EXPR@4833..4842 + EXPR_STRING@4833..4842 + STRING_SINGLE@4833..4842 "'\\n...\\n'" + WHITESPACE@4842..4843 " " + ELSE_KW@4843..4847 "else" + WHITESPACE@4847..4848 " " + FALSE_EXPR@4848..4852 + EXPR_STRING@4848..4852 + STRING_SINGLE@4848..4852 "'\\n'" + COMMA@4852..4853 "," + WHITESPACE@4853..4857 "\n\n " + MEMBER_FIELD@4857..5513 + FIELD_METHOD@4857..5513 + FIELD_NAME_FIXED@4857..4871 + NAME@4857..4871 + IDENT@4857..4871 "manifestPython" + PARAMS_DESC@4871..4874 + L_PAREN@4871..4872 "(" + PARAM@4872..4873 + DESTRUCT_FULL@4872..4873 + NAME@4872..4873 + IDENT@4872..4873 "v" + R_PAREN@4873..4874 ")" + COLONCOLON@4874..4876 "::" + WHITESPACE@4876..4881 "\n " + EXPR_IF_THEN_ELSE@4881..5513 + IF_KW@4881..4883 "if" + WHITESPACE@4883..4884 " " + EXPR_APPLY@4884..4899 + EXPR_INDEX@4884..4896 + EXPR_VAR@4884..4887 + NAME@4884..4887 + IDENT@4884..4887 "std" + DOT@4887..4888 "." + NAME@4888..4896 + IDENT@4888..4896 "isObject" + ARGS_DESC@4896..4899 + L_PAREN@4896..4897 "(" + ARG@4897..4898 + EXPR_VAR@4897..4898 + NAME@4897..4898 + IDENT@4897..4898 "v" + R_PAREN@4898..4899 ")" + WHITESPACE@4899..4900 " " + THEN_KW@4900..4904 "then" + WHITESPACE@4904..4911 "\n " + TRUE_EXPR@4911..5086 + EXPR_LOCAL@4911..5086 + LOCAL_KW@4911..4916 "local" + WHITESPACE@4916..4917 " " + BIND_DESTRUCT@4917..5045 + DESTRUCT_FULL@4917..4923 + NAME@4917..4923 + IDENT@4917..4923 "fields" + WHITESPACE@4923..4924 " " + ASSIGN@4924..4925 "=" + WHITESPACE@4925..4926 " " + EXPR_ARRAY_COMP@4926..5045 + L_BRACK@4926..4927 "[" + WHITESPACE@4927..4936 "\n " + EXPR_BINARY@4936..5000 + LHS_EXPR@4936..4944 + EXPR_STRING@4936..4944 + STRING_SINGLE@4936..4944 "'%s: %s'" + WHITESPACE@4944..4945 " " + MODULO@4945..4946 "%" + WHITESPACE@4946..4947 " " + EXPR_ARRAY@4947..5000 + L_BRACK@4947..4948 "[" + EXPR_APPLY@4948..4973 + EXPR_INDEX@4948..4970 + EXPR_VAR@4948..4951 + NAME@4948..4951 + IDENT@4948..4951 "std" + DOT@4951..4952 "." + NAME@4952..4970 + IDENT@4952..4970 "escapeStringPython" + ARGS_DESC@4970..4973 + L_PAREN@4970..4971 "(" + ARG@4971..4972 + EXPR_VAR@4971..4972 + NAME@4971..4972 + IDENT@4971..4972 "k" + R_PAREN@4972..4973 ")" + COMMA@4973..4974 "," + WHITESPACE@4974..4975 " " + EXPR_APPLY@4975..4999 + EXPR_INDEX@4975..4993 + EXPR_VAR@4975..4978 + NAME@4975..4978 + IDENT@4975..4978 "std" + DOT@4978..4979 "." + NAME@4979..4993 + IDENT@4979..4993 "manifestPython" + ARGS_DESC@4993..4999 + L_PAREN@4993..4994 "(" + ARG@4994..4998 + EXPR_INDEX_EXPR@4994..4998 + LHS_EXPR@4994..4995 + EXPR_VAR@4994..4995 + NAME@4994..4995 + IDENT@4994..4995 "v" + L_BRACK@4995..4996 "[" + EXPR_VAR@4996..4997 + NAME@4996..4997 + IDENT@4996..4997 "k" + R_BRACK@4997..4998 "]" + R_PAREN@4998..4999 ")" + R_BRACK@4999..5000 "]" + WHITESPACE@5000..5009 "\n " + FOR_SPEC@5009..5037 + FOR_KW@5009..5012 "for" + WHITESPACE@5012..5013 " " + NAME@5013..5014 + IDENT@5013..5014 "k" + WHITESPACE@5014..5015 " " + IN_KW@5015..5017 "in" + WHITESPACE@5017..5018 " " + EXPR_APPLY@5018..5037 + EXPR_INDEX@5018..5034 + EXPR_VAR@5018..5021 + NAME@5018..5021 + IDENT@5018..5021 "std" + DOT@5021..5022 "." + NAME@5022..5034 + IDENT@5022..5034 "objectFields" + ARGS_DESC@5034..5037 + L_PAREN@5034..5035 "(" + ARG@5035..5036 + EXPR_VAR@5035..5036 + NAME@5035..5036 + IDENT@5035..5036 "v" + R_PAREN@5036..5037 ")" + WHITESPACE@5037..5044 "\n " + R_BRACK@5044..5045 "]" + SEMI@5045..5046 ";" + WHITESPACE@5046..5053 "\n " + EXPR_BINARY@5053..5086 + LHS_EXPR@5053..5059 + EXPR_STRING@5053..5059 + STRING_SINGLE@5053..5059 "'{%s}'" + WHITESPACE@5059..5060 " " + MODULO@5060..5061 "%" + WHITESPACE@5061..5062 " " + EXPR_ARRAY@5062..5086 + L_BRACK@5062..5063 "[" + EXPR_APPLY@5063..5085 + EXPR_INDEX@5063..5071 + EXPR_VAR@5063..5066 + NAME@5063..5066 + IDENT@5063..5066 "std" + DOT@5066..5067 "." + NAME@5067..5071 + IDENT@5067..5071 "join" + ARGS_DESC@5071..5085 + L_PAREN@5071..5072 "(" + ARG@5072..5076 + EXPR_STRING@5072..5076 + STRING_SINGLE@5072..5076 "', '" + COMMA@5076..5077 "," + WHITESPACE@5077..5078 " " + ARG@5078..5084 + EXPR_VAR@5078..5084 + NAME@5078..5084 + IDENT@5078..5084 "fields" + R_PAREN@5084..5085 ")" + R_BRACK@5085..5086 "]" + WHITESPACE@5086..5091 "\n " + ELSE_KW@5091..5095 "else" + WHITESPACE@5095..5096 " " + FALSE_EXPR@5096..5513 + EXPR_IF_THEN_ELSE@5096..5513 + IF_KW@5096..5098 "if" + WHITESPACE@5098..5099 " " + EXPR_APPLY@5099..5113 + EXPR_INDEX@5099..5110 + EXPR_VAR@5099..5102 + NAME@5099..5102 + IDENT@5099..5102 "std" + DOT@5102..5103 "." + NAME@5103..5110 + IDENT@5103..5110 "isArray" + ARGS_DESC@5110..5113 + L_PAREN@5110..5111 "(" + ARG@5111..5112 + EXPR_VAR@5111..5112 + NAME@5111..5112 + IDENT@5111..5112 "v" + R_PAREN@5112..5113 ")" + WHITESPACE@5113..5114 " " + THEN_KW@5114..5118 "then" + WHITESPACE@5118..5125 "\n " + TRUE_EXPR@5125..5188 + EXPR_BINARY@5125..5188 + LHS_EXPR@5125..5131 + EXPR_STRING@5125..5131 + STRING_SINGLE@5125..5131 "'[%s]'" + WHITESPACE@5131..5132 " " + MODULO@5132..5133 "%" + WHITESPACE@5133..5134 " " + EXPR_ARRAY@5134..5188 + L_BRACK@5134..5135 "[" + EXPR_APPLY@5135..5187 + EXPR_INDEX@5135..5143 + EXPR_VAR@5135..5138 + NAME@5135..5138 + IDENT@5135..5138 "std" + DOT@5138..5139 "." + NAME@5139..5143 + IDENT@5139..5143 "join" + ARGS_DESC@5143..5187 + L_PAREN@5143..5144 "(" + ARG@5144..5148 + EXPR_STRING@5144..5148 + STRING_SINGLE@5144..5148 "', '" + COMMA@5148..5149 "," + WHITESPACE@5149..5150 " " + ARG@5150..5186 + EXPR_ARRAY_COMP@5150..5186 + L_BRACK@5150..5151 "[" + EXPR_APPLY@5151..5173 + EXPR_INDEX@5151..5169 + EXPR_VAR@5151..5154 + NAME@5151..5154 + IDENT@5151..5154 "std" + DOT@5154..5155 "." + NAME@5155..5169 + IDENT@5155..5169 "manifestPython" + ARGS_DESC@5169..5173 + L_PAREN@5169..5170 "(" + ARG@5170..5172 + EXPR_VAR@5170..5172 + NAME@5170..5172 + IDENT@5170..5172 "v2" + R_PAREN@5172..5173 ")" + WHITESPACE@5173..5174 " " + FOR_SPEC@5174..5185 + FOR_KW@5174..5177 "for" + WHITESPACE@5177..5178 " " + NAME@5178..5180 + IDENT@5178..5180 "v2" + WHITESPACE@5180..5181 " " + IN_KW@5181..5183 "in" + WHITESPACE@5183..5184 " " + EXPR_VAR@5184..5185 + NAME@5184..5185 + IDENT@5184..5185 "v" + R_BRACK@5185..5186 "]" + R_PAREN@5186..5187 ")" + R_BRACK@5187..5188 "]" + WHITESPACE@5188..5193 "\n " + ELSE_KW@5193..5197 "else" + WHITESPACE@5197..5198 " " + FALSE_EXPR@5198..5513 + EXPR_IF_THEN_ELSE@5198..5513 + IF_KW@5198..5200 "if" + WHITESPACE@5200..5201 " " + EXPR_APPLY@5201..5216 + EXPR_INDEX@5201..5213 + EXPR_VAR@5201..5204 + NAME@5201..5204 + IDENT@5201..5204 "std" + DOT@5204..5205 "." + NAME@5205..5213 + IDENT@5205..5213 "isString" + ARGS_DESC@5213..5216 + L_PAREN@5213..5214 "(" + ARG@5214..5215 + EXPR_VAR@5214..5215 + NAME@5214..5215 + IDENT@5214..5215 "v" + R_PAREN@5215..5216 ")" + WHITESPACE@5216..5217 " " + THEN_KW@5217..5221 "then" + WHITESPACE@5221..5228 "\n " + TRUE_EXPR@5228..5262 + EXPR_BINARY@5228..5262 + LHS_EXPR@5228..5232 + EXPR_STRING@5228..5232 + STRING_SINGLE@5228..5232 "'%s'" + WHITESPACE@5232..5233 " " + MODULO@5233..5234 "%" + WHITESPACE@5234..5235 " " + EXPR_ARRAY@5235..5262 + L_BRACK@5235..5236 "[" + EXPR_APPLY@5236..5261 + EXPR_INDEX@5236..5258 + EXPR_VAR@5236..5239 + NAME@5236..5239 + IDENT@5236..5239 "std" + DOT@5239..5240 "." + NAME@5240..5258 + IDENT@5240..5258 "escapeStringPython" + ARGS_DESC@5258..5261 + L_PAREN@5258..5259 "(" + ARG@5259..5260 + EXPR_VAR@5259..5260 + NAME@5259..5260 + IDENT@5259..5260 "v" + R_PAREN@5260..5261 ")" + R_BRACK@5261..5262 "]" + WHITESPACE@5262..5267 "\n " + ELSE_KW@5267..5271 "else" + WHITESPACE@5271..5272 " " + FALSE_EXPR@5272..5513 + EXPR_IF_THEN_ELSE@5272..5513 + IF_KW@5272..5274 "if" + WHITESPACE@5274..5275 " " + EXPR_APPLY@5275..5292 + EXPR_INDEX@5275..5289 + EXPR_VAR@5275..5278 + NAME@5275..5278 + IDENT@5275..5278 "std" + DOT@5278..5279 "." + NAME@5279..5289 + IDENT@5279..5289 "isFunction" + ARGS_DESC@5289..5292 + L_PAREN@5289..5290 "(" + ARG@5290..5291 + EXPR_VAR@5290..5291 + NAME@5290..5291 + IDENT@5290..5291 "v" + R_PAREN@5291..5292 ")" + WHITESPACE@5292..5293 " " + THEN_KW@5293..5297 "then" + WHITESPACE@5297..5304 "\n " + TRUE_EXPR@5304..5336 + EXPR_ERROR@5304..5336 + ERROR_KW@5304..5309 "error" + WHITESPACE@5309..5310 " " + EXPR_STRING@5310..5336 + STRING_SINGLE@5310..5336 "'cannot manifest func ..." + WHITESPACE@5336..5341 "\n " + ELSE_KW@5341..5345 "else" + WHITESPACE@5345..5346 " " + FALSE_EXPR@5346..5513 + EXPR_IF_THEN_ELSE@5346..5513 + IF_KW@5346..5348 "if" + WHITESPACE@5348..5349 " " + EXPR_APPLY@5349..5364 + EXPR_INDEX@5349..5361 + EXPR_VAR@5349..5352 + NAME@5349..5352 + IDENT@5349..5352 "std" + DOT@5352..5353 "." + NAME@5353..5361 + IDENT@5353..5361 "isNumber" + ARGS_DESC@5361..5364 + L_PAREN@5361..5362 "(" + ARG@5362..5363 + EXPR_VAR@5362..5363 + NAME@5362..5363 + IDENT@5362..5363 "v" + R_PAREN@5363..5364 ")" + WHITESPACE@5364..5365 " " + THEN_KW@5365..5369 "then" + WHITESPACE@5369..5376 "\n " + TRUE_EXPR@5376..5391 + EXPR_APPLY@5376..5391 + EXPR_INDEX@5376..5388 + EXPR_VAR@5376..5379 + NAME@5376..5379 + IDENT@5376..5379 "std" + DOT@5379..5380 "." + NAME@5380..5388 + IDENT@5380..5388 "toString" + ARGS_DESC@5388..5391 + L_PAREN@5388..5389 "(" + ARG@5389..5390 + EXPR_VAR@5389..5390 + NAME@5389..5390 + IDENT@5389..5390 "v" + R_PAREN@5390..5391 ")" + WHITESPACE@5391..5396 "\n " + ELSE_KW@5396..5400 "else" + WHITESPACE@5400..5401 " " + FALSE_EXPR@5401..5513 + EXPR_IF_THEN_ELSE@5401..5513 + IF_KW@5401..5403 "if" + WHITESPACE@5403..5404 " " + EXPR_BINARY@5404..5413 + LHS_EXPR@5404..5405 + EXPR_VAR@5404..5405 + NAME@5404..5405 + IDENT@5404..5405 "v" + WHITESPACE@5405..5406 " " + EQ@5406..5408 "==" + WHITESPACE@5408..5409 " " + EXPR_LITERAL@5409..5413 + TRUE_KW@5409..5413 "true" + WHITESPACE@5413..5414 " " + THEN_KW@5414..5418 "then" + WHITESPACE@5418..5425 "\n " + TRUE_EXPR@5425..5431 + EXPR_STRING@5425..5431 + STRING_SINGLE@5425..5431 "'True'" + WHITESPACE@5431..5436 "\n " + ELSE_KW@5436..5440 "else" + WHITESPACE@5440..5441 " " + FALSE_EXPR@5441..5513 + EXPR_IF_THEN_ELSE@5441..5513 + IF_KW@5441..5443 "if" + WHITESPACE@5443..5444 " " + EXPR_BINARY@5444..5454 + LHS_EXPR@5444..5445 + EXPR_VAR@5444..5445 + NAME@5444..5445 + IDENT@5444..5445 "v" + WHITESPACE@5445..5446 " " + EQ@5446..5448 "==" + WHITESPACE@5448..5449 " " + EXPR_LITERAL@5449..5454 + FALSE_KW@5449..5454 "false" + WHITESPACE@5454..5455 " " + THEN_KW@5455..5459 "then" + WHITESPACE@5459..5466 "\n " + TRUE_EXPR@5466..5473 + EXPR_STRING@5466..5473 + STRING_SINGLE@5466..5473 "'False'" + WHITESPACE@5473..5478 "\n " + ELSE_KW@5478..5482 "else" + WHITESPACE@5482..5483 " " + FALSE_EXPR@5483..5513 + EXPR_IF_THEN_ELSE@5483..5513 + IF_KW@5483..5485 "if" + WHITESPACE@5485..5486 " " + EXPR_BINARY@5486..5495 + LHS_EXPR@5486..5487 + EXPR_VAR@5486..5487 + NAME@5486..5487 + IDENT@5486..5487 "v" + WHITESPACE@5487..5488 " " + EQ@5488..5490 "==" + WHITESPACE@5490..5491 " " + EXPR_LITERAL@5491..5495 + NULL_KW@5491..5495 "null" + WHITESPACE@5495..5496 " " + THEN_KW@5496..5500 "then" + WHITESPACE@5500..5507 "\n " + TRUE_EXPR@5507..5513 + EXPR_STRING@5507..5513 + STRING_SINGLE@5507..5513 "'None'" + COMMA@5513..5514 "," + WHITESPACE@5514..5518 "\n\n " + MEMBER_FIELD@5518..5673 + FIELD_METHOD@5518..5673 + FIELD_NAME_FIXED@5518..5536 + NAME@5518..5536 + IDENT@5518..5536 "manifestPythonVars" + PARAMS_DESC@5536..5542 + L_PAREN@5536..5537 "(" + PARAM@5537..5541 + DESTRUCT_FULL@5537..5541 + NAME@5537..5541 + IDENT@5537..5541 "conf" + R_PAREN@5541..5542 ")" + COLONCOLON@5542..5544 "::" + WHITESPACE@5544..5549 "\n " + EXPR_LOCAL@5549..5673 + LOCAL_KW@5549..5554 "local" + WHITESPACE@5554..5555 " " + BIND_DESTRUCT@5555..5640 + DESTRUCT_FULL@5555..5559 + NAME@5555..5559 + IDENT@5555..5559 "vars" + WHITESPACE@5559..5560 " " + ASSIGN@5560..5561 "=" + WHITESPACE@5561..5562 " " + EXPR_ARRAY_COMP@5562..5640 + L_BRACK@5562..5563 "[" + EXPR_BINARY@5563..5607 + LHS_EXPR@5563..5572 + EXPR_STRING@5563..5572 + STRING_SINGLE@5563..5572 "'%s = %s'" + WHITESPACE@5572..5573 " " + MODULO@5573..5574 "%" + WHITESPACE@5574..5575 " " + EXPR_ARRAY@5575..5607 + L_BRACK@5575..5576 "[" + EXPR_VAR@5576..5577 + NAME@5576..5577 + IDENT@5576..5577 "k" + COMMA@5577..5578 "," + WHITESPACE@5578..5579 " " + EXPR_APPLY@5579..5606 + EXPR_INDEX@5579..5597 + EXPR_VAR@5579..5582 + NAME@5579..5582 + IDENT@5579..5582 "std" + DOT@5582..5583 "." + NAME@5583..5597 + IDENT@5583..5597 "manifestPython" + ARGS_DESC@5597..5606 + L_PAREN@5597..5598 "(" + ARG@5598..5605 + EXPR_INDEX_EXPR@5598..5605 + LHS_EXPR@5598..5602 + EXPR_VAR@5598..5602 + NAME@5598..5602 + IDENT@5598..5602 "conf" + L_BRACK@5602..5603 "[" + EXPR_VAR@5603..5604 + NAME@5603..5604 + IDENT@5603..5604 "k" + R_BRACK@5604..5605 "]" + R_PAREN@5605..5606 ")" + R_BRACK@5606..5607 "]" + WHITESPACE@5607..5608 " " + FOR_SPEC@5608..5639 + FOR_KW@5608..5611 "for" + WHITESPACE@5611..5612 " " + NAME@5612..5613 + IDENT@5612..5613 "k" + WHITESPACE@5613..5614 " " + IN_KW@5614..5616 "in" + WHITESPACE@5616..5617 " " + EXPR_APPLY@5617..5639 + EXPR_INDEX@5617..5633 + EXPR_VAR@5617..5620 + NAME@5617..5620 + IDENT@5617..5620 "std" + DOT@5620..5621 "." + NAME@5621..5633 + IDENT@5621..5633 "objectFields" + ARGS_DESC@5633..5639 + L_PAREN@5633..5634 "(" + ARG@5634..5638 + EXPR_VAR@5634..5638 + NAME@5634..5638 + IDENT@5634..5638 "conf" + R_PAREN@5638..5639 ")" + R_BRACK@5639..5640 "]" + SEMI@5640..5641 ";" + WHITESPACE@5641..5646 "\n " + EXPR_APPLY@5646..5673 + EXPR_INDEX@5646..5654 + EXPR_VAR@5646..5649 + NAME@5646..5649 + IDENT@5646..5649 "std" + DOT@5649..5650 "." + NAME@5650..5654 + IDENT@5650..5654 "join" + ARGS_DESC@5654..5673 + L_PAREN@5654..5655 "(" + ARG@5655..5659 + EXPR_STRING@5655..5659 + STRING_SINGLE@5655..5659 "'\\n'" + COMMA@5659..5660 "," WHITESPACE@5660..5661 " " - THEN_KW@5661..5665 "then" - WHITESPACE@5665..5672 "\n " - TRUE_EXPR@5672..5752 - EXPR_ERROR@5672..5752 - ERROR_KW@5672..5677 "error" - WHITESPACE@5677..5678 " " - EXPR_PARENED@5678..5752 - L_PAREN@5678..5679 "(" - EXPR_BINARY@5679..5751 - LHS_EXPR@5679..5730 - EXPR_STRING@5679..5730 - STRING_SINGLE@5679..5730 "'std.filterMap second ..." - WHITESPACE@5730..5731 " " - PLUS@5731..5732 "+" - WHITESPACE@5732..5733 " " - EXPR_APPLY@5733..5751 - EXPR_INDEX@5733..5741 - EXPR_VAR@5733..5736 - NAME@5733..5736 - IDENT@5733..5736 "std" - DOT@5736..5737 "." - NAME@5737..5741 - IDENT@5737..5741 "type" - ARGS_DESC@5741..5751 - L_PAREN@5741..5742 "(" - ARG@5742..5750 - EXPR_VAR@5742..5750 - NAME@5742..5750 - IDENT@5742..5750 "map_func" - R_PAREN@5750..5751 ")" - R_PAREN@5751..5752 ")" - WHITESPACE@5752..5757 "\n " - ELSE_KW@5757..5761 "else" - WHITESPACE@5761..5762 " " - FALSE_EXPR@5762..5928 - EXPR_IF_THEN_ELSE@5762..5928 - IF_KW@5762..5764 "if" - WHITESPACE@5764..5765 " " - EXPR_UNARY@5765..5782 - NOT@5765..5766 "!" - EXPR_APPLY@5766..5782 - EXPR_INDEX@5766..5777 - EXPR_VAR@5766..5769 - NAME@5766..5769 - IDENT@5766..5769 "std" - DOT@5769..5770 "." - NAME@5770..5777 - IDENT@5770..5777 "isArray" - ARGS_DESC@5777..5782 - L_PAREN@5777..5778 "(" - ARG@5778..5781 - EXPR_VAR@5778..5781 - NAME@5778..5781 - IDENT@5778..5781 "arr" - R_PAREN@5781..5782 ")" - WHITESPACE@5782..5783 " " - THEN_KW@5783..5787 "then" - WHITESPACE@5787..5794 "\n " - TRUE_EXPR@5794..5865 - EXPR_ERROR@5794..5865 - ERROR_KW@5794..5799 "error" - WHITESPACE@5799..5800 " " - EXPR_PARENED@5800..5865 - L_PAREN@5800..5801 "(" - EXPR_BINARY@5801..5864 - LHS_EXPR@5801..5848 - EXPR_STRING@5801..5848 - STRING_SINGLE@5801..5848 "'std.filterMap third ..." - WHITESPACE@5848..5849 " " - PLUS@5849..5850 "+" - WHITESPACE@5850..5851 " " - EXPR_APPLY@5851..5864 - EXPR_INDEX@5851..5859 - EXPR_VAR@5851..5854 - NAME@5851..5854 - IDENT@5851..5854 "std" - DOT@5854..5855 "." - NAME@5855..5859 - IDENT@5855..5859 "type" - ARGS_DESC@5859..5864 - L_PAREN@5859..5860 "(" - ARG@5860..5863 - EXPR_VAR@5860..5863 - NAME@5860..5863 - IDENT@5860..5863 "arr" - R_PAREN@5863..5864 ")" - R_PAREN@5864..5865 ")" - WHITESPACE@5865..5870 "\n " - ELSE_KW@5870..5874 "else" - WHITESPACE@5874..5881 "\n " - FALSE_EXPR@5881..5928 - EXPR_APPLY@5881..5928 - EXPR_INDEX@5881..5888 - EXPR_VAR@5881..5884 - NAME@5881..5884 - IDENT@5881..5884 "std" - DOT@5884..5885 "." - NAME@5885..5888 - IDENT@5885..5888 "map" - ARGS_DESC@5888..5928 - L_PAREN@5888..5889 "(" - ARG@5889..5897 - EXPR_VAR@5889..5897 - NAME@5889..5897 - IDENT@5889..5897 "map_func" - COMMA@5897..5898 "," - WHITESPACE@5898..5899 " " - ARG@5899..5927 - EXPR_APPLY@5899..5927 - EXPR_INDEX@5899..5909 - EXPR_VAR@5899..5902 - NAME@5899..5902 - IDENT@5899..5902 "std" - DOT@5902..5903 "." - NAME@5903..5909 - IDENT@5903..5909 "filter" - ARGS_DESC@5909..5927 - L_PAREN@5909..5910 "(" - ARG@5910..5921 - EXPR_VAR@5910..5921 - NAME@5910..5921 - IDENT@5910..5921 "filter_func" - COMMA@5921..5922 "," - WHITESPACE@5922..5923 " " - ARG@5923..5926 - EXPR_VAR@5923..5926 - NAME@5923..5926 - IDENT@5923..5926 "arr" - R_PAREN@5926..5927 ")" - R_PAREN@5927..5928 ")" - COMMA@5928..5929 "," - WHITESPACE@5929..5933 "\n\n " - MEMBER_FIELD@5933..6041 - FIELD_METHOD@5933..6041 - FIELD_NAME_FIXED@5933..5944 - NAME@5933..5944 - IDENT@5933..5944 "assertEqual" - PARAMS_DESC@5944..5950 - L_PAREN@5944..5945 "(" - PARAM@5945..5946 - DESTRUCT_FULL@5945..5946 - NAME@5945..5946 - IDENT@5945..5946 "a" - COMMA@5946..5947 "," - WHITESPACE@5947..5948 " " - PARAM@5948..5949 - DESTRUCT_FULL@5948..5949 - NAME@5948..5949 - IDENT@5948..5949 "b" - R_PAREN@5949..5950 ")" - COLONCOLON@5950..5952 "::" - WHITESPACE@5952..5957 "\n " - EXPR_IF_THEN_ELSE@5957..6041 - IF_KW@5957..5959 "if" - WHITESPACE@5959..5960 " " - EXPR_BINARY@5960..5966 - LHS_EXPR@5960..5961 - EXPR_VAR@5960..5961 - NAME@5960..5961 - IDENT@5960..5961 "a" - WHITESPACE@5961..5962 " " - EQ@5962..5964 "==" - WHITESPACE@5964..5965 " " - EXPR_VAR@5965..5966 - NAME@5965..5966 - IDENT@5965..5966 "b" - WHITESPACE@5966..5967 " " - THEN_KW@5967..5971 "then" - WHITESPACE@5971..5978 "\n " - TRUE_EXPR@5978..5982 - EXPR_LITERAL@5978..5982 - TRUE_KW@5978..5982 "true" - WHITESPACE@5982..5987 "\n " - ELSE_KW@5987..5991 "else" - WHITESPACE@5991..5998 "\n " - FALSE_EXPR@5998..6041 - EXPR_ERROR@5998..6041 - ERROR_KW@5998..6003 "error" - WHITESPACE@6003..6004 " " - EXPR_BINARY@6004..6041 - LHS_EXPR@6004..6037 - EXPR_BINARY@6004..6037 - LHS_EXPR@6004..6028 - EXPR_BINARY@6004..6028 - LHS_EXPR@6004..6024 - EXPR_STRING@6004..6024 - STRING_SINGLE@6004..6024 "'Assertion failed. '" - WHITESPACE@6024..6025 " " - PLUS@6025..6026 "+" - WHITESPACE@6026..6027 " " - EXPR_VAR@6027..6028 - NAME@6027..6028 - IDENT@6027..6028 "a" - WHITESPACE@6028..6029 " " - PLUS@6029..6030 "+" - WHITESPACE@6030..6031 " " - EXPR_STRING@6031..6037 - STRING_SINGLE@6031..6037 "' != '" - WHITESPACE@6037..6038 " " - PLUS@6038..6039 "+" - WHITESPACE@6039..6040 " " - EXPR_VAR@6040..6041 - NAME@6040..6041 - IDENT@6040..6041 "b" - COMMA@6041..6042 "," - WHITESPACE@6042..6046 "\n\n " - MEMBER_FIELD@6046..6180 - FIELD_METHOD@6046..6180 - FIELD_NAME_FIXED@6046..6049 - NAME@6046..6049 - IDENT@6046..6049 "abs" - PARAMS_DESC@6049..6052 - L_PAREN@6049..6050 "(" - PARAM@6050..6051 - DESTRUCT_FULL@6050..6051 - NAME@6050..6051 - IDENT@6050..6051 "n" - R_PAREN@6051..6052 ")" - COLONCOLON@6052..6054 "::" - WHITESPACE@6054..6059 "\n " - EXPR_IF_THEN_ELSE@6059..6180 - IF_KW@6059..6061 "if" - WHITESPACE@6061..6062 " " - EXPR_UNARY@6062..6078 - NOT@6062..6063 "!" - EXPR_APPLY@6063..6078 - EXPR_INDEX@6063..6075 - EXPR_VAR@6063..6066 - NAME@6063..6066 - IDENT@6063..6066 "std" - DOT@6066..6067 "." - NAME@6067..6075 - IDENT@6067..6075 "isNumber" - ARGS_DESC@6075..6078 - L_PAREN@6075..6076 "(" - ARG@6076..6077 - EXPR_VAR@6076..6077 - NAME@6076..6077 - IDENT@6076..6077 "n" - R_PAREN@6077..6078 ")" - WHITESPACE@6078..6079 " " - THEN_KW@6079..6083 "then" - WHITESPACE@6083..6090 "\n " - TRUE_EXPR@6090..6141 - EXPR_ERROR@6090..6141 - ERROR_KW@6090..6095 "error" - WHITESPACE@6095..6096 " " - EXPR_BINARY@6096..6141 - LHS_EXPR@6096..6127 - EXPR_STRING@6096..6127 - STRING_SINGLE@6096..6127 "'std.abs expected num ..." - WHITESPACE@6127..6128 " " - PLUS@6128..6129 "+" - WHITESPACE@6129..6130 " " - EXPR_APPLY@6130..6141 - EXPR_INDEX@6130..6138 - EXPR_VAR@6130..6133 - NAME@6130..6133 - IDENT@6130..6133 "std" - DOT@6133..6134 "." - NAME@6134..6138 - IDENT@6134..6138 "type" - ARGS_DESC@6138..6141 - L_PAREN@6138..6139 "(" - ARG@6139..6140 - EXPR_VAR@6139..6140 - NAME@6139..6140 - IDENT@6139..6140 "n" - R_PAREN@6140..6141 ")" - WHITESPACE@6141..6146 "\n " - ELSE_KW@6146..6150 "else" - WHITESPACE@6150..6157 "\n " - FALSE_EXPR@6157..6180 - EXPR_IF_THEN_ELSE@6157..6180 - IF_KW@6157..6159 "if" - WHITESPACE@6159..6160 " " - EXPR_BINARY@6160..6165 - LHS_EXPR@6160..6161 - EXPR_VAR@6160..6161 - NAME@6160..6161 - IDENT@6160..6161 "n" - WHITESPACE@6161..6162 " " - GT@6162..6163 ">" - WHITESPACE@6163..6164 " " - EXPR_NUMBER@6164..6165 - FLOAT@6164..6165 "0" - WHITESPACE@6165..6166 " " - THEN_KW@6166..6170 "then" - WHITESPACE@6170..6171 " " - TRUE_EXPR@6171..6172 - EXPR_VAR@6171..6172 - NAME@6171..6172 - IDENT@6171..6172 "n" - WHITESPACE@6172..6173 " " - ELSE_KW@6173..6177 "else" - WHITESPACE@6177..6178 " " - FALSE_EXPR@6178..6180 - EXPR_UNARY@6178..6180 - MINUS@6178..6179 "-" - EXPR_VAR@6179..6180 - NAME@6179..6180 - IDENT@6179..6180 "n" - COMMA@6180..6181 "," - WHITESPACE@6181..6185 "\n\n " - MEMBER_FIELD@6185..6370 - FIELD_METHOD@6185..6370 - FIELD_NAME_FIXED@6185..6189 - NAME@6185..6189 - IDENT@6185..6189 "sign" - PARAMS_DESC@6189..6192 - L_PAREN@6189..6190 "(" - PARAM@6190..6191 - DESTRUCT_FULL@6190..6191 - NAME@6190..6191 - IDENT@6190..6191 "n" - R_PAREN@6191..6192 ")" - COLONCOLON@6192..6194 "::" - WHITESPACE@6194..6199 "\n " - EXPR_IF_THEN_ELSE@6199..6370 - IF_KW@6199..6201 "if" - WHITESPACE@6201..6202 " " - EXPR_UNARY@6202..6218 - NOT@6202..6203 "!" - EXPR_APPLY@6203..6218 - EXPR_INDEX@6203..6215 - EXPR_VAR@6203..6206 - NAME@6203..6206 - IDENT@6203..6206 "std" - DOT@6206..6207 "." - NAME@6207..6215 - IDENT@6207..6215 "isNumber" - ARGS_DESC@6215..6218 - L_PAREN@6215..6216 "(" - ARG@6216..6217 - EXPR_VAR@6216..6217 - NAME@6216..6217 - IDENT@6216..6217 "n" - R_PAREN@6217..6218 ")" - WHITESPACE@6218..6219 " " - THEN_KW@6219..6223 "then" - WHITESPACE@6223..6230 "\n " - TRUE_EXPR@6230..6282 - EXPR_ERROR@6230..6282 - ERROR_KW@6230..6235 "error" - WHITESPACE@6235..6236 " " - EXPR_BINARY@6236..6282 - LHS_EXPR@6236..6268 - EXPR_STRING@6236..6268 - STRING_SINGLE@6236..6268 "'std.sign expected nu ..." - WHITESPACE@6268..6269 " " - PLUS@6269..6270 "+" - WHITESPACE@6270..6271 " " - EXPR_APPLY@6271..6282 - EXPR_INDEX@6271..6279 - EXPR_VAR@6271..6274 - NAME@6271..6274 - IDENT@6271..6274 "std" - DOT@6274..6275 "." - NAME@6275..6279 - IDENT@6275..6279 "type" - ARGS_DESC@6279..6282 - L_PAREN@6279..6280 "(" - ARG@6280..6281 - EXPR_VAR@6280..6281 - NAME@6280..6281 - IDENT@6280..6281 "n" - R_PAREN@6281..6282 ")" - WHITESPACE@6282..6287 "\n " - ELSE_KW@6287..6291 "else" - WHITESPACE@6291..6298 "\n " - FALSE_EXPR@6298..6370 - EXPR_IF_THEN_ELSE@6298..6370 - IF_KW@6298..6300 "if" - WHITESPACE@6300..6301 " " - EXPR_BINARY@6301..6306 - LHS_EXPR@6301..6302 - EXPR_VAR@6301..6302 - NAME@6301..6302 - IDENT@6301..6302 "n" - WHITESPACE@6302..6303 " " - GT@6303..6304 ">" - WHITESPACE@6304..6305 " " - EXPR_NUMBER@6305..6306 - FLOAT@6305..6306 "0" - WHITESPACE@6306..6307 " " - THEN_KW@6307..6311 "then" - WHITESPACE@6311..6320 "\n " - TRUE_EXPR@6320..6321 - EXPR_NUMBER@6320..6321 - FLOAT@6320..6321 "1" - WHITESPACE@6321..6328 "\n " - ELSE_KW@6328..6332 "else" - WHITESPACE@6332..6333 " " - FALSE_EXPR@6333..6370 - EXPR_IF_THEN_ELSE@6333..6370 - IF_KW@6333..6335 "if" - WHITESPACE@6335..6336 " " - EXPR_BINARY@6336..6341 - LHS_EXPR@6336..6337 - EXPR_VAR@6336..6337 - NAME@6336..6337 - IDENT@6336..6337 "n" - WHITESPACE@6337..6338 " " - LT@6338..6339 "<" - WHITESPACE@6339..6340 " " - EXPR_NUMBER@6340..6341 - FLOAT@6340..6341 "0" - WHITESPACE@6341..6342 " " - THEN_KW@6342..6346 "then" - WHITESPACE@6346..6355 "\n " - TRUE_EXPR@6355..6357 - EXPR_UNARY@6355..6357 - MINUS@6355..6356 "-" - EXPR_NUMBER@6356..6357 - FLOAT@6356..6357 "1" - WHITESPACE@6357..6364 "\n " - ELSE_KW@6364..6368 "else" - WHITESPACE@6368..6369 " " - FALSE_EXPR@6369..6370 - EXPR_NUMBER@6369..6370 - FLOAT@6369..6370 "0" - COMMA@6370..6371 "," - WHITESPACE@6371..6375 "\n\n " - MEMBER_FIELD@6375..6628 - FIELD_METHOD@6375..6628 - FIELD_NAME_FIXED@6375..6378 - NAME@6375..6378 - IDENT@6375..6378 "max" - PARAMS_DESC@6378..6384 - L_PAREN@6378..6379 "(" - PARAM@6379..6380 - DESTRUCT_FULL@6379..6380 - NAME@6379..6380 - IDENT@6379..6380 "a" - COMMA@6380..6381 "," - WHITESPACE@6381..6382 " " - PARAM@6382..6383 - DESTRUCT_FULL@6382..6383 - NAME@6382..6383 - IDENT@6382..6383 "b" - R_PAREN@6383..6384 ")" - COLONCOLON@6384..6386 "::" - WHITESPACE@6386..6391 "\n " - EXPR_IF_THEN_ELSE@6391..6628 - IF_KW@6391..6393 "if" - WHITESPACE@6393..6394 " " - EXPR_UNARY@6394..6410 - NOT@6394..6395 "!" - EXPR_APPLY@6395..6410 - EXPR_INDEX@6395..6407 - EXPR_VAR@6395..6398 - NAME@6395..6398 - IDENT@6395..6398 "std" - DOT@6398..6399 "." - NAME@6399..6407 - IDENT@6399..6407 "isNumber" - ARGS_DESC@6407..6410 - L_PAREN@6407..6408 "(" - ARG@6408..6409 - EXPR_VAR@6408..6409 - NAME@6408..6409 - IDENT@6408..6409 "a" - R_PAREN@6409..6410 ")" - WHITESPACE@6410..6411 " " - THEN_KW@6411..6415 "then" - WHITESPACE@6415..6422 "\n " - TRUE_EXPR@6422..6485 - EXPR_ERROR@6422..6485 - ERROR_KW@6422..6427 "error" - WHITESPACE@6427..6428 " " - EXPR_BINARY@6428..6485 - LHS_EXPR@6428..6471 - EXPR_STRING@6428..6471 - STRING_SINGLE@6428..6471 "'std.max first param ..." - WHITESPACE@6471..6472 " " - PLUS@6472..6473 "+" - WHITESPACE@6473..6474 " " - EXPR_APPLY@6474..6485 - EXPR_INDEX@6474..6482 - EXPR_VAR@6474..6477 - NAME@6474..6477 - IDENT@6474..6477 "std" - DOT@6477..6478 "." - NAME@6478..6482 - IDENT@6478..6482 "type" - ARGS_DESC@6482..6485 - L_PAREN@6482..6483 "(" - ARG@6483..6484 - EXPR_VAR@6483..6484 - NAME@6483..6484 - IDENT@6483..6484 "a" - R_PAREN@6484..6485 ")" - WHITESPACE@6485..6490 "\n " - ELSE_KW@6490..6494 "else" - WHITESPACE@6494..6495 " " - FALSE_EXPR@6495..6628 - EXPR_IF_THEN_ELSE@6495..6628 - IF_KW@6495..6497 "if" - WHITESPACE@6497..6498 " " - EXPR_UNARY@6498..6514 - NOT@6498..6499 "!" - EXPR_APPLY@6499..6514 - EXPR_INDEX@6499..6511 - EXPR_VAR@6499..6502 - NAME@6499..6502 - IDENT@6499..6502 "std" - DOT@6502..6503 "." - NAME@6503..6511 - IDENT@6503..6511 "isNumber" - ARGS_DESC@6511..6514 - L_PAREN@6511..6512 "(" - ARG@6512..6513 - EXPR_VAR@6512..6513 - NAME@6512..6513 - IDENT@6512..6513 "b" - R_PAREN@6513..6514 ")" - WHITESPACE@6514..6515 " " - THEN_KW@6515..6519 "then" - WHITESPACE@6519..6526 "\n " - TRUE_EXPR@6526..6590 - EXPR_ERROR@6526..6590 - ERROR_KW@6526..6531 "error" - WHITESPACE@6531..6532 " " - EXPR_BINARY@6532..6590 - LHS_EXPR@6532..6576 - EXPR_STRING@6532..6576 - STRING_SINGLE@6532..6576 "'std.max second param ..." - WHITESPACE@6576..6577 " " - PLUS@6577..6578 "+" - WHITESPACE@6578..6579 " " - EXPR_APPLY@6579..6590 - EXPR_INDEX@6579..6587 - EXPR_VAR@6579..6582 - NAME@6579..6582 - IDENT@6579..6582 "std" - DOT@6582..6583 "." - NAME@6583..6587 - IDENT@6583..6587 "type" - ARGS_DESC@6587..6590 - L_PAREN@6587..6588 "(" - ARG@6588..6589 - EXPR_VAR@6588..6589 - NAME@6588..6589 - IDENT@6588..6589 "b" - R_PAREN@6589..6590 ")" - WHITESPACE@6590..6595 "\n " - ELSE_KW@6595..6599 "else" - WHITESPACE@6599..6606 "\n " - FALSE_EXPR@6606..6628 - EXPR_IF_THEN_ELSE@6606..6628 - IF_KW@6606..6608 "if" - WHITESPACE@6608..6609 " " - EXPR_BINARY@6609..6614 - LHS_EXPR@6609..6610 - EXPR_VAR@6609..6610 - NAME@6609..6610 - IDENT@6609..6610 "a" - WHITESPACE@6610..6611 " " - GT@6611..6612 ">" - WHITESPACE@6612..6613 " " - EXPR_VAR@6613..6614 - NAME@6613..6614 - IDENT@6613..6614 "b" - WHITESPACE@6614..6615 " " - THEN_KW@6615..6619 "then" - WHITESPACE@6619..6620 " " - TRUE_EXPR@6620..6621 - EXPR_VAR@6620..6621 - NAME@6620..6621 - IDENT@6620..6621 "a" - WHITESPACE@6621..6622 " " - ELSE_KW@6622..6626 "else" - WHITESPACE@6626..6627 " " - FALSE_EXPR@6627..6628 - EXPR_VAR@6627..6628 - NAME@6627..6628 - IDENT@6627..6628 "b" - COMMA@6628..6629 "," - WHITESPACE@6629..6633 "\n\n " - MEMBER_FIELD@6633..6886 - FIELD_METHOD@6633..6886 - FIELD_NAME_FIXED@6633..6636 - NAME@6633..6636 - IDENT@6633..6636 "min" - PARAMS_DESC@6636..6642 - L_PAREN@6636..6637 "(" - PARAM@6637..6638 - DESTRUCT_FULL@6637..6638 - NAME@6637..6638 - IDENT@6637..6638 "a" - COMMA@6638..6639 "," - WHITESPACE@6639..6640 " " - PARAM@6640..6641 - DESTRUCT_FULL@6640..6641 - NAME@6640..6641 - IDENT@6640..6641 "b" - R_PAREN@6641..6642 ")" - COLONCOLON@6642..6644 "::" - WHITESPACE@6644..6649 "\n " - EXPR_IF_THEN_ELSE@6649..6886 - IF_KW@6649..6651 "if" - WHITESPACE@6651..6652 " " - EXPR_UNARY@6652..6668 - NOT@6652..6653 "!" - EXPR_APPLY@6653..6668 - EXPR_INDEX@6653..6665 - EXPR_VAR@6653..6656 - NAME@6653..6656 - IDENT@6653..6656 "std" - DOT@6656..6657 "." - NAME@6657..6665 - IDENT@6657..6665 "isNumber" - ARGS_DESC@6665..6668 - L_PAREN@6665..6666 "(" - ARG@6666..6667 - EXPR_VAR@6666..6667 - NAME@6666..6667 - IDENT@6666..6667 "a" - R_PAREN@6667..6668 ")" - WHITESPACE@6668..6669 " " - THEN_KW@6669..6673 "then" - WHITESPACE@6673..6680 "\n " - TRUE_EXPR@6680..6743 - EXPR_ERROR@6680..6743 - ERROR_KW@6680..6685 "error" - WHITESPACE@6685..6686 " " - EXPR_BINARY@6686..6743 - LHS_EXPR@6686..6729 - EXPR_STRING@6686..6729 - STRING_SINGLE@6686..6729 "'std.min first param ..." - WHITESPACE@6729..6730 " " - PLUS@6730..6731 "+" - WHITESPACE@6731..6732 " " - EXPR_APPLY@6732..6743 - EXPR_INDEX@6732..6740 - EXPR_VAR@6732..6735 - NAME@6732..6735 - IDENT@6732..6735 "std" - DOT@6735..6736 "." - NAME@6736..6740 - IDENT@6736..6740 "type" - ARGS_DESC@6740..6743 - L_PAREN@6740..6741 "(" - ARG@6741..6742 - EXPR_VAR@6741..6742 - NAME@6741..6742 - IDENT@6741..6742 "a" - R_PAREN@6742..6743 ")" - WHITESPACE@6743..6748 "\n " - ELSE_KW@6748..6752 "else" - WHITESPACE@6752..6753 " " - FALSE_EXPR@6753..6886 - EXPR_IF_THEN_ELSE@6753..6886 - IF_KW@6753..6755 "if" - WHITESPACE@6755..6756 " " - EXPR_UNARY@6756..6772 - NOT@6756..6757 "!" - EXPR_APPLY@6757..6772 - EXPR_INDEX@6757..6769 - EXPR_VAR@6757..6760 - NAME@6757..6760 - IDENT@6757..6760 "std" - DOT@6760..6761 "." - NAME@6761..6769 - IDENT@6761..6769 "isNumber" - ARGS_DESC@6769..6772 - L_PAREN@6769..6770 "(" - ARG@6770..6771 - EXPR_VAR@6770..6771 - NAME@6770..6771 - IDENT@6770..6771 "b" - R_PAREN@6771..6772 ")" - WHITESPACE@6772..6773 " " - THEN_KW@6773..6777 "then" - WHITESPACE@6777..6784 "\n " - TRUE_EXPR@6784..6848 - EXPR_ERROR@6784..6848 - ERROR_KW@6784..6789 "error" - WHITESPACE@6789..6790 " " - EXPR_BINARY@6790..6848 - LHS_EXPR@6790..6834 - EXPR_STRING@6790..6834 - STRING_SINGLE@6790..6834 "'std.min second param ..." - WHITESPACE@6834..6835 " " - PLUS@6835..6836 "+" - WHITESPACE@6836..6837 " " - EXPR_APPLY@6837..6848 - EXPR_INDEX@6837..6845 - EXPR_VAR@6837..6840 - NAME@6837..6840 - IDENT@6837..6840 "std" - DOT@6840..6841 "." - NAME@6841..6845 - IDENT@6841..6845 "type" - ARGS_DESC@6845..6848 - L_PAREN@6845..6846 "(" - ARG@6846..6847 - EXPR_VAR@6846..6847 - NAME@6846..6847 - IDENT@6846..6847 "b" - R_PAREN@6847..6848 ")" - WHITESPACE@6848..6853 "\n " - ELSE_KW@6853..6857 "else" - WHITESPACE@6857..6864 "\n " - FALSE_EXPR@6864..6886 - EXPR_IF_THEN_ELSE@6864..6886 - IF_KW@6864..6866 "if" - WHITESPACE@6866..6867 " " - EXPR_BINARY@6867..6872 - LHS_EXPR@6867..6868 - EXPR_VAR@6867..6868 - NAME@6867..6868 - IDENT@6867..6868 "a" - WHITESPACE@6868..6869 " " - LT@6869..6870 "<" - WHITESPACE@6870..6871 " " - EXPR_VAR@6871..6872 - NAME@6871..6872 - IDENT@6871..6872 "b" - WHITESPACE@6872..6873 " " - THEN_KW@6873..6877 "then" - WHITESPACE@6877..6878 " " - TRUE_EXPR@6878..6879 - EXPR_VAR@6878..6879 - NAME@6878..6879 - IDENT@6878..6879 "a" - WHITESPACE@6879..6880 " " - ELSE_KW@6880..6884 "else" - WHITESPACE@6884..6885 " " - FALSE_EXPR@6885..6886 - EXPR_VAR@6885..6886 - NAME@6885..6886 - IDENT@6885..6886 "b" - COMMA@6886..6887 "," - WHITESPACE@6887..6891 "\n\n " - MEMBER_FIELD@6891..6993 - FIELD_METHOD@6891..6993 - FIELD_NAME_FIXED@6891..6896 - NAME@6891..6896 - IDENT@6891..6896 "clamp" - PARAMS_DESC@6896..6915 - L_PAREN@6896..6897 "(" - PARAM@6897..6898 - DESTRUCT_FULL@6897..6898 - NAME@6897..6898 - IDENT@6897..6898 "x" - COMMA@6898..6899 "," - WHITESPACE@6899..6900 " " - PARAM@6900..6906 - DESTRUCT_FULL@6900..6906 - NAME@6900..6906 - IDENT@6900..6906 "minVal" - COMMA@6906..6907 "," - WHITESPACE@6907..6908 " " - PARAM@6908..6914 - DESTRUCT_FULL@6908..6914 - NAME@6908..6914 - IDENT@6908..6914 "maxVal" - R_PAREN@6914..6915 ")" - COLONCOLON@6915..6917 "::" - WHITESPACE@6917..6922 "\n " - EXPR_IF_THEN_ELSE@6922..6993 - IF_KW@6922..6924 "if" - WHITESPACE@6924..6925 " " - EXPR_BINARY@6925..6935 - LHS_EXPR@6925..6926 - EXPR_VAR@6925..6926 - NAME@6925..6926 - IDENT@6925..6926 "x" - WHITESPACE@6926..6927 " " - LT@6927..6928 "<" - WHITESPACE@6928..6929 " " - EXPR_VAR@6929..6935 - NAME@6929..6935 - IDENT@6929..6935 "minVal" - WHITESPACE@6935..6936 " " - THEN_KW@6936..6940 "then" - WHITESPACE@6940..6941 " " - TRUE_EXPR@6941..6947 - EXPR_VAR@6941..6947 - NAME@6941..6947 - IDENT@6941..6947 "minVal" - WHITESPACE@6947..6952 "\n " - ELSE_KW@6952..6956 "else" - WHITESPACE@6956..6957 " " - FALSE_EXPR@6957..6993 - EXPR_IF_THEN_ELSE@6957..6993 - IF_KW@6957..6959 "if" - WHITESPACE@6959..6960 " " - EXPR_BINARY@6960..6970 - LHS_EXPR@6960..6961 - EXPR_VAR@6960..6961 - NAME@6960..6961 - IDENT@6960..6961 "x" - WHITESPACE@6961..6962 " " - GT@6962..6963 ">" - WHITESPACE@6963..6964 " " - EXPR_VAR@6964..6970 - NAME@6964..6970 - IDENT@6964..6970 "maxVal" - WHITESPACE@6970..6971 " " - THEN_KW@6971..6975 "then" - WHITESPACE@6975..6976 " " - TRUE_EXPR@6976..6982 - EXPR_VAR@6976..6982 - NAME@6976..6982 - IDENT@6976..6982 "maxVal" - WHITESPACE@6982..6987 "\n " - ELSE_KW@6987..6991 "else" - WHITESPACE@6991..6992 " " - FALSE_EXPR@6992..6993 - EXPR_VAR@6992..6993 - NAME@6992..6993 - IDENT@6992..6993 "x" - COMMA@6993..6994 "," - WHITESPACE@6994..6998 "\n\n " - MEMBER_FIELD@6998..7065 - FIELD_METHOD@6998..7065 - FIELD_NAME_FIXED@6998..7011 - NAME@6998..7011 - IDENT@6998..7011 "flattenArrays" - PARAMS_DESC@7011..7017 - L_PAREN@7011..7012 "(" - PARAM@7012..7016 - DESTRUCT_FULL@7012..7016 - NAME@7012..7016 - IDENT@7012..7016 "arrs" - R_PAREN@7016..7017 ")" - COLONCOLON@7017..7019 "::" - WHITESPACE@7019..7024 "\n " - EXPR_APPLY@7024..7065 - EXPR_INDEX@7024..7033 - EXPR_VAR@7024..7027 - NAME@7024..7027 - IDENT@7024..7027 "std" - DOT@7027..7028 "." - NAME@7028..7033 - IDENT@7028..7033 "foldl" - ARGS_DESC@7033..7065 - L_PAREN@7033..7034 "(" - ARG@7034..7054 - EXPR_FUNCTION@7034..7054 - FUNCTION_KW@7034..7042 "function" - PARAMS_DESC@7042..7048 - L_PAREN@7042..7043 "(" - PARAM@7043..7044 - DESTRUCT_FULL@7043..7044 - NAME@7043..7044 - IDENT@7043..7044 "a" - COMMA@7044..7045 "," - WHITESPACE@7045..7046 " " - PARAM@7046..7047 - DESTRUCT_FULL@7046..7047 - NAME@7046..7047 - IDENT@7046..7047 "b" - R_PAREN@7047..7048 ")" - WHITESPACE@7048..7049 " " - EXPR_BINARY@7049..7054 - LHS_EXPR@7049..7050 - EXPR_VAR@7049..7050 - NAME@7049..7050 - IDENT@7049..7050 "a" - WHITESPACE@7050..7051 " " - PLUS@7051..7052 "+" - WHITESPACE@7052..7053 " " - EXPR_VAR@7053..7054 - NAME@7053..7054 - IDENT@7053..7054 "b" - COMMA@7054..7055 "," - WHITESPACE@7055..7056 " " - ARG@7056..7060 - EXPR_VAR@7056..7060 - NAME@7056..7060 - IDENT@7056..7060 "arrs" - COMMA@7060..7061 "," - WHITESPACE@7061..7062 " " - ARG@7062..7064 - EXPR_ARRAY@7062..7064 - L_BRACK@7062..7063 "[" - R_BRACK@7063..7064 "]" - R_PAREN@7064..7065 ")" - COMMA@7065..7066 "," - WHITESPACE@7066..7070 "\n\n " - MEMBER_FIELD@7070..7756 - FIELD_METHOD@7070..7756 - FIELD_NAME_FIXED@7070..7081 - NAME@7070..7081 - IDENT@7070..7081 "manifestIni" - PARAMS_DESC@7081..7086 - L_PAREN@7081..7082 "(" - PARAM@7082..7085 - DESTRUCT_FULL@7082..7085 - NAME@7082..7085 - IDENT@7082..7085 "ini" - R_PAREN@7085..7086 ")" - COLONCOLON@7086..7088 "::" - WHITESPACE@7088..7093 "\n " - EXPR_LOCAL@7093..7756 - LOCAL_KW@7093..7098 "local" - WHITESPACE@7098..7099 " " - BIND_FUNCTION@7099..7396 - NAME@7099..7109 - IDENT@7099..7109 "body_lines" - PARAMS_DESC@7109..7115 - L_PAREN@7109..7110 "(" - PARAM@7110..7114 - DESTRUCT_FULL@7110..7114 - NAME@7110..7114 - IDENT@7110..7114 "body" - R_PAREN@7114..7115 ")" - WHITESPACE@7115..7116 " " - ASSIGN@7116..7117 "=" - WHITESPACE@7117..7124 "\n " - EXPR_APPLY@7124..7396 - EXPR_INDEX@7124..7132 - EXPR_VAR@7124..7127 - NAME@7124..7127 - IDENT@7124..7127 "std" - DOT@7127..7128 "." - NAME@7128..7132 - IDENT@7128..7132 "join" - ARGS_DESC@7132..7396 - L_PAREN@7132..7133 "(" - ARG@7133..7135 - EXPR_ARRAY@7133..7135 - L_BRACK@7133..7134 "[" - R_BRACK@7134..7135 "]" - COMMA@7135..7136 "," - WHITESPACE@7136..7137 " " - ARG@7137..7395 - EXPR_ARRAY_COMP@7137..7395 - L_BRACK@7137..7138 "[" - WHITESPACE@7138..7147 "\n " - EXPR_LOCAL@7147..7346 - LOCAL_KW@7147..7152 "local" - WHITESPACE@7152..7153 " " - BIND_DESTRUCT@7153..7178 - DESTRUCT_FULL@7153..7168 - NAME@7153..7168 - IDENT@7153..7168 "value_or_values" - WHITESPACE@7168..7169 " " - ASSIGN@7169..7170 "=" - WHITESPACE@7170..7171 " " - EXPR_INDEX_EXPR@7171..7178 - LHS_EXPR@7171..7175 - EXPR_VAR@7171..7175 - NAME@7171..7175 - IDENT@7171..7175 "body" - L_BRACK@7175..7176 "[" - EXPR_VAR@7176..7177 - NAME@7176..7177 - IDENT@7176..7177 "k" - R_BRACK@7177..7178 "]" - SEMI@7178..7179 ";" - WHITESPACE@7179..7188 "\n " - EXPR_IF_THEN_ELSE@7188..7346 - IF_KW@7188..7190 "if" - WHITESPACE@7190..7191 " " - EXPR_APPLY@7191..7219 - EXPR_INDEX@7191..7202 - EXPR_VAR@7191..7194 - NAME@7191..7194 - IDENT@7191..7194 "std" - DOT@7194..7195 "." - NAME@7195..7202 - IDENT@7195..7202 "isArray" - ARGS_DESC@7202..7219 - L_PAREN@7202..7203 "(" - ARG@7203..7218 - EXPR_VAR@7203..7218 - NAME@7203..7218 - IDENT@7203..7218 "value_or_values" - R_PAREN@7218..7219 ")" - WHITESPACE@7219..7220 " " - THEN_KW@7220..7224 "then" - WHITESPACE@7224..7235 "\n " - TRUE_EXPR@7235..7288 - EXPR_ARRAY_COMP@7235..7288 - L_BRACK@7235..7236 "[" - EXPR_BINARY@7236..7258 - LHS_EXPR@7236..7245 - EXPR_STRING@7236..7245 - STRING_SINGLE@7236..7245 "'%s = %s'" - WHITESPACE@7245..7246 " " - MODULO@7246..7247 "%" - WHITESPACE@7247..7248 " " - EXPR_ARRAY@7248..7258 - L_BRACK@7248..7249 "[" - EXPR_VAR@7249..7250 - NAME@7249..7250 - IDENT@7249..7250 "k" - COMMA@7250..7251 "," - WHITESPACE@7251..7252 " " - EXPR_VAR@7252..7257 - NAME@7252..7257 - IDENT@7252..7257 "value" - R_BRACK@7257..7258 "]" - WHITESPACE@7258..7259 " " - FOR_SPEC@7259..7287 - FOR_KW@7259..7262 "for" - WHITESPACE@7262..7263 " " - NAME@7263..7268 - IDENT@7263..7268 "value" - WHITESPACE@7268..7269 " " - IN_KW@7269..7271 "in" - WHITESPACE@7271..7272 " " - EXPR_VAR@7272..7287 - NAME@7272..7287 - IDENT@7272..7287 "value_or_values" - R_BRACK@7287..7288 "]" - WHITESPACE@7288..7297 "\n " - ELSE_KW@7297..7301 "else" - WHITESPACE@7301..7312 "\n " - FALSE_EXPR@7312..7346 - EXPR_ARRAY@7312..7346 - L_BRACK@7312..7313 "[" - EXPR_BINARY@7313..7345 - LHS_EXPR@7313..7322 - EXPR_STRING@7313..7322 - STRING_SINGLE@7313..7322 "'%s = %s'" - WHITESPACE@7322..7323 " " - MODULO@7323..7324 "%" - WHITESPACE@7324..7325 " " - EXPR_ARRAY@7325..7345 - L_BRACK@7325..7326 "[" - EXPR_VAR@7326..7327 - NAME@7326..7327 - IDENT@7326..7327 "k" - COMMA@7327..7328 "," - WHITESPACE@7328..7329 " " - EXPR_VAR@7329..7344 - NAME@7329..7344 - IDENT@7329..7344 "value_or_values" - R_BRACK@7344..7345 "]" - R_BRACK@7345..7346 "]" - WHITESPACE@7346..7356 "\n\n " - FOR_SPEC@7356..7387 - FOR_KW@7356..7359 "for" - WHITESPACE@7359..7360 " " - NAME@7360..7361 - IDENT@7360..7361 "k" - WHITESPACE@7361..7362 " " - IN_KW@7362..7364 "in" - WHITESPACE@7364..7365 " " - EXPR_APPLY@7365..7387 - EXPR_INDEX@7365..7381 - EXPR_VAR@7365..7368 - NAME@7365..7368 - IDENT@7365..7368 "std" - DOT@7368..7369 "." - NAME@7369..7381 - IDENT@7369..7381 "objectFields" - ARGS_DESC@7381..7387 - L_PAREN@7381..7382 "(" - ARG@7382..7386 - EXPR_VAR@7382..7386 - NAME@7382..7386 - IDENT@7382..7386 "body" - R_PAREN@7386..7387 ")" - WHITESPACE@7387..7394 "\n " - R_BRACK@7394..7395 "]" - R_PAREN@7395..7396 ")" - SEMI@7396..7397 ";" - WHITESPACE@7397..7403 "\n\n " - EXPR_LOCAL@7403..7756 - LOCAL_KW@7403..7408 "local" - WHITESPACE@7408..7409 " " - BIND_FUNCTION@7409..7477 - NAME@7409..7422 - IDENT@7409..7422 "section_lines" - PARAMS_DESC@7422..7436 - L_PAREN@7422..7423 "(" - PARAM@7423..7428 - DESTRUCT_FULL@7423..7428 - NAME@7423..7428 - IDENT@7423..7428 "sname" - COMMA@7428..7429 "," - WHITESPACE@7429..7430 " " - PARAM@7430..7435 - DESTRUCT_FULL@7430..7435 - NAME@7430..7435 - IDENT@7430..7435 "sbody" - R_PAREN@7435..7436 ")" - WHITESPACE@7436..7437 " " - ASSIGN@7437..7438 "=" - WHITESPACE@7438..7439 " " - EXPR_BINARY@7439..7477 - LHS_EXPR@7439..7457 - EXPR_ARRAY@7439..7457 - L_BRACK@7439..7440 "[" - EXPR_BINARY@7440..7456 - LHS_EXPR@7440..7446 - EXPR_STRING@7440..7446 - STRING_SINGLE@7440..7446 "'[%s]'" - WHITESPACE@7446..7447 " " - MODULO@7447..7448 "%" - WHITESPACE@7448..7449 " " - EXPR_ARRAY@7449..7456 - L_BRACK@7449..7450 "[" - EXPR_VAR@7450..7455 - NAME@7450..7455 - IDENT@7450..7455 "sname" - R_BRACK@7455..7456 "]" - R_BRACK@7456..7457 "]" - WHITESPACE@7457..7458 " " - PLUS@7458..7459 "+" - WHITESPACE@7459..7460 " " - EXPR_APPLY@7460..7477 - EXPR_VAR@7460..7470 - NAME@7460..7470 - IDENT@7460..7470 "body_lines" - ARGS_DESC@7470..7477 - L_PAREN@7470..7471 "(" - ARG@7471..7476 - EXPR_VAR@7471..7476 - NAME@7471..7476 - IDENT@7471..7476 "sbody" - R_PAREN@7476..7477 ")" - COMMA@7477..7478 "," - WHITESPACE@7478..7489 "\n " - BIND_DESTRUCT@7489..7564 - DESTRUCT_FULL@7489..7498 - NAME@7489..7498 - IDENT@7489..7498 "main_body" - WHITESPACE@7498..7499 " " - ASSIGN@7499..7500 "=" - WHITESPACE@7500..7501 " " - EXPR_IF_THEN_ELSE@7501..7564 - IF_KW@7501..7503 "if" - WHITESPACE@7503..7504 " " - EXPR_APPLY@7504..7530 - EXPR_INDEX@7504..7517 - EXPR_VAR@7504..7507 - NAME@7504..7507 - IDENT@7504..7507 "std" - DOT@7507..7508 "." - NAME@7508..7517 - IDENT@7508..7517 "objectHas" - ARGS_DESC@7517..7530 - L_PAREN@7517..7518 "(" - ARG@7518..7521 - EXPR_VAR@7518..7521 - NAME@7518..7521 - IDENT@7518..7521 "ini" - COMMA@7521..7522 "," - WHITESPACE@7522..7523 " " - ARG@7523..7529 - EXPR_STRING@7523..7529 - STRING_SINGLE@7523..7529 "'main'" - R_PAREN@7529..7530 ")" - WHITESPACE@7530..7531 " " - THEN_KW@7531..7535 "then" - WHITESPACE@7535..7536 " " - TRUE_EXPR@7536..7556 - EXPR_APPLY@7536..7556 - EXPR_VAR@7536..7546 - NAME@7536..7546 - IDENT@7536..7546 "body_lines" - ARGS_DESC@7546..7556 - L_PAREN@7546..7547 "(" - ARG@7547..7555 - EXPR_INDEX@7547..7555 - EXPR_VAR@7547..7550 - NAME@7547..7550 - IDENT@7547..7550 "ini" - DOT@7550..7551 "." - NAME@7551..7555 - IDENT@7551..7555 "main" - R_PAREN@7555..7556 ")" - WHITESPACE@7556..7557 " " - ELSE_KW@7557..7561 "else" - WHITESPACE@7561..7562 " " - FALSE_EXPR@7562..7564 - EXPR_ARRAY@7562..7564 - L_BRACK@7562..7563 "[" - R_BRACK@7563..7564 "]" - COMMA@7564..7565 "," - WHITESPACE@7565..7576 "\n " - BIND_DESTRUCT@7576..7684 - DESTRUCT_FULL@7576..7588 - NAME@7576..7588 - IDENT@7576..7588 "all_sections" - WHITESPACE@7588..7589 " " - ASSIGN@7589..7590 "=" - WHITESPACE@7590..7591 " " - EXPR_ARRAY_COMP@7591..7684 - L_BRACK@7591..7592 "[" - WHITESPACE@7592..7599 "\n " - EXPR_APPLY@7599..7632 - EXPR_VAR@7599..7612 - NAME@7599..7612 - IDENT@7599..7612 "section_lines" - ARGS_DESC@7612..7632 - L_PAREN@7612..7613 "(" - ARG@7613..7614 - EXPR_VAR@7613..7614 - NAME@7613..7614 - IDENT@7613..7614 "k" - COMMA@7614..7615 "," - WHITESPACE@7615..7616 " " - ARG@7616..7631 - EXPR_INDEX_EXPR@7616..7631 - LHS_EXPR@7616..7628 - EXPR_INDEX@7616..7628 - EXPR_VAR@7616..7619 - NAME@7616..7619 - IDENT@7616..7619 "ini" - DOT@7619..7620 "." - NAME@7620..7628 - IDENT@7620..7628 "sections" - L_BRACK@7628..7629 "[" - EXPR_VAR@7629..7630 - NAME@7629..7630 - IDENT@7629..7630 "k" - R_BRACK@7630..7631 "]" - R_PAREN@7631..7632 ")" - WHITESPACE@7632..7639 "\n " - FOR_SPEC@7639..7678 - FOR_KW@7639..7642 "for" - WHITESPACE@7642..7643 " " - NAME@7643..7644 - IDENT@7643..7644 "k" - WHITESPACE@7644..7645 " " - IN_KW@7645..7647 "in" - WHITESPACE@7647..7648 " " - EXPR_APPLY@7648..7678 - EXPR_INDEX@7648..7664 - EXPR_VAR@7648..7651 - NAME@7648..7651 - IDENT@7648..7651 "std" - DOT@7651..7652 "." - NAME@7652..7664 - IDENT@7652..7664 "objectFields" - ARGS_DESC@7664..7678 - L_PAREN@7664..7665 "(" - ARG@7665..7677 - EXPR_INDEX@7665..7677 - EXPR_VAR@7665..7668 - NAME@7665..7668 - IDENT@7665..7668 "ini" - DOT@7668..7669 "." - NAME@7669..7677 - IDENT@7669..7677 "sections" - R_PAREN@7677..7678 ")" - WHITESPACE@7678..7683 "\n " - R_BRACK@7683..7684 "]" - SEMI@7684..7685 ";" - WHITESPACE@7685..7690 "\n " - EXPR_APPLY@7690..7756 - EXPR_INDEX@7690..7698 - EXPR_VAR@7690..7693 - NAME@7690..7693 - IDENT@7690..7693 "std" - DOT@7693..7694 "." - NAME@7694..7698 - IDENT@7694..7698 "join" - ARGS_DESC@7698..7756 - L_PAREN@7698..7699 "(" - ARG@7699..7703 - EXPR_STRING@7699..7703 - STRING_SINGLE@7699..7703 "'\\n'" - COMMA@7703..7704 "," - WHITESPACE@7704..7705 " " - ARG@7705..7755 - EXPR_BINARY@7705..7755 - LHS_EXPR@7705..7748 - EXPR_BINARY@7705..7748 - LHS_EXPR@7705..7714 - EXPR_VAR@7705..7714 - NAME@7705..7714 - IDENT@7705..7714 "main_body" - WHITESPACE@7714..7715 " " - PLUS@7715..7716 "+" - WHITESPACE@7716..7717 " " - EXPR_APPLY@7717..7748 - EXPR_INDEX@7717..7734 - EXPR_VAR@7717..7720 - NAME@7717..7720 - IDENT@7717..7720 "std" - DOT@7720..7721 "." - NAME@7721..7734 - IDENT@7721..7734 "flattenArrays" - ARGS_DESC@7734..7748 - L_PAREN@7734..7735 "(" - ARG@7735..7747 - EXPR_VAR@7735..7747 - NAME@7735..7747 - IDENT@7735..7747 "all_sections" - R_PAREN@7747..7748 ")" - WHITESPACE@7748..7749 " " - PLUS@7749..7750 "+" - WHITESPACE@7750..7751 " " - EXPR_ARRAY@7751..7755 - L_BRACK@7751..7752 "[" - EXPR_STRING@7752..7754 - STRING_SINGLE@7752..7754 "''" - R_BRACK@7754..7755 "]" - R_PAREN@7755..7756 ")" - COMMA@7756..7757 "," - WHITESPACE@7757..7761 "\n\n " - MEMBER_FIELD@7761..7814 - FIELD_METHOD@7761..7814 - FIELD_NAME_FIXED@7761..7773 - NAME@7761..7773 - IDENT@7761..7773 "manifestToml" - PARAMS_DESC@7773..7780 - L_PAREN@7773..7774 "(" - PARAM@7774..7779 - DESTRUCT_FULL@7774..7779 - NAME@7774..7779 - IDENT@7774..7779 "value" - R_PAREN@7779..7780 ")" - COLONCOLON@7780..7782 "::" - WHITESPACE@7782..7783 " " - EXPR_APPLY@7783..7814 - EXPR_INDEX@7783..7801 - EXPR_VAR@7783..7786 - NAME@7783..7786 - IDENT@7783..7786 "std" - DOT@7786..7787 "." - NAME@7787..7801 - IDENT@7787..7801 "manifestTomlEx" - ARGS_DESC@7801..7814 - L_PAREN@7801..7802 "(" - ARG@7802..7807 - EXPR_VAR@7802..7807 - NAME@7802..7807 - IDENT@7802..7807 "value" - COMMA@7807..7808 "," - WHITESPACE@7808..7809 " " - ARG@7809..7813 - EXPR_STRING@7809..7813 - STRING_SINGLE@7809..7813 "' '" - R_PAREN@7813..7814 ")" - COMMA@7814..7815 "," - WHITESPACE@7815..7819 "\n\n " - MEMBER_FIELD@7819..11476 - FIELD_METHOD@7819..11476 - FIELD_NAME_FIXED@7819..7833 - NAME@7819..7833 - IDENT@7819..7833 "manifestTomlEx" - PARAMS_DESC@7833..7848 - L_PAREN@7833..7834 "(" - PARAM@7834..7839 - DESTRUCT_FULL@7834..7839 - NAME@7834..7839 - IDENT@7834..7839 "value" - COMMA@7839..7840 "," - WHITESPACE@7840..7841 " " - PARAM@7841..7847 - DESTRUCT_FULL@7841..7847 - NAME@7841..7847 - IDENT@7841..7847 "indent" - R_PAREN@7847..7848 ")" - COLONCOLON@7848..7850 "::" - WHITESPACE@7850..7855 "\n " - EXPR_LOCAL@7855..11476 - LOCAL_KW@7855..7860 "local" - WHITESPACE@7860..7867 "\n " - BIND_DESTRUCT@7867..7906 - DESTRUCT_FULL@7867..7883 - NAME@7867..7883 - IDENT@7867..7883 "escapeStringToml" - WHITESPACE@7883..7884 " " - ASSIGN@7884..7885 "=" - WHITESPACE@7885..7886 " " - EXPR_INDEX@7886..7906 - EXPR_VAR@7886..7889 - NAME@7886..7889 - IDENT@7886..7889 "std" - DOT@7889..7890 "." - NAME@7890..7906 - IDENT@7890..7906 "escapeStringJson" - COMMA@7906..7907 "," - WHITESPACE@7907..7914 "\n " - BIND_FUNCTION@7914..8178 - NAME@7914..7927 - IDENT@7914..7927 "escapeKeyToml" - PARAMS_DESC@7927..7932 - L_PAREN@7927..7928 "(" - PARAM@7928..7931 - DESTRUCT_FULL@7928..7931 - NAME@7928..7931 - IDENT@7928..7931 "key" - R_PAREN@7931..7932 ")" - WHITESPACE@7932..7933 " " - ASSIGN@7933..7934 "=" - WHITESPACE@7934..7943 "\n " - EXPR_LOCAL@7943..8178 - LOCAL_KW@7943..7948 "local" - WHITESPACE@7948..7949 " " - BIND_DESTRUCT@7949..8056 - DESTRUCT_FULL@7949..7961 - NAME@7949..7961 - IDENT@7949..7961 "bare_allowed" - WHITESPACE@7961..7962 " " - ASSIGN@7962..7963 "=" - WHITESPACE@7963..7964 " " - EXPR_APPLY@7964..8056 - EXPR_INDEX@7964..7971 - EXPR_VAR@7964..7967 - NAME@7964..7967 - IDENT@7964..7967 "std" - DOT@7967..7968 "." - NAME@7968..7971 - IDENT@7968..7971 "set" - ARGS_DESC@7971..8056 - L_PAREN@7971..7972 "(" - ARG@7972..8055 - EXPR_APPLY@7972..8055 - EXPR_INDEX@7972..7987 - EXPR_VAR@7972..7975 - NAME@7972..7975 - IDENT@7972..7975 "std" - DOT@7975..7976 "." - NAME@7976..7987 - IDENT@7976..7987 "stringChars" - ARGS_DESC@7987..8055 - L_PAREN@7987..7988 "(" - ARG@7988..8054 - EXPR_STRING@7988..8054 - STRING_SINGLE@7988..8054 "'ABCDEFGHIJKLMNOPQRST ..." - R_PAREN@8054..8055 ")" - R_PAREN@8055..8056 ")" - SEMI@8056..8057 ";" - WHITESPACE@8057..8066 "\n " - EXPR_IF_THEN_ELSE@8066..8178 - IF_KW@8066..8068 "if" - WHITESPACE@8068..8069 " " - EXPR_BINARY@8069..8142 - LHS_EXPR@8069..8126 - EXPR_APPLY@8069..8126 - EXPR_INDEX@8069..8081 - EXPR_VAR@8069..8072 - NAME@8069..8072 - IDENT@8069..8072 "std" - DOT@8072..8073 "." - NAME@8073..8081 - IDENT@8073..8081 "setUnion" - ARGS_DESC@8081..8126 - L_PAREN@8081..8082 "(" - ARG@8082..8111 - EXPR_APPLY@8082..8111 - EXPR_INDEX@8082..8089 - EXPR_VAR@8082..8085 - NAME@8082..8085 - IDENT@8082..8085 "std" - DOT@8085..8086 "." - NAME@8086..8089 - IDENT@8086..8089 "set" - ARGS_DESC@8089..8111 - L_PAREN@8089..8090 "(" - ARG@8090..8110 - EXPR_APPLY@8090..8110 - EXPR_INDEX@8090..8105 - EXPR_VAR@8090..8093 - NAME@8090..8093 - IDENT@8090..8093 "std" - DOT@8093..8094 "." - NAME@8094..8105 - IDENT@8094..8105 "stringChars" - ARGS_DESC@8105..8110 - L_PAREN@8105..8106 "(" - ARG@8106..8109 - EXPR_VAR@8106..8109 - NAME@8106..8109 - IDENT@8106..8109 "key" - R_PAREN@8109..8110 ")" - R_PAREN@8110..8111 ")" - COMMA@8111..8112 "," - WHITESPACE@8112..8113 " " - ARG@8113..8125 - EXPR_VAR@8113..8125 - NAME@8113..8125 - IDENT@8113..8125 "bare_allowed" - R_PAREN@8125..8126 ")" - WHITESPACE@8126..8127 " " - EQ@8127..8129 "==" - WHITESPACE@8129..8130 " " - EXPR_VAR@8130..8142 - NAME@8130..8142 - IDENT@8130..8142 "bare_allowed" - WHITESPACE@8142..8143 " " - THEN_KW@8143..8147 "then" - WHITESPACE@8147..8148 " " - TRUE_EXPR@8148..8151 - EXPR_VAR@8148..8151 - NAME@8148..8151 - IDENT@8148..8151 "key" - WHITESPACE@8151..8152 " " - ELSE_KW@8152..8156 "else" - WHITESPACE@8156..8157 " " - FALSE_EXPR@8157..8178 - EXPR_APPLY@8157..8178 - EXPR_VAR@8157..8173 - NAME@8157..8173 - IDENT@8157..8173 "escapeStringToml" - ARGS_DESC@8173..8178 - L_PAREN@8173..8174 "(" - ARG@8174..8177 - EXPR_VAR@8174..8177 - NAME@8174..8177 - IDENT@8174..8177 "key" - R_PAREN@8177..8178 ")" - COMMA@8178..8179 "," - WHITESPACE@8179..8186 "\n " - BIND_FUNCTION@8186..8298 - NAME@8186..8198 - IDENT@8186..8198 "isTableArray" - PARAMS_DESC@8198..8201 - L_PAREN@8198..8199 "(" - PARAM@8199..8200 - DESTRUCT_FULL@8199..8200 - NAME@8199..8200 - IDENT@8199..8200 "v" - R_PAREN@8200..8201 ")" - WHITESPACE@8201..8202 " " - ASSIGN@8202..8203 "=" - WHITESPACE@8203..8204 " " - EXPR_BINARY@8204..8298 - LHS_EXPR@8204..8239 - EXPR_BINARY@8204..8239 - LHS_EXPR@8204..8218 - EXPR_APPLY@8204..8218 - EXPR_INDEX@8204..8215 - EXPR_VAR@8204..8207 - NAME@8204..8207 - IDENT@8204..8207 "std" - DOT@8207..8208 "." - NAME@8208..8215 - IDENT@8208..8215 "isArray" - ARGS_DESC@8215..8218 - L_PAREN@8215..8216 "(" - ARG@8216..8217 - EXPR_VAR@8216..8217 - NAME@8216..8217 - IDENT@8216..8217 "v" - R_PAREN@8217..8218 ")" - WHITESPACE@8218..8219 " " - AND@8219..8221 "&&" - WHITESPACE@8221..8222 " " - EXPR_BINARY@8222..8239 - LHS_EXPR@8222..8235 - EXPR_APPLY@8222..8235 - EXPR_INDEX@8222..8232 - EXPR_VAR@8222..8225 - NAME@8222..8225 - IDENT@8222..8225 "std" - DOT@8225..8226 "." - NAME@8226..8232 - IDENT@8226..8232 "length" - ARGS_DESC@8232..8235 - L_PAREN@8232..8233 "(" - ARG@8233..8234 - EXPR_VAR@8233..8234 - NAME@8233..8234 - IDENT@8233..8234 "v" - R_PAREN@8234..8235 ")" - WHITESPACE@8235..8236 " " - GT@8236..8237 ">" - WHITESPACE@8237..8238 " " - EXPR_NUMBER@8238..8239 - FLOAT@8238..8239 "0" - WHITESPACE@8239..8240 " " - AND@8240..8242 "&&" - WHITESPACE@8242..8243 " " - EXPR_APPLY@8243..8298 - EXPR_INDEX@8243..8252 - EXPR_VAR@8243..8246 - NAME@8243..8246 - IDENT@8243..8246 "std" - DOT@8246..8247 "." - NAME@8247..8252 - IDENT@8247..8252 "foldl" - ARGS_DESC@8252..8298 - L_PAREN@8252..8253 "(" - ARG@8253..8288 - EXPR_FUNCTION@8253..8288 - FUNCTION_KW@8253..8261 "function" - PARAMS_DESC@8261..8267 - L_PAREN@8261..8262 "(" - PARAM@8262..8263 - DESTRUCT_FULL@8262..8263 - NAME@8262..8263 - IDENT@8262..8263 "a" - COMMA@8263..8264 "," - WHITESPACE@8264..8265 " " - PARAM@8265..8266 - DESTRUCT_FULL@8265..8266 - NAME@8265..8266 - IDENT@8265..8266 "b" - R_PAREN@8266..8267 ")" - WHITESPACE@8267..8268 " " - EXPR_BINARY@8268..8288 - LHS_EXPR@8268..8269 - EXPR_VAR@8268..8269 - NAME@8268..8269 - IDENT@8268..8269 "a" - WHITESPACE@8269..8270 " " - AND@8270..8272 "&&" - WHITESPACE@8272..8273 " " - EXPR_APPLY@8273..8288 - EXPR_INDEX@8273..8285 - EXPR_VAR@8273..8276 - NAME@8273..8276 - IDENT@8273..8276 "std" - DOT@8276..8277 "." - NAME@8277..8285 - IDENT@8277..8285 "isObject" - ARGS_DESC@8285..8288 - L_PAREN@8285..8286 "(" - ARG@8286..8287 - EXPR_VAR@8286..8287 - NAME@8286..8287 - IDENT@8286..8287 "b" - R_PAREN@8287..8288 ")" - COMMA@8288..8289 "," - WHITESPACE@8289..8290 " " - ARG@8290..8291 - EXPR_VAR@8290..8291 - NAME@8290..8291 - IDENT@8290..8291 "v" - COMMA@8291..8292 "," - WHITESPACE@8292..8293 " " - ARG@8293..8297 - EXPR_LITERAL@8293..8297 - TRUE_KW@8293..8297 "true" - R_PAREN@8297..8298 ")" - COMMA@8298..8299 "," - WHITESPACE@8299..8306 "\n " - BIND_FUNCTION@8306..8355 - NAME@8306..8315 - IDENT@8306..8315 "isSection" - PARAMS_DESC@8315..8318 - L_PAREN@8315..8316 "(" - PARAM@8316..8317 - DESTRUCT_FULL@8316..8317 - NAME@8316..8317 - IDENT@8316..8317 "v" - R_PAREN@8317..8318 ")" - WHITESPACE@8318..8319 " " - ASSIGN@8319..8320 "=" - WHITESPACE@8320..8321 " " - EXPR_BINARY@8321..8355 - LHS_EXPR@8321..8336 - EXPR_APPLY@8321..8336 - EXPR_INDEX@8321..8333 - EXPR_VAR@8321..8324 - NAME@8321..8324 - IDENT@8321..8324 "std" - DOT@8324..8325 "." - NAME@8325..8333 - IDENT@8325..8333 "isObject" - ARGS_DESC@8333..8336 - L_PAREN@8333..8334 "(" - ARG@8334..8335 - EXPR_VAR@8334..8335 - NAME@8334..8335 - IDENT@8334..8335 "v" - R_PAREN@8335..8336 ")" - WHITESPACE@8336..8337 " " - OR@8337..8339 "||" - WHITESPACE@8339..8340 " " - EXPR_APPLY@8340..8355 - EXPR_VAR@8340..8352 - NAME@8340..8352 - IDENT@8340..8352 "isTableArray" - ARGS_DESC@8352..8355 - L_PAREN@8352..8353 "(" - ARG@8353..8354 - EXPR_VAR@8353..8354 - NAME@8353..8354 - IDENT@8353..8354 "v" - R_PAREN@8354..8355 ")" - COMMA@8355..8356 "," - WHITESPACE@8356..8363 "\n " - BIND_FUNCTION@8363..9990 - NAME@8363..8374 - IDENT@8363..8374 "renderValue" - PARAMS_DESC@8374..8407 - L_PAREN@8374..8375 "(" - PARAM@8375..8376 - DESTRUCT_FULL@8375..8376 - NAME@8375..8376 - IDENT@8375..8376 "v" - COMMA@8376..8377 "," - WHITESPACE@8377..8378 " " - PARAM@8378..8389 - DESTRUCT_FULL@8378..8389 - NAME@8378..8389 - IDENT@8378..8389 "indexedPath" - COMMA@8389..8390 "," - WHITESPACE@8390..8391 " " - PARAM@8391..8397 - DESTRUCT_FULL@8391..8397 - NAME@8391..8397 - IDENT@8391..8397 "inline" - COMMA@8397..8398 "," - WHITESPACE@8398..8399 " " - PARAM@8399..8406 - DESTRUCT_FULL@8399..8406 - NAME@8399..8406 - IDENT@8399..8406 "cindent" - R_PAREN@8406..8407 ")" - WHITESPACE@8407..8408 " " - ASSIGN@8408..8409 "=" - WHITESPACE@8409..8418 "\n " - EXPR_IF_THEN_ELSE@8418..9990 - IF_KW@8418..8420 "if" - WHITESPACE@8420..8421 " " - EXPR_BINARY@8421..8430 - LHS_EXPR@8421..8422 - EXPR_VAR@8421..8422 - NAME@8421..8422 - IDENT@8421..8422 "v" - WHITESPACE@8422..8423 " " - EQ@8423..8425 "==" - WHITESPACE@8425..8426 " " - EXPR_LITERAL@8426..8430 - TRUE_KW@8426..8430 "true" - WHITESPACE@8430..8431 " " - THEN_KW@8431..8435 "then" - WHITESPACE@8435..8446 "\n " - TRUE_EXPR@8446..8452 - EXPR_STRING@8446..8452 - STRING_SINGLE@8446..8452 "'true'" - WHITESPACE@8452..8461 "\n " - ELSE_KW@8461..8465 "else" - WHITESPACE@8465..8466 " " - FALSE_EXPR@8466..9990 - EXPR_IF_THEN_ELSE@8466..9990 - IF_KW@8466..8468 "if" - WHITESPACE@8468..8469 " " - EXPR_BINARY@8469..8479 - LHS_EXPR@8469..8470 - EXPR_VAR@8469..8470 - NAME@8469..8470 - IDENT@8469..8470 "v" - WHITESPACE@8470..8471 " " - EQ@8471..8473 "==" - WHITESPACE@8473..8474 " " - EXPR_LITERAL@8474..8479 - FALSE_KW@8474..8479 "false" - WHITESPACE@8479..8480 " " - THEN_KW@8480..8484 "then" - WHITESPACE@8484..8495 "\n " - TRUE_EXPR@8495..8502 - EXPR_STRING@8495..8502 - STRING_SINGLE@8495..8502 "'false'" - WHITESPACE@8502..8511 "\n " - ELSE_KW@8511..8515 "else" - WHITESPACE@8515..8516 " " - FALSE_EXPR@8516..9990 - EXPR_IF_THEN_ELSE@8516..9990 - IF_KW@8516..8518 "if" - WHITESPACE@8518..8519 " " - EXPR_BINARY@8519..8528 - LHS_EXPR@8519..8520 - EXPR_VAR@8519..8520 - NAME@8519..8520 - IDENT@8519..8520 "v" - WHITESPACE@8520..8521 " " - EQ@8521..8523 "==" - WHITESPACE@8523..8524 " " - EXPR_LITERAL@8524..8528 - NULL_KW@8524..8528 "null" - WHITESPACE@8528..8529 " " - THEN_KW@8529..8533 "then" - WHITESPACE@8533..8544 "\n " - TRUE_EXPR@8544..8594 - EXPR_ERROR@8544..8594 - ERROR_KW@8544..8549 "error" - WHITESPACE@8549..8550 " " - EXPR_BINARY@8550..8594 - LHS_EXPR@8550..8580 - EXPR_STRING@8550..8580 - STRING_SINGLE@8550..8580 "'Tried to manifest \"n ..." - WHITESPACE@8580..8581 " " - PLUS@8581..8582 "+" - WHITESPACE@8582..8583 " " - EXPR_VAR@8583..8594 - NAME@8583..8594 - IDENT@8583..8594 "indexedPath" - WHITESPACE@8594..8603 "\n " - ELSE_KW@8603..8607 "else" - WHITESPACE@8607..8608 " " - FALSE_EXPR@8608..9990 - EXPR_IF_THEN_ELSE@8608..9990 - IF_KW@8608..8610 "if" - WHITESPACE@8610..8611 " " - EXPR_APPLY@8611..8626 - EXPR_INDEX@8611..8623 - EXPR_VAR@8611..8614 - NAME@8611..8614 - IDENT@8611..8614 "std" - DOT@8614..8615 "." - NAME@8615..8623 - IDENT@8615..8623 "isNumber" - ARGS_DESC@8623..8626 - L_PAREN@8623..8624 "(" - ARG@8624..8625 - EXPR_VAR@8624..8625 - NAME@8624..8625 - IDENT@8624..8625 "v" - R_PAREN@8625..8626 ")" - WHITESPACE@8626..8627 " " - THEN_KW@8627..8631 "then" - WHITESPACE@8631..8642 "\n " - TRUE_EXPR@8642..8648 - EXPR_BINARY@8642..8648 - LHS_EXPR@8642..8644 - EXPR_STRING@8642..8644 - STRING_SINGLE@8642..8644 "''" - WHITESPACE@8644..8645 " " - PLUS@8645..8646 "+" - WHITESPACE@8646..8647 " " - EXPR_VAR@8647..8648 - NAME@8647..8648 - IDENT@8647..8648 "v" - WHITESPACE@8648..8657 "\n " - ELSE_KW@8657..8661 "else" - WHITESPACE@8661..8662 " " - FALSE_EXPR@8662..9990 - EXPR_IF_THEN_ELSE@8662..9990 - IF_KW@8662..8664 "if" - WHITESPACE@8664..8665 " " - EXPR_APPLY@8665..8680 - EXPR_INDEX@8665..8677 - EXPR_VAR@8665..8668 - NAME@8665..8668 - IDENT@8665..8668 "std" - DOT@8668..8669 "." - NAME@8669..8677 - IDENT@8669..8677 "isString" - ARGS_DESC@8677..8680 - L_PAREN@8677..8678 "(" - ARG@8678..8679 - EXPR_VAR@8678..8679 - NAME@8678..8679 - IDENT@8678..8679 "v" - R_PAREN@8679..8680 ")" - WHITESPACE@8680..8681 " " - THEN_KW@8681..8685 "then" - WHITESPACE@8685..8696 "\n " - TRUE_EXPR@8696..8715 - EXPR_APPLY@8696..8715 - EXPR_VAR@8696..8712 - NAME@8696..8712 - IDENT@8696..8712 "escapeStringToml" - ARGS_DESC@8712..8715 - L_PAREN@8712..8713 "(" - ARG@8713..8714 - EXPR_VAR@8713..8714 - NAME@8713..8714 - IDENT@8713..8714 "v" - R_PAREN@8714..8715 ")" - WHITESPACE@8715..8724 "\n " - ELSE_KW@8724..8728 "else" - WHITESPACE@8728..8729 " " - FALSE_EXPR@8729..9990 - EXPR_IF_THEN_ELSE@8729..9990 - IF_KW@8729..8731 "if" - WHITESPACE@8731..8732 " " - EXPR_APPLY@8732..8749 - EXPR_INDEX@8732..8746 - EXPR_VAR@8732..8735 - NAME@8732..8735 - IDENT@8732..8735 "std" - DOT@8735..8736 "." - NAME@8736..8746 - IDENT@8736..8746 "isFunction" - ARGS_DESC@8746..8749 - L_PAREN@8746..8747 "(" - ARG@8747..8748 - EXPR_VAR@8747..8748 - NAME@8747..8748 - IDENT@8747..8748 "v" - R_PAREN@8748..8749 ")" - WHITESPACE@8749..8750 " " - THEN_KW@8750..8754 "then" - WHITESPACE@8754..8765 "\n " - TRUE_EXPR@8765..8817 - EXPR_ERROR@8765..8817 - ERROR_KW@8765..8770 "error" - WHITESPACE@8770..8771 " " - EXPR_BINARY@8771..8817 - LHS_EXPR@8771..8803 - EXPR_STRING@8771..8803 - STRING_SINGLE@8771..8803 "'Tried to manifest fu ..." - WHITESPACE@8803..8804 " " - PLUS@8804..8805 "+" - WHITESPACE@8805..8806 " " - EXPR_VAR@8806..8817 - NAME@8806..8817 - IDENT@8806..8817 "indexedPath" - WHITESPACE@8817..8826 "\n " - ELSE_KW@8826..8830 "else" - WHITESPACE@8830..8831 " " - FALSE_EXPR@8831..9990 - EXPR_IF_THEN_ELSE@8831..9990 - IF_KW@8831..8833 "if" - WHITESPACE@8833..8834 " " - EXPR_APPLY@8834..8848 - EXPR_INDEX@8834..8845 - EXPR_VAR@8834..8837 - NAME@8834..8837 - IDENT@8834..8837 "std" - DOT@8837..8838 "." - NAME@8838..8845 - IDENT@8838..8845 "isArray" - ARGS_DESC@8845..8848 - L_PAREN@8845..8846 "(" - ARG@8846..8847 - EXPR_VAR@8846..8847 - NAME@8846..8847 - IDENT@8846..8847 "v" - R_PAREN@8847..8848 ")" - WHITESPACE@8848..8849 " " - THEN_KW@8849..8853 "then" - WHITESPACE@8853..8864 "\n " - TRUE_EXPR@8864..9561 - EXPR_IF_THEN_ELSE@8864..9561 - IF_KW@8864..8866 "if" - WHITESPACE@8866..8867 " " - EXPR_BINARY@8867..8885 - LHS_EXPR@8867..8880 - EXPR_APPLY@8867..8880 - EXPR_INDEX@8867..8877 - EXPR_VAR@8867..8870 - NAME@8867..8870 - IDENT@8867..8870 "std" - DOT@8870..8871 "." - NAME@8871..8877 - IDENT@8871..8877 "length" - ARGS_DESC@8877..8880 - L_PAREN@8877..8878 "(" - ARG@8878..8879 - EXPR_VAR@8878..8879 - NAME@8878..8879 - IDENT@8878..8879 "v" - R_PAREN@8879..8880 ")" - WHITESPACE@8880..8881 " " - EQ@8881..8883 "==" - WHITESPACE@8883..8884 " " - EXPR_NUMBER@8884..8885 - FLOAT@8884..8885 "0" - WHITESPACE@8885..8886 " " - THEN_KW@8886..8890 "then" - WHITESPACE@8890..8903 "\n " - TRUE_EXPR@8903..8907 - EXPR_STRING@8903..8907 - STRING_SINGLE@8903..8907 "'[]'" - WHITESPACE@8907..8918 "\n " - ELSE_KW@8918..8922 "else" - WHITESPACE@8922..8935 "\n " - FALSE_EXPR@8935..9561 - EXPR_LOCAL@8935..9561 - LOCAL_KW@8935..8940 "local" - WHITESPACE@8940..8941 " " - BIND_DESTRUCT@8941..8980 - DESTRUCT_FULL@8941..8946 - NAME@8941..8946 - IDENT@8941..8946 "range" - WHITESPACE@8946..8947 " " - ASSIGN@8947..8948 "=" - WHITESPACE@8948..8949 " " - EXPR_APPLY@8949..8980 - EXPR_INDEX@8949..8958 - EXPR_VAR@8949..8952 - NAME@8949..8952 - IDENT@8949..8952 "std" - DOT@8952..8953 "." - NAME@8953..8958 - IDENT@8953..8958 "range" - ARGS_DESC@8958..8980 - L_PAREN@8958..8959 "(" - ARG@8959..8960 - EXPR_NUMBER@8959..8960 - FLOAT@8959..8960 "0" - COMMA@8960..8961 "," - WHITESPACE@8961..8962 " " - ARG@8962..8979 - EXPR_BINARY@8962..8979 - LHS_EXPR@8962..8975 - EXPR_APPLY@8962..8975 - EXPR_INDEX@8962..8972 - EXPR_VAR@8962..8965 - NAME@8962..8965 - IDENT@8962..8965 "std" - DOT@8965..8966 "." - NAME@8966..8972 - IDENT@8966..8972 "length" - ARGS_DESC@8972..8975 - L_PAREN@8972..8973 "(" - ARG@8973..8974 - EXPR_VAR@8973..8974 - NAME@8973..8974 - IDENT@8973..8974 "v" - R_PAREN@8974..8975 ")" - WHITESPACE@8975..8976 " " - MINUS@8976..8977 "-" - WHITESPACE@8977..8978 " " - EXPR_NUMBER@8978..8979 - FLOAT@8978..8979 "1" - R_PAREN@8979..8980 ")" - SEMI@8980..8981 ";" - WHITESPACE@8981..8994 "\n " - EXPR_LOCAL@8994..9561 - LOCAL_KW@8994..8999 "local" - WHITESPACE@8999..9000 " " - BIND_DESTRUCT@9000..9052 - DESTRUCT_FULL@9000..9010 - NAME@9000..9010 - IDENT@9000..9010 "new_indent" - WHITESPACE@9010..9011 " " - ASSIGN@9011..9012 "=" - WHITESPACE@9012..9013 " " - EXPR_IF_THEN_ELSE@9013..9052 - IF_KW@9013..9015 "if" - WHITESPACE@9015..9016 " " - EXPR_VAR@9016..9022 - NAME@9016..9022 - IDENT@9016..9022 "inline" - WHITESPACE@9022..9023 " " - THEN_KW@9023..9027 "then" - WHITESPACE@9027..9028 " " - TRUE_EXPR@9028..9030 - EXPR_STRING@9028..9030 - STRING_SINGLE@9028..9030 "''" - WHITESPACE@9030..9031 " " - ELSE_KW@9031..9035 "else" - WHITESPACE@9035..9036 " " - FALSE_EXPR@9036..9052 - EXPR_BINARY@9036..9052 - LHS_EXPR@9036..9043 - EXPR_VAR@9036..9043 - NAME@9036..9043 - IDENT@9036..9043 "cindent" - WHITESPACE@9043..9044 " " - PLUS@9044..9045 "+" - WHITESPACE@9045..9046 " " - EXPR_VAR@9046..9052 - NAME@9046..9052 - IDENT@9046..9052 "indent" - SEMI@9052..9053 ";" - WHITESPACE@9053..9066 "\n " - EXPR_LOCAL@9066..9561 - LOCAL_KW@9066..9071 "local" - WHITESPACE@9071..9072 " " - BIND_DESTRUCT@9072..9112 - DESTRUCT_FULL@9072..9081 - NAME@9072..9081 - IDENT@9072..9081 "separator" - WHITESPACE@9081..9082 " " - ASSIGN@9082..9083 "=" - WHITESPACE@9083..9084 " " - EXPR_IF_THEN_ELSE@9084..9112 - IF_KW@9084..9086 "if" - WHITESPACE@9086..9087 " " - EXPR_VAR@9087..9093 - NAME@9087..9093 - IDENT@9087..9093 "inline" - WHITESPACE@9093..9094 " " - THEN_KW@9094..9098 "then" - WHITESPACE@9098..9099 " " - TRUE_EXPR@9099..9102 - EXPR_STRING@9099..9102 - STRING_SINGLE@9099..9102 "' '" - WHITESPACE@9102..9103 " " - ELSE_KW@9103..9107 "else" - WHITESPACE@9107..9108 " " - FALSE_EXPR@9108..9112 - EXPR_STRING@9108..9112 - STRING_SINGLE@9108..9112 "'\\n'" - SEMI@9112..9113 ";" - WHITESPACE@9113..9126 "\n " - EXPR_LOCAL@9126..9561 - LOCAL_KW@9126..9131 "local" - WHITESPACE@9131..9132 " " - BIND_DESTRUCT@9132..9528 - DESTRUCT_FULL@9132..9137 - NAME@9132..9137 - IDENT@9132..9137 "lines" - WHITESPACE@9137..9138 " " - ASSIGN@9138..9139 "=" - WHITESPACE@9139..9140 " " - EXPR_BINARY@9140..9528 - LHS_EXPR@9140..9447 - EXPR_BINARY@9140..9447 - LHS_EXPR@9140..9157 - EXPR_ARRAY@9140..9157 - L_BRACK@9140..9141 "[" - EXPR_BINARY@9141..9156 - LHS_EXPR@9141..9144 - EXPR_STRING@9141..9144 - STRING_SINGLE@9141..9144 "'['" - WHITESPACE@9144..9145 " " - PLUS@9145..9146 "+" - WHITESPACE@9146..9147 " " - EXPR_VAR@9147..9156 - NAME@9147..9156 - IDENT@9147..9156 "separator" - R_BRACK@9156..9157 "]" - WHITESPACE@9157..9184 "\n ..." - PLUS@9184..9185 "+" - WHITESPACE@9185..9186 " " - EXPR_APPLY@9186..9447 - EXPR_INDEX@9186..9194 - EXPR_VAR@9186..9189 - NAME@9186..9189 - IDENT@9186..9189 "std" - DOT@9189..9190 "." - NAME@9190..9194 - IDENT@9190..9194 "join" - ARGS_DESC@9194..9447 - L_PAREN@9194..9195 "(" - ARG@9195..9212 - EXPR_ARRAY@9195..9212 - L_BRACK@9195..9196 "[" - EXPR_BINARY@9196..9211 - LHS_EXPR@9196..9199 - EXPR_STRING@9196..9199 - STRING_SINGLE@9196..9199 "','" - WHITESPACE@9199..9200 " " - PLUS@9200..9201 "+" - WHITESPACE@9201..9202 " " - EXPR_VAR@9202..9211 - NAME@9202..9211 - IDENT@9202..9211 "separator" - R_BRACK@9211..9212 "]" - COMMA@9212..9213 "," - WHITESPACE@9213..9251 "\n ..." - ARG@9251..9446 - EXPR_ARRAY_COMP@9251..9446 - L_BRACK@9251..9252 "[" - WHITESPACE@9252..9292 "\n ..." - EXPR_ARRAY@9292..9353 - L_BRACK@9292..9293 "[" - EXPR_BINARY@9293..9352 - LHS_EXPR@9293..9303 - EXPR_VAR@9293..9303 - NAME@9293..9303 - IDENT@9293..9303 "new_indent" - WHITESPACE@9303..9304 " " - PLUS@9304..9305 "+" - WHITESPACE@9305..9306 " " - EXPR_APPLY@9306..9352 - EXPR_VAR@9306..9317 - NAME@9306..9317 - IDENT@9306..9317 "renderValue" - ARGS_DESC@9317..9352 - L_PAREN@9317..9318 "(" - ARG@9318..9322 - EXPR_INDEX_EXPR@9318..9322 - LHS_EXPR@9318..9319 - EXPR_VAR@9318..9319 - NAME@9318..9319 - IDENT@9318..9319 "v" - L_BRACK@9319..9320 "[" - EXPR_VAR@9320..9321 - NAME@9320..9321 - IDENT@9320..9321 "i" - R_BRACK@9321..9322 "]" - COMMA@9322..9323 "," - WHITESPACE@9323..9324 " " - ARG@9324..9341 - EXPR_BINARY@9324..9341 - LHS_EXPR@9324..9335 - EXPR_VAR@9324..9335 - NAME@9324..9335 - IDENT@9324..9335 "indexedPath" - WHITESPACE@9335..9336 " " - PLUS@9336..9337 "+" - WHITESPACE@9337..9338 " " - EXPR_ARRAY@9338..9341 - L_BRACK@9338..9339 "[" - EXPR_VAR@9339..9340 - NAME@9339..9340 - IDENT@9339..9340 "i" - R_BRACK@9340..9341 "]" - COMMA@9341..9342 "," - WHITESPACE@9342..9343 " " - ARG@9343..9347 - EXPR_LITERAL@9343..9347 - TRUE_KW@9343..9347 "true" - COMMA@9347..9348 "," - WHITESPACE@9348..9349 " " - ARG@9349..9351 - EXPR_STRING@9349..9351 - STRING_SINGLE@9349..9351 "''" - R_PAREN@9351..9352 ")" - R_BRACK@9352..9353 "]" - WHITESPACE@9353..9393 "\n ..." - FOR_SPEC@9393..9407 - FOR_KW@9393..9396 "for" - WHITESPACE@9396..9397 " " - NAME@9397..9398 - IDENT@9397..9398 "i" - WHITESPACE@9398..9399 " " - IN_KW@9399..9401 "in" - WHITESPACE@9401..9402 " " - EXPR_VAR@9402..9407 - NAME@9402..9407 - IDENT@9402..9407 "range" - WHITESPACE@9407..9445 "\n ..." - R_BRACK@9445..9446 "]" - R_PAREN@9446..9447 ")" - WHITESPACE@9447..9474 "\n ..." - PLUS@9474..9475 "+" - WHITESPACE@9475..9476 " " - EXPR_ARRAY@9476..9528 - L_BRACK@9476..9477 "[" - EXPR_BINARY@9477..9527 - LHS_EXPR@9477..9521 - EXPR_BINARY@9477..9521 - LHS_EXPR@9477..9486 - EXPR_VAR@9477..9486 - NAME@9477..9486 - IDENT@9477..9486 "separator" - WHITESPACE@9486..9487 " " - PLUS@9487..9488 "+" - WHITESPACE@9488..9489 " " - EXPR_PARENED@9489..9521 - L_PAREN@9489..9490 "(" - EXPR_IF_THEN_ELSE@9490..9520 - IF_KW@9490..9492 "if" - WHITESPACE@9492..9493 " " - EXPR_VAR@9493..9499 - NAME@9493..9499 - IDENT@9493..9499 "inline" - WHITESPACE@9499..9500 " " - THEN_KW@9500..9504 "then" - WHITESPACE@9504..9505 " " - TRUE_EXPR@9505..9507 - EXPR_STRING@9505..9507 - STRING_SINGLE@9505..9507 "''" - WHITESPACE@9507..9508 " " - ELSE_KW@9508..9512 "else" - WHITESPACE@9512..9513 " " - FALSE_EXPR@9513..9520 - EXPR_VAR@9513..9520 - NAME@9513..9520 - IDENT@9513..9520 "cindent" - R_PAREN@9520..9521 ")" - WHITESPACE@9521..9522 " " - PLUS@9522..9523 "+" - WHITESPACE@9523..9524 " " - EXPR_STRING@9524..9527 - STRING_SINGLE@9524..9527 "']'" - R_BRACK@9527..9528 "]" - SEMI@9528..9529 ";" - WHITESPACE@9529..9542 "\n " - EXPR_APPLY@9542..9561 - EXPR_INDEX@9542..9550 - EXPR_VAR@9542..9545 - NAME@9542..9545 - IDENT@9542..9545 "std" - DOT@9545..9546 "." - NAME@9546..9550 - IDENT@9546..9550 "join" - ARGS_DESC@9550..9561 - L_PAREN@9550..9551 "(" - ARG@9551..9553 - EXPR_STRING@9551..9553 - STRING_SINGLE@9551..9553 "''" - COMMA@9553..9554 "," - WHITESPACE@9554..9555 " " - ARG@9555..9560 - EXPR_VAR@9555..9560 - NAME@9555..9560 - IDENT@9555..9560 "lines" - R_PAREN@9560..9561 ")" - WHITESPACE@9561..9570 "\n " - ELSE_KW@9570..9574 "else" - WHITESPACE@9574..9575 " " - FALSE_EXPR@9575..9990 - EXPR_IF_THEN_ELSE@9575..9990 - IF_KW@9575..9577 "if" - WHITESPACE@9577..9578 " " - EXPR_APPLY@9578..9593 - EXPR_INDEX@9578..9590 - EXPR_VAR@9578..9581 - NAME@9578..9581 - IDENT@9578..9581 "std" - DOT@9581..9582 "." - NAME@9582..9590 - IDENT@9582..9590 "isObject" - ARGS_DESC@9590..9593 - L_PAREN@9590..9591 "(" - ARG@9591..9592 - EXPR_VAR@9591..9592 - NAME@9591..9592 - IDENT@9591..9592 "v" - R_PAREN@9592..9593 ")" - WHITESPACE@9593..9594 " " - THEN_KW@9594..9598 "then" - WHITESPACE@9598..9609 "\n " - TRUE_EXPR@9609..9990 - EXPR_LOCAL@9609..9990 - LOCAL_KW@9609..9614 "local" - WHITESPACE@9614..9615 " " - BIND_DESTRUCT@9615..9959 - DESTRUCT_FULL@9615..9620 - NAME@9615..9620 - IDENT@9615..9620 "lines" - WHITESPACE@9620..9621 " " - ASSIGN@9621..9622 "=" - WHITESPACE@9622..9623 " " - EXPR_BINARY@9623..9959 - LHS_EXPR@9623..9926 - EXPR_BINARY@9623..9926 - LHS_EXPR@9623..9629 - EXPR_ARRAY@9623..9629 - L_BRACK@9623..9624 "[" - EXPR_STRING@9624..9628 - STRING_SINGLE@9624..9628 "'{ '" - R_BRACK@9628..9629 "]" - WHITESPACE@9629..9654 "\n ..." - PLUS@9654..9655 "+" - WHITESPACE@9655..9656 " " - EXPR_APPLY@9656..9926 - EXPR_INDEX@9656..9664 - EXPR_VAR@9656..9659 - NAME@9656..9659 - IDENT@9656..9659 "std" - DOT@9659..9660 "." - NAME@9660..9664 - IDENT@9660..9664 "join" - ARGS_DESC@9664..9926 - L_PAREN@9664..9665 "(" - ARG@9665..9671 - EXPR_ARRAY@9665..9671 - L_BRACK@9665..9666 "[" - EXPR_STRING@9666..9670 - STRING_SINGLE@9666..9670 "', '" - R_BRACK@9670..9671 "]" - COMMA@9671..9672 "," - WHITESPACE@9672..9708 "\n ..." - ARG@9708..9925 - EXPR_ARRAY_COMP@9708..9925 - L_BRACK@9708..9709 "[" - WHITESPACE@9709..9747 "\n ..." - EXPR_ARRAY@9747..9822 - L_BRACK@9747..9748 "[" - EXPR_BINARY@9748..9821 - LHS_EXPR@9748..9772 - EXPR_BINARY@9748..9772 - LHS_EXPR@9748..9764 - EXPR_APPLY@9748..9764 - EXPR_VAR@9748..9761 - NAME@9748..9761 - IDENT@9748..9761 "escapeKeyToml" - ARGS_DESC@9761..9764 - L_PAREN@9761..9762 "(" - ARG@9762..9763 - EXPR_VAR@9762..9763 - NAME@9762..9763 - IDENT@9762..9763 "k" - R_PAREN@9763..9764 ")" - WHITESPACE@9764..9765 " " - PLUS@9765..9766 "+" - WHITESPACE@9766..9767 " " - EXPR_STRING@9767..9772 - STRING_SINGLE@9767..9772 "' = '" - WHITESPACE@9772..9773 " " - PLUS@9773..9774 "+" - WHITESPACE@9774..9775 " " - EXPR_APPLY@9775..9821 - EXPR_VAR@9775..9786 - NAME@9775..9786 - IDENT@9775..9786 "renderValue" - ARGS_DESC@9786..9821 - L_PAREN@9786..9787 "(" - ARG@9787..9791 - EXPR_INDEX_EXPR@9787..9791 - LHS_EXPR@9787..9788 - EXPR_VAR@9787..9788 - NAME@9787..9788 - IDENT@9787..9788 "v" - L_BRACK@9788..9789 "[" - EXPR_VAR@9789..9790 - NAME@9789..9790 - IDENT@9789..9790 "k" - R_BRACK@9790..9791 "]" - COMMA@9791..9792 "," - WHITESPACE@9792..9793 " " - ARG@9793..9810 - EXPR_BINARY@9793..9810 - LHS_EXPR@9793..9804 - EXPR_VAR@9793..9804 - NAME@9793..9804 - IDENT@9793..9804 "indexedPath" - WHITESPACE@9804..9805 " " - PLUS@9805..9806 "+" - WHITESPACE@9806..9807 " " - EXPR_ARRAY@9807..9810 - L_BRACK@9807..9808 "[" - EXPR_VAR@9808..9809 - NAME@9808..9809 - IDENT@9808..9809 "k" - R_BRACK@9809..9810 "]" - COMMA@9810..9811 "," - WHITESPACE@9811..9812 " " - ARG@9812..9816 - EXPR_LITERAL@9812..9816 - TRUE_KW@9812..9816 "true" - COMMA@9816..9817 "," - WHITESPACE@9817..9818 " " - ARG@9818..9820 - EXPR_STRING@9818..9820 - STRING_SINGLE@9818..9820 "''" - R_PAREN@9820..9821 ")" - R_BRACK@9821..9822 "]" - WHITESPACE@9822..9860 "\n ..." - FOR_SPEC@9860..9888 - FOR_KW@9860..9863 "for" - WHITESPACE@9863..9864 " " - NAME@9864..9865 - IDENT@9864..9865 "k" - WHITESPACE@9865..9866 " " - IN_KW@9866..9868 "in" - WHITESPACE@9868..9869 " " - EXPR_APPLY@9869..9888 - EXPR_INDEX@9869..9885 - EXPR_VAR@9869..9872 - NAME@9869..9872 - IDENT@9869..9872 "std" - DOT@9872..9873 "." - NAME@9873..9885 - IDENT@9873..9885 "objectFields" - ARGS_DESC@9885..9888 - L_PAREN@9885..9886 "(" - ARG@9886..9887 - EXPR_VAR@9886..9887 - NAME@9886..9887 - IDENT@9886..9887 "v" - R_PAREN@9887..9888 ")" - WHITESPACE@9888..9924 "\n ..." - R_BRACK@9924..9925 "]" - R_PAREN@9925..9926 ")" - WHITESPACE@9926..9951 "\n ..." - PLUS@9951..9952 "+" - WHITESPACE@9952..9953 " " - EXPR_ARRAY@9953..9959 - L_BRACK@9953..9954 "[" - EXPR_STRING@9954..9958 - STRING_SINGLE@9954..9958 "' }'" - R_BRACK@9958..9959 "]" - SEMI@9959..9960 ";" - WHITESPACE@9960..9971 "\n " - EXPR_APPLY@9971..9990 - EXPR_INDEX@9971..9979 - EXPR_VAR@9971..9974 - NAME@9971..9974 - IDENT@9971..9974 "std" - DOT@9974..9975 "." - NAME@9975..9979 - IDENT@9975..9979 "join" - ARGS_DESC@9979..9990 - L_PAREN@9979..9980 "(" - ARG@9980..9982 - EXPR_STRING@9980..9982 - STRING_SINGLE@9980..9982 "''" - COMMA@9982..9983 "," - WHITESPACE@9983..9984 " " - ARG@9984..9989 - EXPR_VAR@9984..9989 - NAME@9984..9989 - IDENT@9984..9989 "lines" - R_PAREN@9989..9990 ")" - COMMA@9990..9991 "," - WHITESPACE@9991..9998 "\n " - BIND_FUNCTION@9998..10667 - NAME@9998..10017 - IDENT@9998..10017 "renderTableInternal" - PARAMS_DESC@10017..10048 - L_PAREN@10017..10018 "(" - PARAM@10018..10019 - DESTRUCT_FULL@10018..10019 - NAME@10018..10019 - IDENT@10018..10019 "v" - COMMA@10019..10020 "," - WHITESPACE@10020..10021 " " - PARAM@10021..10025 - DESTRUCT_FULL@10021..10025 - NAME@10021..10025 - IDENT@10021..10025 "path" - COMMA@10025..10026 "," - WHITESPACE@10026..10027 " " - PARAM@10027..10038 - DESTRUCT_FULL@10027..10038 - NAME@10027..10038 - IDENT@10027..10038 "indexedPath" - COMMA@10038..10039 "," - WHITESPACE@10039..10040 " " - PARAM@10040..10047 - DESTRUCT_FULL@10040..10047 - NAME@10040..10047 - IDENT@10040..10047 "cindent" - R_PAREN@10047..10048 ")" - WHITESPACE@10048..10049 " " - ASSIGN@10049..10050 "=" - WHITESPACE@10050..10059 "\n " - EXPR_LOCAL@10059..10667 - LOCAL_KW@10059..10064 "local" - WHITESPACE@10064..10065 " " - BIND_DESTRUCT@10065..10272 - DESTRUCT_FULL@10065..10068 - NAME@10065..10068 - IDENT@10065..10068 "kvp" - WHITESPACE@10068..10069 " " - ASSIGN@10069..10070 "=" - WHITESPACE@10070..10071 " " - EXPR_APPLY@10071..10272 - EXPR_INDEX@10071..10088 - EXPR_VAR@10071..10074 - NAME@10071..10074 - IDENT@10071..10074 "std" - DOT@10074..10075 "." - NAME@10075..10088 - IDENT@10075..10088 "flattenArrays" - ARGS_DESC@10088..10272 - L_PAREN@10088..10089 "(" - ARG@10089..10271 - EXPR_ARRAY_COMP@10089..10271 - L_BRACK@10089..10090 "[" - WHITESPACE@10090..10101 "\n " - EXPR_ARRAY@10101..10192 - L_BRACK@10101..10102 "[" - EXPR_BINARY@10102..10191 - LHS_EXPR@10102..10136 - EXPR_BINARY@10102..10136 - LHS_EXPR@10102..10128 - EXPR_BINARY@10102..10128 - LHS_EXPR@10102..10109 - EXPR_VAR@10102..10109 - NAME@10102..10109 - IDENT@10102..10109 "cindent" - WHITESPACE@10109..10110 " " - PLUS@10110..10111 "+" - WHITESPACE@10111..10112 " " - EXPR_APPLY@10112..10128 - EXPR_VAR@10112..10125 - NAME@10112..10125 - IDENT@10112..10125 "escapeKeyToml" - ARGS_DESC@10125..10128 - L_PAREN@10125..10126 "(" - ARG@10126..10127 - EXPR_VAR@10126..10127 - NAME@10126..10127 - IDENT@10126..10127 "k" - R_PAREN@10127..10128 ")" - WHITESPACE@10128..10129 " " - PLUS@10129..10130 "+" - WHITESPACE@10130..10131 " " - EXPR_STRING@10131..10136 - STRING_SINGLE@10131..10136 "' = '" - WHITESPACE@10136..10137 " " - PLUS@10137..10138 "+" - WHITESPACE@10138..10139 " " - EXPR_APPLY@10139..10191 - EXPR_VAR@10139..10150 - NAME@10139..10150 - IDENT@10139..10150 "renderValue" - ARGS_DESC@10150..10191 - L_PAREN@10150..10151 "(" - ARG@10151..10155 - EXPR_INDEX_EXPR@10151..10155 - LHS_EXPR@10151..10152 - EXPR_VAR@10151..10152 - NAME@10151..10152 - IDENT@10151..10152 "v" - L_BRACK@10152..10153 "[" - EXPR_VAR@10153..10154 - NAME@10153..10154 - IDENT@10153..10154 "k" - R_BRACK@10154..10155 "]" - COMMA@10155..10156 "," - WHITESPACE@10156..10157 " " - ARG@10157..10174 - EXPR_BINARY@10157..10174 - LHS_EXPR@10157..10168 - EXPR_VAR@10157..10168 - NAME@10157..10168 - IDENT@10157..10168 "indexedPath" - WHITESPACE@10168..10169 " " - PLUS@10169..10170 "+" - WHITESPACE@10170..10171 " " - EXPR_ARRAY@10171..10174 - L_BRACK@10171..10172 "[" - EXPR_VAR@10172..10173 - NAME@10172..10173 - IDENT@10172..10173 "k" - R_BRACK@10173..10174 "]" - COMMA@10174..10175 "," - WHITESPACE@10175..10176 " " - ARG@10176..10181 - EXPR_LITERAL@10176..10181 - FALSE_KW@10176..10181 "false" - COMMA@10181..10182 "," - WHITESPACE@10182..10183 " " - ARG@10183..10190 - EXPR_VAR@10183..10190 - NAME@10183..10190 - IDENT@10183..10190 "cindent" - R_PAREN@10190..10191 ")" - R_BRACK@10191..10192 "]" - WHITESPACE@10192..10203 "\n " - FOR_SPEC@10203..10231 - FOR_KW@10203..10206 "for" - WHITESPACE@10206..10207 " " - NAME@10207..10208 - IDENT@10207..10208 "k" - WHITESPACE@10208..10209 " " - IN_KW@10209..10211 "in" - WHITESPACE@10211..10212 " " - EXPR_APPLY@10212..10231 - EXPR_INDEX@10212..10228 - EXPR_VAR@10212..10215 - NAME@10212..10215 - IDENT@10212..10215 "std" - DOT@10215..10216 "." - NAME@10216..10228 - IDENT@10216..10228 "objectFields" - ARGS_DESC@10228..10231 - L_PAREN@10228..10229 "(" - ARG@10229..10230 - EXPR_VAR@10229..10230 - NAME@10229..10230 - IDENT@10229..10230 "v" - R_PAREN@10230..10231 ")" - WHITESPACE@10231..10242 "\n " - IF_SPEC@10242..10261 - IF_KW@10242..10244 "if" - WHITESPACE@10244..10245 " " - EXPR_UNARY@10245..10261 - NOT@10245..10246 "!" - EXPR_APPLY@10246..10261 - EXPR_VAR@10246..10255 - NAME@10246..10255 - IDENT@10246..10255 "isSection" - ARGS_DESC@10255..10261 - L_PAREN@10255..10256 "(" - ARG@10256..10260 - EXPR_INDEX_EXPR@10256..10260 - LHS_EXPR@10256..10257 - EXPR_VAR@10256..10257 - NAME@10256..10257 - IDENT@10256..10257 "v" - L_BRACK@10257..10258 "[" - EXPR_VAR@10258..10259 - NAME@10258..10259 - IDENT@10258..10259 "k" - R_BRACK@10259..10260 "]" - R_PAREN@10260..10261 ")" - WHITESPACE@10261..10270 "\n " - R_BRACK@10270..10271 "]" - R_PAREN@10271..10272 ")" - SEMI@10272..10273 ";" - WHITESPACE@10273..10282 "\n " - EXPR_LOCAL@10282..10667 - LOCAL_KW@10282..10287 "local" - WHITESPACE@10287..10288 " " - BIND_DESTRUCT@10288..10631 - DESTRUCT_FULL@10288..10296 - NAME@10288..10296 - IDENT@10288..10296 "sections" - WHITESPACE@10296..10297 " " - ASSIGN@10297..10298 "=" - WHITESPACE@10298..10299 " " - EXPR_BINARY@10299..10631 - LHS_EXPR@10299..10320 - EXPR_ARRAY@10299..10320 - L_BRACK@10299..10300 "[" - EXPR_APPLY@10300..10319 - EXPR_INDEX@10300..10308 - EXPR_VAR@10300..10303 - NAME@10300..10303 - IDENT@10300..10303 "std" - DOT@10303..10304 "." - NAME@10304..10308 - IDENT@10304..10308 "join" - ARGS_DESC@10308..10319 - L_PAREN@10308..10309 "(" - ARG@10309..10313 - EXPR_STRING@10309..10313 - STRING_SINGLE@10309..10313 "'\\n'" - COMMA@10313..10314 "," - WHITESPACE@10314..10315 " " - ARG@10315..10318 - EXPR_VAR@10315..10318 - NAME@10315..10318 - IDENT@10315..10318 "kvp" - R_PAREN@10318..10319 ")" - R_BRACK@10319..10320 "]" - WHITESPACE@10320..10321 " " - PLUS@10321..10322 "+" - WHITESPACE@10322..10323 " " - EXPR_ARRAY_COMP@10323..10631 - L_BRACK@10323..10324 "[" - WHITESPACE@10324..10335 "\n " - EXPR_PARENED@10335..10553 - L_PAREN@10335..10336 "(" - WHITESPACE@10336..10349 "\n " - EXPR_IF_THEN_ELSE@10349..10541 - IF_KW@10349..10351 "if" - WHITESPACE@10351..10352 " " - EXPR_APPLY@10352..10370 - EXPR_INDEX@10352..10364 - EXPR_VAR@10352..10355 - NAME@10352..10355 - IDENT@10352..10355 "std" - DOT@10355..10356 "." - NAME@10356..10364 - IDENT@10356..10364 "isObject" - ARGS_DESC@10364..10370 - L_PAREN@10364..10365 "(" - ARG@10365..10369 - EXPR_INDEX_EXPR@10365..10369 - LHS_EXPR@10365..10366 - EXPR_VAR@10365..10366 - NAME@10365..10366 - IDENT@10365..10366 "v" - L_BRACK@10366..10367 "[" - EXPR_VAR@10367..10368 - NAME@10367..10368 - IDENT@10367..10368 "k" - R_BRACK@10368..10369 "]" - R_PAREN@10369..10370 ")" - WHITESPACE@10370..10371 " " - THEN_KW@10371..10375 "then" - WHITESPACE@10375..10390 "\n " - TRUE_EXPR@10390..10447 - EXPR_APPLY@10390..10447 - EXPR_VAR@10390..10401 - NAME@10390..10401 - IDENT@10390..10401 "renderTable" - ARGS_DESC@10401..10447 - L_PAREN@10401..10402 "(" - ARG@10402..10406 - EXPR_INDEX_EXPR@10402..10406 - LHS_EXPR@10402..10403 - EXPR_VAR@10402..10403 - NAME@10402..10403 - IDENT@10402..10403 "v" - L_BRACK@10403..10404 "[" - EXPR_VAR@10404..10405 - NAME@10404..10405 - IDENT@10404..10405 "k" - R_BRACK@10405..10406 "]" - COMMA@10406..10407 "," - WHITESPACE@10407..10408 " " - ARG@10408..10418 - EXPR_BINARY@10408..10418 - LHS_EXPR@10408..10412 - EXPR_VAR@10408..10412 - NAME@10408..10412 - IDENT@10408..10412 "path" - WHITESPACE@10412..10413 " " - PLUS@10413..10414 "+" - WHITESPACE@10414..10415 " " - EXPR_ARRAY@10415..10418 - L_BRACK@10415..10416 "[" - EXPR_VAR@10416..10417 - NAME@10416..10417 - IDENT@10416..10417 "k" - R_BRACK@10417..10418 "]" - COMMA@10418..10419 "," - WHITESPACE@10419..10420 " " - ARG@10420..10437 - EXPR_BINARY@10420..10437 - LHS_EXPR@10420..10431 - EXPR_VAR@10420..10431 - NAME@10420..10431 - IDENT@10420..10431 "indexedPath" - WHITESPACE@10431..10432 " " - PLUS@10432..10433 "+" - WHITESPACE@10433..10434 " " - EXPR_ARRAY@10434..10437 - L_BRACK@10434..10435 "[" - EXPR_VAR@10435..10436 - NAME@10435..10436 - IDENT@10435..10436 "k" - R_BRACK@10436..10437 "]" - COMMA@10437..10438 "," - WHITESPACE@10438..10439 " " - ARG@10439..10446 - EXPR_VAR@10439..10446 - NAME@10439..10446 - IDENT@10439..10446 "cindent" - R_PAREN@10446..10447 ")" - WHITESPACE@10447..10460 "\n " - ELSE_KW@10460..10464 "else" - WHITESPACE@10464..10479 "\n " - FALSE_EXPR@10479..10541 - EXPR_APPLY@10479..10541 - EXPR_VAR@10479..10495 - NAME@10479..10495 - IDENT@10479..10495 "renderTableArray" - ARGS_DESC@10495..10541 - L_PAREN@10495..10496 "(" - ARG@10496..10500 - EXPR_INDEX_EXPR@10496..10500 - LHS_EXPR@10496..10497 - EXPR_VAR@10496..10497 - NAME@10496..10497 - IDENT@10496..10497 "v" - L_BRACK@10497..10498 "[" - EXPR_VAR@10498..10499 - NAME@10498..10499 - IDENT@10498..10499 "k" - R_BRACK@10499..10500 "]" - COMMA@10500..10501 "," - WHITESPACE@10501..10502 " " - ARG@10502..10512 - EXPR_BINARY@10502..10512 - LHS_EXPR@10502..10506 - EXPR_VAR@10502..10506 - NAME@10502..10506 - IDENT@10502..10506 "path" - WHITESPACE@10506..10507 " " - PLUS@10507..10508 "+" - WHITESPACE@10508..10509 " " - EXPR_ARRAY@10509..10512 - L_BRACK@10509..10510 "[" - EXPR_VAR@10510..10511 - NAME@10510..10511 - IDENT@10510..10511 "k" - R_BRACK@10511..10512 "]" - COMMA@10512..10513 "," - WHITESPACE@10513..10514 " " - ARG@10514..10531 - EXPR_BINARY@10514..10531 - LHS_EXPR@10514..10525 - EXPR_VAR@10514..10525 - NAME@10514..10525 - IDENT@10514..10525 "indexedPath" - WHITESPACE@10525..10526 " " - PLUS@10526..10527 "+" - WHITESPACE@10527..10528 " " - EXPR_ARRAY@10528..10531 - L_BRACK@10528..10529 "[" - EXPR_VAR@10529..10530 - NAME@10529..10530 - IDENT@10529..10530 "k" - R_BRACK@10530..10531 "]" - COMMA@10531..10532 "," - WHITESPACE@10532..10533 " " - ARG@10533..10540 - EXPR_VAR@10533..10540 - NAME@10533..10540 - IDENT@10533..10540 "cindent" - R_PAREN@10540..10541 ")" - WHITESPACE@10541..10552 "\n " - R_PAREN@10552..10553 ")" - WHITESPACE@10553..10564 "\n " - FOR_SPEC@10564..10592 - FOR_KW@10564..10567 "for" - WHITESPACE@10567..10568 " " - NAME@10568..10569 - IDENT@10568..10569 "k" - WHITESPACE@10569..10570 " " - IN_KW@10570..10572 "in" - WHITESPACE@10572..10573 " " - EXPR_APPLY@10573..10592 - EXPR_INDEX@10573..10589 - EXPR_VAR@10573..10576 - NAME@10573..10576 - IDENT@10573..10576 "std" - DOT@10576..10577 "." - NAME@10577..10589 - IDENT@10577..10589 "objectFields" - ARGS_DESC@10589..10592 - L_PAREN@10589..10590 "(" - ARG@10590..10591 - EXPR_VAR@10590..10591 - NAME@10590..10591 - IDENT@10590..10591 "v" - R_PAREN@10591..10592 ")" - WHITESPACE@10592..10603 "\n " - IF_SPEC@10603..10621 - IF_KW@10603..10605 "if" - WHITESPACE@10605..10606 " " - EXPR_APPLY@10606..10621 - EXPR_VAR@10606..10615 - NAME@10606..10615 - IDENT@10606..10615 "isSection" - ARGS_DESC@10615..10621 - L_PAREN@10615..10616 "(" - ARG@10616..10620 - EXPR_INDEX_EXPR@10616..10620 - LHS_EXPR@10616..10617 - EXPR_VAR@10616..10617 - NAME@10616..10617 - IDENT@10616..10617 "v" - L_BRACK@10617..10618 "[" - EXPR_VAR@10618..10619 - NAME@10618..10619 - IDENT@10618..10619 "k" - R_BRACK@10619..10620 "]" - R_PAREN@10620..10621 ")" - WHITESPACE@10621..10630 "\n " - R_BRACK@10630..10631 "]" - SEMI@10631..10632 ";" - WHITESPACE@10632..10641 "\n " - EXPR_APPLY@10641..10667 - EXPR_INDEX@10641..10649 - EXPR_VAR@10641..10644 - NAME@10641..10644 - IDENT@10641..10644 "std" - DOT@10644..10645 "." - NAME@10645..10649 - IDENT@10645..10649 "join" - ARGS_DESC@10649..10667 - L_PAREN@10649..10650 "(" - ARG@10650..10656 - EXPR_STRING@10650..10656 - STRING_SINGLE@10650..10656 "'\\n\\n'" - COMMA@10656..10657 "," - WHITESPACE@10657..10658 " " - ARG@10658..10666 - EXPR_VAR@10658..10666 - NAME@10658..10666 - IDENT@10658..10666 "sections" - R_PAREN@10666..10667 ")" - COMMA@10667..10668 "," - WHITESPACE@10668..10675 "\n " - BIND_FUNCTION@10675..10904 - NAME@10675..10686 - IDENT@10675..10686 "renderTable" - PARAMS_DESC@10686..10717 - L_PAREN@10686..10687 "(" - PARAM@10687..10688 - DESTRUCT_FULL@10687..10688 - NAME@10687..10688 - IDENT@10687..10688 "v" - COMMA@10688..10689 "," - WHITESPACE@10689..10690 " " - PARAM@10690..10694 - DESTRUCT_FULL@10690..10694 - NAME@10690..10694 - IDENT@10690..10694 "path" - COMMA@10694..10695 "," - WHITESPACE@10695..10696 " " - PARAM@10696..10707 - DESTRUCT_FULL@10696..10707 - NAME@10696..10707 - IDENT@10696..10707 "indexedPath" - COMMA@10707..10708 "," - WHITESPACE@10708..10709 " " - PARAM@10709..10716 - DESTRUCT_FULL@10709..10716 - NAME@10709..10716 - IDENT@10709..10716 "cindent" - R_PAREN@10716..10717 ")" - WHITESPACE@10717..10718 " " - ASSIGN@10718..10719 "=" - WHITESPACE@10719..10728 "\n " - EXPR_BINARY@10728..10904 - LHS_EXPR@10728..10834 - EXPR_BINARY@10728..10834 - LHS_EXPR@10728..10793 - EXPR_BINARY@10728..10793 - LHS_EXPR@10728..10787 - EXPR_BINARY@10728..10787 - LHS_EXPR@10728..10741 - EXPR_BINARY@10728..10741 - LHS_EXPR@10728..10735 - EXPR_VAR@10728..10735 - NAME@10728..10735 - IDENT@10728..10735 "cindent" - WHITESPACE@10735..10736 " " - PLUS@10736..10737 "+" - WHITESPACE@10737..10738 " " - EXPR_STRING@10738..10741 - STRING_SINGLE@10738..10741 "'['" - WHITESPACE@10741..10742 " " - PLUS@10742..10743 "+" - WHITESPACE@10743..10744 " " - EXPR_APPLY@10744..10787 - EXPR_INDEX@10744..10752 - EXPR_VAR@10744..10747 - NAME@10744..10747 - IDENT@10744..10747 "std" - DOT@10747..10748 "." - NAME@10748..10752 - IDENT@10748..10752 "join" - ARGS_DESC@10752..10787 - L_PAREN@10752..10753 "(" - ARG@10753..10756 - EXPR_STRING@10753..10756 - STRING_SINGLE@10753..10756 "'.'" - COMMA@10756..10757 "," - WHITESPACE@10757..10758 " " - ARG@10758..10786 - EXPR_APPLY@10758..10786 - EXPR_INDEX@10758..10765 - EXPR_VAR@10758..10761 - NAME@10758..10761 - IDENT@10758..10761 "std" - DOT@10761..10762 "." - NAME@10762..10765 - IDENT@10762..10765 "map" - ARGS_DESC@10765..10786 - L_PAREN@10765..10766 "(" - ARG@10766..10779 - EXPR_VAR@10766..10779 - NAME@10766..10779 - IDENT@10766..10779 "escapeKeyToml" - COMMA@10779..10780 "," - WHITESPACE@10780..10781 " " - ARG@10781..10785 - EXPR_VAR@10781..10785 - NAME@10781..10785 - IDENT@10781..10785 "path" - R_PAREN@10785..10786 ")" - R_PAREN@10786..10787 ")" - WHITESPACE@10787..10788 " " - PLUS@10788..10789 "+" - WHITESPACE@10789..10790 " " - EXPR_STRING@10790..10793 - STRING_SINGLE@10790..10793 "']'" - WHITESPACE@10793..10802 "\n " - PLUS@10802..10803 "+" - WHITESPACE@10803..10804 " " - EXPR_PARENED@10804..10834 - L_PAREN@10804..10805 "(" - EXPR_IF_THEN_ELSE@10805..10833 - IF_KW@10805..10807 "if" - WHITESPACE@10807..10808 " " - EXPR_BINARY@10808..10815 - LHS_EXPR@10808..10809 - EXPR_VAR@10808..10809 - NAME@10808..10809 - IDENT@10808..10809 "v" - WHITESPACE@10809..10810 " " - EQ@10810..10812 "==" - WHITESPACE@10812..10813 " " - EXPR_OBJECT@10813..10815 - OBJ_BODY_MEMBER_LIST@10813..10815 - L_BRACE@10813..10814 "{" - R_BRACE@10814..10815 "}" - WHITESPACE@10815..10816 " " - THEN_KW@10816..10820 "then" - WHITESPACE@10820..10821 " " - TRUE_EXPR@10821..10823 - EXPR_STRING@10821..10823 - STRING_SINGLE@10821..10823 "''" - WHITESPACE@10823..10824 " " - ELSE_KW@10824..10828 "else" - WHITESPACE@10828..10829 " " - FALSE_EXPR@10829..10833 - EXPR_STRING@10829..10833 - STRING_SINGLE@10829..10833 "'\\n'" - R_PAREN@10833..10834 ")" - WHITESPACE@10834..10843 "\n " - PLUS@10843..10844 "+" - WHITESPACE@10844..10845 " " - EXPR_APPLY@10845..10904 - EXPR_VAR@10845..10864 - NAME@10845..10864 - IDENT@10845..10864 "renderTableInternal" - ARGS_DESC@10864..10904 - L_PAREN@10864..10865 "(" - ARG@10865..10866 - EXPR_VAR@10865..10866 - NAME@10865..10866 - IDENT@10865..10866 "v" - COMMA@10866..10867 "," - WHITESPACE@10867..10868 " " - ARG@10868..10872 - EXPR_VAR@10868..10872 - NAME@10868..10872 - IDENT@10868..10872 "path" - COMMA@10872..10873 "," - WHITESPACE@10873..10874 " " - ARG@10874..10885 - EXPR_VAR@10874..10885 - NAME@10874..10885 - IDENT@10874..10885 "indexedPath" - COMMA@10885..10886 "," - WHITESPACE@10886..10887 " " - ARG@10887..10903 - EXPR_BINARY@10887..10903 - LHS_EXPR@10887..10894 - EXPR_VAR@10887..10894 - NAME@10887..10894 - IDENT@10887..10894 "cindent" - WHITESPACE@10894..10895 " " - PLUS@10895..10896 "+" - WHITESPACE@10896..10897 " " - EXPR_VAR@10897..10903 - NAME@10897..10903 - IDENT@10897..10903 "indent" - R_PAREN@10903..10904 ")" - COMMA@10904..10905 "," - WHITESPACE@10905..10912 "\n " - BIND_FUNCTION@10912..11323 - NAME@10912..10928 - IDENT@10912..10928 "renderTableArray" - PARAMS_DESC@10928..10959 - L_PAREN@10928..10929 "(" - PARAM@10929..10930 - DESTRUCT_FULL@10929..10930 - NAME@10929..10930 - IDENT@10929..10930 "v" - COMMA@10930..10931 "," - WHITESPACE@10931..10932 " " - PARAM@10932..10936 - DESTRUCT_FULL@10932..10936 - NAME@10932..10936 - IDENT@10932..10936 "path" - COMMA@10936..10937 "," - WHITESPACE@10937..10938 " " - PARAM@10938..10949 - DESTRUCT_FULL@10938..10949 - NAME@10938..10949 - IDENT@10938..10949 "indexedPath" - COMMA@10949..10950 "," - WHITESPACE@10950..10951 " " - PARAM@10951..10958 - DESTRUCT_FULL@10951..10958 - NAME@10951..10958 - IDENT@10951..10958 "cindent" - R_PAREN@10958..10959 ")" - WHITESPACE@10959..10960 " " - ASSIGN@10960..10961 "=" - WHITESPACE@10961..10970 "\n " - EXPR_LOCAL@10970..11323 - LOCAL_KW@10970..10975 "local" - WHITESPACE@10975..10976 " " - BIND_DESTRUCT@10976..11015 - DESTRUCT_FULL@10976..10981 - NAME@10976..10981 - IDENT@10976..10981 "range" - WHITESPACE@10981..10982 " " - ASSIGN@10982..10983 "=" - WHITESPACE@10983..10984 " " - EXPR_APPLY@10984..11015 - EXPR_INDEX@10984..10993 - EXPR_VAR@10984..10987 - NAME@10984..10987 - IDENT@10984..10987 "std" - DOT@10987..10988 "." - NAME@10988..10993 - IDENT@10988..10993 "range" - ARGS_DESC@10993..11015 - L_PAREN@10993..10994 "(" - ARG@10994..10995 - EXPR_NUMBER@10994..10995 - FLOAT@10994..10995 "0" - COMMA@10995..10996 "," - WHITESPACE@10996..10997 " " - ARG@10997..11014 - EXPR_BINARY@10997..11014 - LHS_EXPR@10997..11010 - EXPR_APPLY@10997..11010 - EXPR_INDEX@10997..11007 - EXPR_VAR@10997..11000 - NAME@10997..11000 - IDENT@10997..11000 "std" - DOT@11000..11001 "." - NAME@11001..11007 - IDENT@11001..11007 "length" - ARGS_DESC@11007..11010 - L_PAREN@11007..11008 "(" - ARG@11008..11009 - EXPR_VAR@11008..11009 - NAME@11008..11009 - IDENT@11008..11009 "v" - R_PAREN@11009..11010 ")" - WHITESPACE@11010..11011 " " - MINUS@11011..11012 "-" - WHITESPACE@11012..11013 " " - EXPR_NUMBER@11013..11014 - FLOAT@11013..11014 "1" - R_PAREN@11014..11015 ")" - SEMI@11015..11016 ";" - WHITESPACE@11016..11025 "\n " - EXPR_LOCAL@11025..11323 - LOCAL_KW@11025..11030 "local" - WHITESPACE@11030..11031 " " - BIND_DESTRUCT@11031..11287 - DESTRUCT_FULL@11031..11039 - NAME@11031..11039 - IDENT@11031..11039 "sections" - WHITESPACE@11039..11040 " " - ASSIGN@11040..11041 "=" - WHITESPACE@11041..11042 " " - EXPR_ARRAY_COMP@11042..11287 - L_BRACK@11042..11043 "[" - WHITESPACE@11043..11054 "\n " - EXPR_PARENED@11054..11252 - L_PAREN@11054..11055 "(" - EXPR_BINARY@11055..11251 - LHS_EXPR@11055..11169 - EXPR_BINARY@11055..11169 - LHS_EXPR@11055..11122 - EXPR_BINARY@11055..11122 - LHS_EXPR@11055..11115 - EXPR_BINARY@11055..11115 - LHS_EXPR@11055..11069 - EXPR_BINARY@11055..11069 - LHS_EXPR@11055..11062 - EXPR_VAR@11055..11062 - NAME@11055..11062 - IDENT@11055..11062 "cindent" - WHITESPACE@11062..11063 " " - PLUS@11063..11064 "+" - WHITESPACE@11064..11065 " " - EXPR_STRING@11065..11069 - STRING_SINGLE@11065..11069 "'[['" - WHITESPACE@11069..11070 " " - PLUS@11070..11071 "+" - WHITESPACE@11071..11072 " " - EXPR_APPLY@11072..11115 - EXPR_INDEX@11072..11080 - EXPR_VAR@11072..11075 - NAME@11072..11075 - IDENT@11072..11075 "std" - DOT@11075..11076 "." - NAME@11076..11080 - IDENT@11076..11080 "join" - ARGS_DESC@11080..11115 - L_PAREN@11080..11081 "(" - ARG@11081..11084 - EXPR_STRING@11081..11084 - STRING_SINGLE@11081..11084 "'.'" - COMMA@11084..11085 "," - WHITESPACE@11085..11086 " " - ARG@11086..11114 - EXPR_APPLY@11086..11114 - EXPR_INDEX@11086..11093 - EXPR_VAR@11086..11089 - NAME@11086..11089 - IDENT@11086..11089 "std" - DOT@11089..11090 "." - NAME@11090..11093 - IDENT@11090..11093 "map" - ARGS_DESC@11093..11114 - L_PAREN@11093..11094 "(" - ARG@11094..11107 - EXPR_VAR@11094..11107 - NAME@11094..11107 - IDENT@11094..11107 "escapeKeyToml" - COMMA@11107..11108 "," - WHITESPACE@11108..11109 " " - ARG@11109..11113 - EXPR_VAR@11109..11113 - NAME@11109..11113 - IDENT@11109..11113 "path" - R_PAREN@11113..11114 ")" - R_PAREN@11114..11115 ")" - WHITESPACE@11115..11116 " " - PLUS@11116..11117 "+" - WHITESPACE@11117..11118 " " - EXPR_STRING@11118..11122 - STRING_SINGLE@11118..11122 "']]'" - WHITESPACE@11122..11134 "\n " - PLUS@11134..11135 "+" - WHITESPACE@11135..11136 " " - EXPR_PARENED@11136..11169 - L_PAREN@11136..11137 "(" - EXPR_IF_THEN_ELSE@11137..11168 - IF_KW@11137..11139 "if" - WHITESPACE@11139..11140 " " - EXPR_BINARY@11140..11150 - LHS_EXPR@11140..11144 - EXPR_INDEX_EXPR@11140..11144 - LHS_EXPR@11140..11141 - EXPR_VAR@11140..11141 - NAME@11140..11141 - IDENT@11140..11141 "v" - L_BRACK@11141..11142 "[" - EXPR_VAR@11142..11143 - NAME@11142..11143 - IDENT@11142..11143 "i" - R_BRACK@11143..11144 "]" - WHITESPACE@11144..11145 " " - EQ@11145..11147 "==" - WHITESPACE@11147..11148 " " - EXPR_OBJECT@11148..11150 - OBJ_BODY_MEMBER_LIST@11148..11150 - L_BRACE@11148..11149 "{" - R_BRACE@11149..11150 "}" - WHITESPACE@11150..11151 " " - THEN_KW@11151..11155 "then" - WHITESPACE@11155..11156 " " - TRUE_EXPR@11156..11158 - EXPR_STRING@11156..11158 - STRING_SINGLE@11156..11158 "''" - WHITESPACE@11158..11159 " " - ELSE_KW@11159..11163 "else" - WHITESPACE@11163..11164 " " - FALSE_EXPR@11164..11168 - EXPR_STRING@11164..11168 - STRING_SINGLE@11164..11168 "'\\n'" - R_PAREN@11168..11169 ")" - WHITESPACE@11169..11181 "\n " - PLUS@11181..11182 "+" - WHITESPACE@11182..11183 " " - EXPR_APPLY@11183..11251 - EXPR_VAR@11183..11202 - NAME@11183..11202 - IDENT@11183..11202 "renderTableInternal" - ARGS_DESC@11202..11251 - L_PAREN@11202..11203 "(" - ARG@11203..11207 - EXPR_INDEX_EXPR@11203..11207 - LHS_EXPR@11203..11204 - EXPR_VAR@11203..11204 - NAME@11203..11204 - IDENT@11203..11204 "v" - L_BRACK@11204..11205 "[" - EXPR_VAR@11205..11206 - NAME@11205..11206 - IDENT@11205..11206 "i" - R_BRACK@11206..11207 "]" - COMMA@11207..11208 "," - WHITESPACE@11208..11209 " " - ARG@11209..11213 - EXPR_VAR@11209..11213 - NAME@11209..11213 - IDENT@11209..11213 "path" - COMMA@11213..11214 "," - WHITESPACE@11214..11215 " " - ARG@11215..11232 - EXPR_BINARY@11215..11232 - LHS_EXPR@11215..11226 - EXPR_VAR@11215..11226 - NAME@11215..11226 - IDENT@11215..11226 "indexedPath" - WHITESPACE@11226..11227 " " - PLUS@11227..11228 "+" - WHITESPACE@11228..11229 " " - EXPR_ARRAY@11229..11232 - L_BRACK@11229..11230 "[" - EXPR_VAR@11230..11231 - NAME@11230..11231 - IDENT@11230..11231 "i" - R_BRACK@11231..11232 "]" - COMMA@11232..11233 "," - WHITESPACE@11233..11234 " " - ARG@11234..11250 - EXPR_BINARY@11234..11250 - LHS_EXPR@11234..11241 - EXPR_VAR@11234..11241 - NAME@11234..11241 - IDENT@11234..11241 "cindent" - WHITESPACE@11241..11242 " " - PLUS@11242..11243 "+" - WHITESPACE@11243..11244 " " - EXPR_VAR@11244..11250 - NAME@11244..11250 - IDENT@11244..11250 "indent" - R_PAREN@11250..11251 ")" - R_PAREN@11251..11252 ")" - WHITESPACE@11252..11263 "\n " - FOR_SPEC@11263..11277 - FOR_KW@11263..11266 "for" - WHITESPACE@11266..11267 " " - NAME@11267..11268 - IDENT@11267..11268 "i" - WHITESPACE@11268..11269 " " - IN_KW@11269..11271 "in" - WHITESPACE@11271..11272 " " - EXPR_VAR@11272..11277 - NAME@11272..11277 - IDENT@11272..11277 "range" - WHITESPACE@11277..11286 "\n " - R_BRACK@11286..11287 "]" - SEMI@11287..11288 ";" - WHITESPACE@11288..11297 "\n " - EXPR_APPLY@11297..11323 - EXPR_INDEX@11297..11305 - EXPR_VAR@11297..11300 - NAME@11297..11300 - IDENT@11297..11300 "std" - DOT@11300..11301 "." - NAME@11301..11305 - IDENT@11301..11305 "join" - ARGS_DESC@11305..11323 - L_PAREN@11305..11306 "(" - ARG@11306..11312 - EXPR_STRING@11306..11312 - STRING_SINGLE@11306..11312 "'\\n\\n'" - COMMA@11312..11313 "," - WHITESPACE@11313..11314 " " - ARG@11314..11322 - EXPR_VAR@11314..11322 - NAME@11314..11322 - IDENT@11314..11322 "sections" - R_PAREN@11322..11323 ")" - SEMI@11323..11324 ";" - WHITESPACE@11324..11329 "\n " - EXPR_IF_THEN_ELSE@11329..11476 - IF_KW@11329..11331 "if" - WHITESPACE@11331..11332 " " - EXPR_APPLY@11332..11351 - EXPR_INDEX@11332..11344 - EXPR_VAR@11332..11335 - NAME@11332..11335 - IDENT@11332..11335 "std" - DOT@11335..11336 "." - NAME@11336..11344 - IDENT@11336..11344 "isObject" - ARGS_DESC@11344..11351 - L_PAREN@11344..11345 "(" - ARG@11345..11350 - EXPR_VAR@11345..11350 - NAME@11345..11350 - IDENT@11345..11350 "value" - R_PAREN@11350..11351 ")" - WHITESPACE@11351..11352 " " - THEN_KW@11352..11356 "then" - WHITESPACE@11356..11363 "\n " - TRUE_EXPR@11363..11401 - EXPR_APPLY@11363..11401 - EXPR_VAR@11363..11382 - NAME@11363..11382 - IDENT@11363..11382 "renderTableInternal" - ARGS_DESC@11382..11401 - L_PAREN@11382..11383 "(" - ARG@11383..11388 - EXPR_VAR@11383..11388 - NAME@11383..11388 - IDENT@11383..11388 "value" - COMMA@11388..11389 "," - WHITESPACE@11389..11390 " " - ARG@11390..11392 - EXPR_ARRAY@11390..11392 - L_BRACK@11390..11391 "[" - R_BRACK@11391..11392 "]" - COMMA@11392..11393 "," - WHITESPACE@11393..11394 " " - ARG@11394..11396 - EXPR_ARRAY@11394..11396 - L_BRACK@11394..11395 "[" - R_BRACK@11395..11396 "]" - COMMA@11396..11397 "," - WHITESPACE@11397..11398 " " - ARG@11398..11400 - EXPR_STRING@11398..11400 - STRING_SINGLE@11398..11400 "''" - R_PAREN@11400..11401 ")" - WHITESPACE@11401..11406 "\n " - ELSE_KW@11406..11410 "else" - WHITESPACE@11410..11417 "\n " - FALSE_EXPR@11417..11476 - EXPR_ERROR@11417..11476 - ERROR_KW@11417..11422 "error" - WHITESPACE@11422..11423 " " - EXPR_BINARY@11423..11476 - LHS_EXPR@11423..11458 - EXPR_STRING@11423..11458 - STRING_SINGLE@11423..11458 "'TOML body must be an ..." - WHITESPACE@11458..11459 " " - PLUS@11459..11460 "+" - WHITESPACE@11460..11461 " " - EXPR_APPLY@11461..11476 - EXPR_INDEX@11461..11469 - EXPR_VAR@11461..11464 - NAME@11461..11464 - IDENT@11461..11464 "std" - DOT@11464..11465 "." - NAME@11465..11469 - IDENT@11465..11469 "type" - ARGS_DESC@11469..11476 - L_PAREN@11469..11470 "(" - ARG@11470..11475 - EXPR_VAR@11470..11475 - NAME@11470..11475 - IDENT@11470..11475 "value" - R_PAREN@11475..11476 ")" - COMMA@11476..11477 "," - WHITESPACE@11477..11481 "\n\n " - MEMBER_FIELD@11481..11528 - FIELD_NORMAL@11481..11528 - FIELD_NAME_FIXED@11481..11497 - NAME@11481..11497 - IDENT@11481..11497 "escapeStringJson" - COLONCOLON@11497..11499 "::" - WHITESPACE@11499..11500 " " - EXPR_INTRINSIC@11500..11528 - INTRINSIC@11500..11510 "$intrinsic" - L_PAREN@11510..11511 "(" - NAME@11511..11527 - IDENT@11511..11527 "escapeStringJson" - R_PAREN@11527..11528 ")" - COMMA@11528..11529 "," - WHITESPACE@11529..11533 "\n\n " - MEMBER_FIELD@11533..11588 - FIELD_METHOD@11533..11588 - FIELD_NAME_FIXED@11533..11551 - NAME@11533..11551 - IDENT@11533..11551 "escapeStringPython" - PARAMS_DESC@11551..11556 - L_PAREN@11551..11552 "(" - PARAM@11552..11555 - DESTRUCT_FULL@11552..11555 - NAME@11552..11555 - IDENT@11552..11555 "str" - R_PAREN@11555..11556 ")" - COLONCOLON@11556..11558 "::" - WHITESPACE@11558..11563 "\n " - EXPR_APPLY@11563..11588 - EXPR_INDEX@11563..11583 - EXPR_VAR@11563..11566 - NAME@11563..11566 - IDENT@11563..11566 "std" - DOT@11566..11567 "." - NAME@11567..11583 - IDENT@11567..11583 "escapeStringJson" - ARGS_DESC@11583..11588 - L_PAREN@11583..11584 "(" - ARG@11584..11587 - EXPR_VAR@11584..11587 - NAME@11584..11587 - IDENT@11584..11587 "str" - R_PAREN@11587..11588 ")" - COMMA@11588..11589 "," - WHITESPACE@11589..11593 "\n\n " - MEMBER_FIELD@11593..11810 - FIELD_METHOD@11593..11810 - FIELD_NAME_FIXED@11593..11609 - NAME@11593..11609 - IDENT@11593..11609 "escapeStringBash" - PARAMS_DESC@11609..11615 - L_PAREN@11609..11610 "(" - PARAM@11610..11614 - DESTRUCT_FULL@11610..11614 - NAME@11610..11614 - IDENT@11610..11614 "str_" - R_PAREN@11614..11615 ")" - COLONCOLON@11615..11617 "::" - WHITESPACE@11617..11622 "\n " - EXPR_LOCAL@11622..11810 - LOCAL_KW@11622..11627 "local" - WHITESPACE@11627..11628 " " - BIND_DESTRUCT@11628..11652 - DESTRUCT_FULL@11628..11631 - NAME@11628..11631 - IDENT@11628..11631 "str" - WHITESPACE@11631..11632 " " - ASSIGN@11632..11633 "=" - WHITESPACE@11633..11634 " " - EXPR_APPLY@11634..11652 - EXPR_INDEX@11634..11646 - EXPR_VAR@11634..11637 - NAME@11634..11637 - IDENT@11634..11637 "std" - DOT@11637..11638 "." - NAME@11638..11646 - IDENT@11638..11646 "toString" - ARGS_DESC@11646..11652 - L_PAREN@11646..11647 "(" - ARG@11647..11651 - EXPR_VAR@11647..11651 - NAME@11647..11651 - IDENT@11647..11651 "str_" - R_PAREN@11651..11652 ")" - SEMI@11652..11653 ";" - WHITESPACE@11653..11658 "\n " - EXPR_LOCAL@11658..11810 - LOCAL_KW@11658..11663 "local" - WHITESPACE@11663..11664 " " - BIND_FUNCTION@11664..11739 - NAME@11664..11669 - IDENT@11664..11669 "trans" - PARAMS_DESC@11669..11673 - L_PAREN@11669..11670 "(" - PARAM@11670..11672 - DESTRUCT_FULL@11670..11672 - NAME@11670..11672 - IDENT@11670..11672 "ch" - R_PAREN@11672..11673 ")" - WHITESPACE@11673..11674 " " - ASSIGN@11674..11675 "=" - WHITESPACE@11675..11682 "\n " - EXPR_IF_THEN_ELSE@11682..11739 - IF_KW@11682..11684 "if" - WHITESPACE@11684..11685 " " - EXPR_BINARY@11685..11694 - LHS_EXPR@11685..11687 - EXPR_VAR@11685..11687 - NAME@11685..11687 - IDENT@11685..11687 "ch" - WHITESPACE@11687..11688 " " - EQ@11688..11690 "==" - WHITESPACE@11690..11691 " " - EXPR_STRING@11691..11694 - STRING_DOUBLE@11691..11694 "\"'\"" - WHITESPACE@11694..11695 " " - THEN_KW@11695..11699 "then" - WHITESPACE@11699..11708 "\n " - TRUE_EXPR@11708..11717 - EXPR_STRING@11708..11717 - STRING_DOUBLE@11708..11717 "\"'\\\"'\\\"'\"" - WHITESPACE@11717..11724 "\n " - ELSE_KW@11724..11728 "else" - WHITESPACE@11728..11737 "\n " - FALSE_EXPR@11737..11739 - EXPR_VAR@11737..11739 - NAME@11737..11739 - IDENT@11737..11739 "ch" - SEMI@11739..11740 ";" - WHITESPACE@11740..11745 "\n " - EXPR_BINARY@11745..11810 - LHS_EXPR@11745..11751 - EXPR_STRING@11745..11751 - STRING_DOUBLE@11745..11751 "\"'%s'\"" - WHITESPACE@11751..11752 " " - MODULO@11752..11753 "%" - WHITESPACE@11753..11754 " " - EXPR_APPLY@11754..11810 - EXPR_INDEX@11754..11762 - EXPR_VAR@11754..11757 - NAME@11754..11757 - IDENT@11754..11757 "std" - DOT@11757..11758 "." - NAME@11758..11762 - IDENT@11758..11762 "join" - ARGS_DESC@11762..11810 - L_PAREN@11762..11763 "(" - ARG@11763..11765 - EXPR_STRING@11763..11765 - STRING_SINGLE@11763..11765 "''" - COMMA@11765..11766 "," - WHITESPACE@11766..11767 " " - ARG@11767..11809 - EXPR_ARRAY_COMP@11767..11809 - L_BRACK@11767..11768 "[" - EXPR_APPLY@11768..11777 - EXPR_VAR@11768..11773 - NAME@11768..11773 - IDENT@11768..11773 "trans" - ARGS_DESC@11773..11777 - L_PAREN@11773..11774 "(" - ARG@11774..11776 - EXPR_VAR@11774..11776 - NAME@11774..11776 - IDENT@11774..11776 "ch" - R_PAREN@11776..11777 ")" - WHITESPACE@11777..11778 " " - FOR_SPEC@11778..11808 - FOR_KW@11778..11781 "for" - WHITESPACE@11781..11782 " " - NAME@11782..11784 - IDENT@11782..11784 "ch" - WHITESPACE@11784..11785 " " - IN_KW@11785..11787 "in" - WHITESPACE@11787..11788 " " - EXPR_APPLY@11788..11808 - EXPR_INDEX@11788..11803 - EXPR_VAR@11788..11791 - NAME@11788..11791 - IDENT@11788..11791 "std" - DOT@11791..11792 "." - NAME@11792..11803 - IDENT@11792..11803 "stringChars" - ARGS_DESC@11803..11808 - L_PAREN@11803..11804 "(" - ARG@11804..11807 - EXPR_VAR@11804..11807 - NAME@11804..11807 - IDENT@11804..11807 "str" - R_PAREN@11807..11808 ")" - R_BRACK@11808..11809 "]" - R_PAREN@11809..11810 ")" - COMMA@11810..11811 "," - WHITESPACE@11811..11815 "\n\n " - MEMBER_FIELD@11815..12029 - FIELD_METHOD@11815..12029 - FIELD_NAME_FIXED@11815..11834 - NAME@11815..11834 - IDENT@11815..11834 "escapeStringDollars" - PARAMS_DESC@11834..11840 - L_PAREN@11834..11835 "(" - PARAM@11835..11839 - DESTRUCT_FULL@11835..11839 - NAME@11835..11839 - IDENT@11835..11839 "str_" - R_PAREN@11839..11840 ")" - COLONCOLON@11840..11842 "::" - WHITESPACE@11842..11847 "\n " - EXPR_LOCAL@11847..12029 - LOCAL_KW@11847..11852 "local" - WHITESPACE@11852..11853 " " - BIND_DESTRUCT@11853..11877 - DESTRUCT_FULL@11853..11856 - NAME@11853..11856 - IDENT@11853..11856 "str" - WHITESPACE@11856..11857 " " - ASSIGN@11857..11858 "=" - WHITESPACE@11858..11859 " " - EXPR_APPLY@11859..11877 - EXPR_INDEX@11859..11871 - EXPR_VAR@11859..11862 - NAME@11859..11862 - IDENT@11859..11862 "std" - DOT@11862..11863 "." - NAME@11863..11871 - IDENT@11863..11871 "toString" - ARGS_DESC@11871..11877 - L_PAREN@11871..11872 "(" - ARG@11872..11876 - EXPR_VAR@11872..11876 - NAME@11872..11876 - IDENT@11872..11876 "str_" - R_PAREN@11876..11877 ")" - SEMI@11877..11878 ";" - WHITESPACE@11878..11883 "\n " - EXPR_LOCAL@11883..12029 - LOCAL_KW@11883..11888 "local" - WHITESPACE@11888..11889 " " - BIND_FUNCTION@11889..11959 - NAME@11889..11894 - IDENT@11889..11894 "trans" - PARAMS_DESC@11894..11898 - L_PAREN@11894..11895 "(" - PARAM@11895..11897 - DESTRUCT_FULL@11895..11897 - NAME@11895..11897 - IDENT@11895..11897 "ch" - R_PAREN@11897..11898 ")" - WHITESPACE@11898..11899 " " - ASSIGN@11899..11900 "=" - WHITESPACE@11900..11907 "\n " - EXPR_IF_THEN_ELSE@11907..11959 - IF_KW@11907..11909 "if" - WHITESPACE@11909..11910 " " - EXPR_BINARY@11910..11919 - LHS_EXPR@11910..11912 - EXPR_VAR@11910..11912 - NAME@11910..11912 - IDENT@11910..11912 "ch" - WHITESPACE@11912..11913 " " - EQ@11913..11915 "==" - WHITESPACE@11915..11916 " " - EXPR_STRING@11916..11919 - STRING_SINGLE@11916..11919 "'$'" - WHITESPACE@11919..11920 " " - THEN_KW@11920..11924 "then" - WHITESPACE@11924..11933 "\n " - TRUE_EXPR@11933..11937 - EXPR_STRING@11933..11937 - STRING_SINGLE@11933..11937 "'$$'" - WHITESPACE@11937..11944 "\n " - ELSE_KW@11944..11948 "else" - WHITESPACE@11948..11957 "\n " - FALSE_EXPR@11957..11959 - EXPR_VAR@11957..11959 - NAME@11957..11959 - IDENT@11957..11959 "ch" - SEMI@11959..11960 ";" - WHITESPACE@11960..11965 "\n " - EXPR_APPLY@11965..12029 - EXPR_INDEX@11965..11974 - EXPR_VAR@11965..11968 - NAME@11965..11968 - IDENT@11965..11968 "std" - DOT@11968..11969 "." - NAME@11969..11974 - IDENT@11969..11974 "foldl" - ARGS_DESC@11974..12029 - L_PAREN@11974..11975 "(" - ARG@11975..12002 - EXPR_FUNCTION@11975..12002 - FUNCTION_KW@11975..11983 "function" - PARAMS_DESC@11983..11989 - L_PAREN@11983..11984 "(" - PARAM@11984..11985 - DESTRUCT_FULL@11984..11985 - NAME@11984..11985 - IDENT@11984..11985 "a" - COMMA@11985..11986 "," - WHITESPACE@11986..11987 " " - PARAM@11987..11988 - DESTRUCT_FULL@11987..11988 - NAME@11987..11988 - IDENT@11987..11988 "b" - R_PAREN@11988..11989 ")" - WHITESPACE@11989..11990 " " - EXPR_BINARY@11990..12002 - LHS_EXPR@11990..11991 - EXPR_VAR@11990..11991 - NAME@11990..11991 - IDENT@11990..11991 "a" - WHITESPACE@11991..11992 " " - PLUS@11992..11993 "+" - WHITESPACE@11993..11994 " " - EXPR_APPLY@11994..12002 - EXPR_VAR@11994..11999 - NAME@11994..11999 - IDENT@11994..11999 "trans" - ARGS_DESC@11999..12002 - L_PAREN@11999..12000 "(" - ARG@12000..12001 - EXPR_VAR@12000..12001 - NAME@12000..12001 - IDENT@12000..12001 "b" - R_PAREN@12001..12002 ")" - COMMA@12002..12003 "," - WHITESPACE@12003..12004 " " - ARG@12004..12024 - EXPR_APPLY@12004..12024 - EXPR_INDEX@12004..12019 - EXPR_VAR@12004..12007 - NAME@12004..12007 - IDENT@12004..12007 "std" - DOT@12007..12008 "." - NAME@12008..12019 - IDENT@12008..12019 "stringChars" - ARGS_DESC@12019..12024 - L_PAREN@12019..12020 "(" - ARG@12020..12023 - EXPR_VAR@12020..12023 - NAME@12020..12023 - IDENT@12020..12023 "str" - R_PAREN@12023..12024 ")" - COMMA@12024..12025 "," - WHITESPACE@12025..12026 " " - ARG@12026..12028 - EXPR_STRING@12026..12028 - STRING_SINGLE@12026..12028 "''" - R_PAREN@12028..12029 ")" - COMMA@12029..12030 "," - WHITESPACE@12030..12034 "\n\n " - MEMBER_FIELD@12034..12100 - FIELD_METHOD@12034..12100 - FIELD_NAME_FIXED@12034..12046 - NAME@12034..12046 - IDENT@12034..12046 "manifestJson" - PARAMS_DESC@12046..12053 - L_PAREN@12046..12047 "(" - PARAM@12047..12052 - DESTRUCT_FULL@12047..12052 - NAME@12047..12052 - IDENT@12047..12052 "value" - R_PAREN@12052..12053 ")" - COLONCOLON@12053..12055 "::" - WHITESPACE@12055..12056 " " - EXPR_APPLY@12056..12100 - EXPR_INDEX@12056..12074 - EXPR_VAR@12056..12059 - NAME@12056..12059 - IDENT@12056..12059 "std" - DOT@12059..12060 "." - NAME@12060..12074 - IDENT@12060..12074 "manifestJsonEx" - ARGS_DESC@12074..12100 - L_PAREN@12074..12075 "(" - ARG@12075..12080 - EXPR_VAR@12075..12080 - NAME@12075..12080 - IDENT@12075..12080 "value" - COMMA@12080..12081 "," - WHITESPACE@12081..12082 " " - ARG@12082..12088 - EXPR_STRING@12082..12088 - STRING_SINGLE@12082..12088 "' '" - R_PAREN@12088..12089 ")" - WHITESPACE@12089..12090 " " - TAILSTRICT_KW@12090..12100 "tailstrict" - COMMA@12100..12101 "," - WHITESPACE@12101..12105 "\n\n " - MEMBER_FIELD@12105..12173 - FIELD_METHOD@12105..12173 - FIELD_NAME_FIXED@12105..12125 - NAME@12105..12125 - IDENT@12105..12125 "manifestJsonMinified" - PARAMS_DESC@12125..12132 - L_PAREN@12125..12126 "(" - PARAM@12126..12131 - DESTRUCT_FULL@12126..12131 - NAME@12126..12131 - IDENT@12126..12131 "value" - R_PAREN@12131..12132 ")" - COLONCOLON@12132..12134 "::" - WHITESPACE@12134..12135 " " - EXPR_APPLY@12135..12173 - EXPR_INDEX@12135..12153 - EXPR_VAR@12135..12138 - NAME@12135..12138 - IDENT@12135..12138 "std" - DOT@12138..12139 "." - NAME@12139..12153 - IDENT@12139..12153 "manifestJsonEx" - ARGS_DESC@12153..12173 - L_PAREN@12153..12154 "(" - ARG@12154..12159 - EXPR_VAR@12154..12159 - NAME@12154..12159 - IDENT@12154..12159 "value" - COMMA@12159..12160 "," - WHITESPACE@12160..12161 " " - ARG@12161..12163 - EXPR_STRING@12161..12163 - STRING_SINGLE@12161..12163 "''" - COMMA@12163..12164 "," - WHITESPACE@12164..12165 " " - ARG@12165..12167 - EXPR_STRING@12165..12167 - STRING_SINGLE@12165..12167 "''" - COMMA@12167..12168 "," - WHITESPACE@12168..12169 " " - ARG@12169..12172 - EXPR_STRING@12169..12172 - STRING_SINGLE@12169..12172 "':'" - R_PAREN@12172..12173 ")" - COMMA@12173..12174 "," - WHITESPACE@12174..12178 "\n\n " - MEMBER_FIELD@12178..12221 - FIELD_NORMAL@12178..12221 - FIELD_NAME_FIXED@12178..12192 - NAME@12178..12192 - IDENT@12178..12192 "manifestJsonEx" - COLONCOLON@12192..12194 "::" - WHITESPACE@12194..12195 " " - EXPR_INTRINSIC@12195..12221 - INTRINSIC@12195..12205 "$intrinsic" - L_PAREN@12205..12206 "(" - NAME@12206..12220 - IDENT@12206..12220 "manifestJsonEx" - R_PAREN@12220..12221 ")" - COMMA@12221..12222 "," - WHITESPACE@12222..12226 "\n\n " - MEMBER_FIELD@12226..12271 - FIELD_NORMAL@12226..12271 - FIELD_NAME_FIXED@12226..12241 - NAME@12226..12241 - IDENT@12226..12241 "manifestYamlDoc" - COLONCOLON@12241..12243 "::" - WHITESPACE@12243..12244 " " - EXPR_INTRINSIC@12244..12271 - INTRINSIC@12244..12254 "$intrinsic" - L_PAREN@12254..12255 "(" - NAME@12255..12270 - IDENT@12255..12270 "manifestYamlDoc" - R_PAREN@12270..12271 ")" - COMMA@12271..12272 "," - WHITESPACE@12272..12276 "\n\n " - MEMBER_FIELD@12276..12632 - FIELD_METHOD@12276..12632 - FIELD_NAME_FIXED@12276..12294 - NAME@12276..12294 - IDENT@12276..12294 "manifestYamlStream" - PARAMS_DESC@12294..12352 - L_PAREN@12294..12295 "(" - PARAM@12295..12300 - DESTRUCT_FULL@12295..12300 - NAME@12295..12300 - IDENT@12295..12300 "value" - COMMA@12300..12301 "," - WHITESPACE@12301..12302 " " - PARAM@12302..12330 - DESTRUCT_FULL@12302..12324 - NAME@12302..12324 - IDENT@12302..12324 "indent_array_in_object" - ASSIGN@12324..12325 "=" - EXPR_LITERAL@12325..12330 - FALSE_KW@12325..12330 "false" - COMMA@12330..12331 "," - WHITESPACE@12331..12332 " " - PARAM@12332..12351 - DESTRUCT_FULL@12332..12346 - NAME@12332..12346 - IDENT@12332..12346 "c_document_end" - ASSIGN@12346..12347 "=" - EXPR_LITERAL@12347..12351 - TRUE_KW@12347..12351 "true" - R_PAREN@12351..12352 ")" - COLONCOLON@12352..12354 "::" - WHITESPACE@12354..12359 "\n " - EXPR_IF_THEN_ELSE@12359..12632 - IF_KW@12359..12361 "if" - WHITESPACE@12361..12362 " " - EXPR_UNARY@12362..12381 - NOT@12362..12363 "!" - EXPR_APPLY@12363..12381 - EXPR_INDEX@12363..12374 - EXPR_VAR@12363..12366 - NAME@12363..12366 - IDENT@12363..12366 "std" - DOT@12366..12367 "." - NAME@12367..12374 - IDENT@12367..12374 "isArray" - ARGS_DESC@12374..12381 - L_PAREN@12374..12375 "(" - ARG@12375..12380 - EXPR_VAR@12375..12380 - NAME@12375..12380 - IDENT@12375..12380 "value" - R_PAREN@12380..12381 ")" - WHITESPACE@12381..12382 " " - THEN_KW@12382..12386 "then" - WHITESPACE@12386..12393 "\n " - TRUE_EXPR@12393..12461 - EXPR_ERROR@12393..12461 - ERROR_KW@12393..12398 "error" - WHITESPACE@12398..12399 " " - EXPR_BINARY@12399..12461 - LHS_EXPR@12399..12443 - EXPR_STRING@12399..12443 - STRING_SINGLE@12399..12443 "'manifestYamlStream o ..." - WHITESPACE@12443..12444 " " - PLUS@12444..12445 "+" - WHITESPACE@12445..12446 " " - EXPR_APPLY@12446..12461 - EXPR_INDEX@12446..12454 - EXPR_VAR@12446..12449 - NAME@12446..12449 - IDENT@12446..12449 "std" - DOT@12449..12450 "." - NAME@12450..12454 - IDENT@12450..12454 "type" - ARGS_DESC@12454..12461 - L_PAREN@12454..12455 "(" - ARG@12455..12460 - EXPR_VAR@12455..12460 - NAME@12455..12460 - IDENT@12455..12460 "value" - R_PAREN@12460..12461 ")" - WHITESPACE@12461..12466 "\n " - ELSE_KW@12466..12470 "else" - WHITESPACE@12470..12477 "\n " - FALSE_EXPR@12477..12632 - EXPR_BINARY@12477..12632 - LHS_EXPR@12477..12587 - EXPR_BINARY@12477..12587 - LHS_EXPR@12477..12484 - EXPR_STRING@12477..12484 - STRING_SINGLE@12477..12484 "'---\\n'" - WHITESPACE@12484..12485 " " - PLUS@12485..12486 "+" - WHITESPACE@12486..12487 " " - EXPR_APPLY@12487..12587 - EXPR_INDEX@12487..12495 - EXPR_VAR@12487..12490 - NAME@12487..12490 - IDENT@12487..12490 "std" - DOT@12490..12491 "." - NAME@12491..12495 - IDENT@12491..12495 "join" - ARGS_DESC@12495..12587 - L_PAREN@12495..12496 "(" - WHITESPACE@12496..12505 "\n " - ARG@12505..12514 - EXPR_STRING@12505..12514 - STRING_SINGLE@12505..12514 "'\\n---\\n'" - COMMA@12514..12515 "," - WHITESPACE@12515..12516 " " - ARG@12516..12579 - EXPR_ARRAY_COMP@12516..12579 - L_BRACK@12516..12517 "[" - EXPR_APPLY@12517..12563 - EXPR_INDEX@12517..12536 - EXPR_VAR@12517..12520 - NAME@12517..12520 - IDENT@12517..12520 "std" - DOT@12520..12521 "." - NAME@12521..12536 - IDENT@12521..12536 "manifestYamlDoc" - ARGS_DESC@12536..12563 - L_PAREN@12536..12537 "(" - ARG@12537..12538 - EXPR_VAR@12537..12538 - NAME@12537..12538 - IDENT@12537..12538 "e" - COMMA@12538..12539 "," - WHITESPACE@12539..12540 " " - ARG@12540..12562 - EXPR_VAR@12540..12562 - NAME@12540..12562 - IDENT@12540..12562 "indent_array_in_object" - R_PAREN@12562..12563 ")" - WHITESPACE@12563..12564 " " - FOR_SPEC@12564..12578 - FOR_KW@12564..12567 "for" - WHITESPACE@12567..12568 " " - NAME@12568..12569 - IDENT@12568..12569 "e" - WHITESPACE@12569..12570 " " - IN_KW@12570..12572 "in" - WHITESPACE@12572..12573 " " - EXPR_VAR@12573..12578 - NAME@12573..12578 - IDENT@12573..12578 "value" - R_BRACK@12578..12579 "]" - WHITESPACE@12579..12586 "\n " - R_PAREN@12586..12587 ")" - WHITESPACE@12587..12588 " " - PLUS@12588..12589 "+" - WHITESPACE@12589..12590 " " - EXPR_IF_THEN_ELSE@12590..12632 - IF_KW@12590..12592 "if" - WHITESPACE@12592..12593 " " - EXPR_VAR@12593..12607 - NAME@12593..12607 - IDENT@12593..12607 "c_document_end" - WHITESPACE@12607..12608 " " - THEN_KW@12608..12612 "then" - WHITESPACE@12612..12613 " " - TRUE_EXPR@12613..12622 - EXPR_STRING@12613..12622 - STRING_SINGLE@12613..12622 "'\\n...\\n'" - WHITESPACE@12622..12623 " " - ELSE_KW@12623..12627 "else" - WHITESPACE@12627..12628 " " - FALSE_EXPR@12628..12632 - EXPR_STRING@12628..12632 - STRING_SINGLE@12628..12632 "'\\n'" - COMMA@12632..12633 "," - WHITESPACE@12633..12638 "\n\n\n " - MEMBER_FIELD@12638..13294 - FIELD_METHOD@12638..13294 - FIELD_NAME_FIXED@12638..12652 - NAME@12638..12652 - IDENT@12638..12652 "manifestPython" - PARAMS_DESC@12652..12655 - L_PAREN@12652..12653 "(" - PARAM@12653..12654 - DESTRUCT_FULL@12653..12654 - NAME@12653..12654 - IDENT@12653..12654 "v" - R_PAREN@12654..12655 ")" - COLONCOLON@12655..12657 "::" - WHITESPACE@12657..12662 "\n " - EXPR_IF_THEN_ELSE@12662..13294 - IF_KW@12662..12664 "if" - WHITESPACE@12664..12665 " " - EXPR_APPLY@12665..12680 - EXPR_INDEX@12665..12677 - EXPR_VAR@12665..12668 - NAME@12665..12668 - IDENT@12665..12668 "std" - DOT@12668..12669 "." - NAME@12669..12677 - IDENT@12669..12677 "isObject" - ARGS_DESC@12677..12680 - L_PAREN@12677..12678 "(" - ARG@12678..12679 - EXPR_VAR@12678..12679 - NAME@12678..12679 - IDENT@12678..12679 "v" - R_PAREN@12679..12680 ")" - WHITESPACE@12680..12681 " " - THEN_KW@12681..12685 "then" - WHITESPACE@12685..12692 "\n " - TRUE_EXPR@12692..12867 - EXPR_LOCAL@12692..12867 - LOCAL_KW@12692..12697 "local" - WHITESPACE@12697..12698 " " - BIND_DESTRUCT@12698..12826 - DESTRUCT_FULL@12698..12704 - NAME@12698..12704 - IDENT@12698..12704 "fields" - WHITESPACE@12704..12705 " " - ASSIGN@12705..12706 "=" - WHITESPACE@12706..12707 " " - EXPR_ARRAY_COMP@12707..12826 - L_BRACK@12707..12708 "[" - WHITESPACE@12708..12717 "\n " - EXPR_BINARY@12717..12781 - LHS_EXPR@12717..12725 - EXPR_STRING@12717..12725 - STRING_SINGLE@12717..12725 "'%s: %s'" - WHITESPACE@12725..12726 " " - MODULO@12726..12727 "%" - WHITESPACE@12727..12728 " " - EXPR_ARRAY@12728..12781 - L_BRACK@12728..12729 "[" - EXPR_APPLY@12729..12754 - EXPR_INDEX@12729..12751 - EXPR_VAR@12729..12732 - NAME@12729..12732 - IDENT@12729..12732 "std" - DOT@12732..12733 "." - NAME@12733..12751 - IDENT@12733..12751 "escapeStringPython" - ARGS_DESC@12751..12754 - L_PAREN@12751..12752 "(" - ARG@12752..12753 - EXPR_VAR@12752..12753 - NAME@12752..12753 - IDENT@12752..12753 "k" - R_PAREN@12753..12754 ")" - COMMA@12754..12755 "," - WHITESPACE@12755..12756 " " - EXPR_APPLY@12756..12780 - EXPR_INDEX@12756..12774 - EXPR_VAR@12756..12759 - NAME@12756..12759 - IDENT@12756..12759 "std" - DOT@12759..12760 "." - NAME@12760..12774 - IDENT@12760..12774 "manifestPython" - ARGS_DESC@12774..12780 - L_PAREN@12774..12775 "(" - ARG@12775..12779 - EXPR_INDEX_EXPR@12775..12779 - LHS_EXPR@12775..12776 - EXPR_VAR@12775..12776 - NAME@12775..12776 - IDENT@12775..12776 "v" - L_BRACK@12776..12777 "[" - EXPR_VAR@12777..12778 - NAME@12777..12778 - IDENT@12777..12778 "k" - R_BRACK@12778..12779 "]" - R_PAREN@12779..12780 ")" - R_BRACK@12780..12781 "]" - WHITESPACE@12781..12790 "\n " - FOR_SPEC@12790..12818 - FOR_KW@12790..12793 "for" - WHITESPACE@12793..12794 " " - NAME@12794..12795 - IDENT@12794..12795 "k" - WHITESPACE@12795..12796 " " - IN_KW@12796..12798 "in" - WHITESPACE@12798..12799 " " - EXPR_APPLY@12799..12818 - EXPR_INDEX@12799..12815 - EXPR_VAR@12799..12802 - NAME@12799..12802 - IDENT@12799..12802 "std" - DOT@12802..12803 "." - NAME@12803..12815 - IDENT@12803..12815 "objectFields" - ARGS_DESC@12815..12818 - L_PAREN@12815..12816 "(" - ARG@12816..12817 - EXPR_VAR@12816..12817 - NAME@12816..12817 - IDENT@12816..12817 "v" - R_PAREN@12817..12818 ")" - WHITESPACE@12818..12825 "\n " - R_BRACK@12825..12826 "]" - SEMI@12826..12827 ";" - WHITESPACE@12827..12834 "\n " - EXPR_BINARY@12834..12867 - LHS_EXPR@12834..12840 - EXPR_STRING@12834..12840 - STRING_SINGLE@12834..12840 "'{%s}'" - WHITESPACE@12840..12841 " " - MODULO@12841..12842 "%" - WHITESPACE@12842..12843 " " - EXPR_ARRAY@12843..12867 - L_BRACK@12843..12844 "[" - EXPR_APPLY@12844..12866 - EXPR_INDEX@12844..12852 - EXPR_VAR@12844..12847 - NAME@12844..12847 - IDENT@12844..12847 "std" - DOT@12847..12848 "." - NAME@12848..12852 - IDENT@12848..12852 "join" - ARGS_DESC@12852..12866 - L_PAREN@12852..12853 "(" - ARG@12853..12857 - EXPR_STRING@12853..12857 - STRING_SINGLE@12853..12857 "', '" - COMMA@12857..12858 "," - WHITESPACE@12858..12859 " " - ARG@12859..12865 - EXPR_VAR@12859..12865 - NAME@12859..12865 - IDENT@12859..12865 "fields" - R_PAREN@12865..12866 ")" - R_BRACK@12866..12867 "]" - WHITESPACE@12867..12872 "\n " - ELSE_KW@12872..12876 "else" - WHITESPACE@12876..12877 " " - FALSE_EXPR@12877..13294 - EXPR_IF_THEN_ELSE@12877..13294 - IF_KW@12877..12879 "if" - WHITESPACE@12879..12880 " " - EXPR_APPLY@12880..12894 - EXPR_INDEX@12880..12891 - EXPR_VAR@12880..12883 - NAME@12880..12883 - IDENT@12880..12883 "std" - DOT@12883..12884 "." - NAME@12884..12891 - IDENT@12884..12891 "isArray" - ARGS_DESC@12891..12894 - L_PAREN@12891..12892 "(" - ARG@12892..12893 - EXPR_VAR@12892..12893 - NAME@12892..12893 - IDENT@12892..12893 "v" - R_PAREN@12893..12894 ")" - WHITESPACE@12894..12895 " " - THEN_KW@12895..12899 "then" - WHITESPACE@12899..12906 "\n " - TRUE_EXPR@12906..12969 - EXPR_BINARY@12906..12969 - LHS_EXPR@12906..12912 - EXPR_STRING@12906..12912 - STRING_SINGLE@12906..12912 "'[%s]'" - WHITESPACE@12912..12913 " " - MODULO@12913..12914 "%" - WHITESPACE@12914..12915 " " - EXPR_ARRAY@12915..12969 - L_BRACK@12915..12916 "[" - EXPR_APPLY@12916..12968 - EXPR_INDEX@12916..12924 - EXPR_VAR@12916..12919 - NAME@12916..12919 - IDENT@12916..12919 "std" - DOT@12919..12920 "." - NAME@12920..12924 - IDENT@12920..12924 "join" - ARGS_DESC@12924..12968 - L_PAREN@12924..12925 "(" - ARG@12925..12929 - EXPR_STRING@12925..12929 - STRING_SINGLE@12925..12929 "', '" - COMMA@12929..12930 "," - WHITESPACE@12930..12931 " " - ARG@12931..12967 - EXPR_ARRAY_COMP@12931..12967 - L_BRACK@12931..12932 "[" - EXPR_APPLY@12932..12954 - EXPR_INDEX@12932..12950 - EXPR_VAR@12932..12935 - NAME@12932..12935 - IDENT@12932..12935 "std" - DOT@12935..12936 "." - NAME@12936..12950 - IDENT@12936..12950 "manifestPython" - ARGS_DESC@12950..12954 - L_PAREN@12950..12951 "(" - ARG@12951..12953 - EXPR_VAR@12951..12953 - NAME@12951..12953 - IDENT@12951..12953 "v2" - R_PAREN@12953..12954 ")" - WHITESPACE@12954..12955 " " - FOR_SPEC@12955..12966 - FOR_KW@12955..12958 "for" - WHITESPACE@12958..12959 " " - NAME@12959..12961 - IDENT@12959..12961 "v2" - WHITESPACE@12961..12962 " " - IN_KW@12962..12964 "in" - WHITESPACE@12964..12965 " " - EXPR_VAR@12965..12966 - NAME@12965..12966 - IDENT@12965..12966 "v" - R_BRACK@12966..12967 "]" - R_PAREN@12967..12968 ")" - R_BRACK@12968..12969 "]" - WHITESPACE@12969..12974 "\n " - ELSE_KW@12974..12978 "else" - WHITESPACE@12978..12979 " " - FALSE_EXPR@12979..13294 - EXPR_IF_THEN_ELSE@12979..13294 - IF_KW@12979..12981 "if" - WHITESPACE@12981..12982 " " - EXPR_APPLY@12982..12997 - EXPR_INDEX@12982..12994 - EXPR_VAR@12982..12985 - NAME@12982..12985 - IDENT@12982..12985 "std" - DOT@12985..12986 "." - NAME@12986..12994 - IDENT@12986..12994 "isString" - ARGS_DESC@12994..12997 - L_PAREN@12994..12995 "(" - ARG@12995..12996 - EXPR_VAR@12995..12996 - NAME@12995..12996 - IDENT@12995..12996 "v" - R_PAREN@12996..12997 ")" - WHITESPACE@12997..12998 " " - THEN_KW@12998..13002 "then" - WHITESPACE@13002..13009 "\n " - TRUE_EXPR@13009..13043 - EXPR_BINARY@13009..13043 - LHS_EXPR@13009..13013 - EXPR_STRING@13009..13013 - STRING_SINGLE@13009..13013 "'%s'" - WHITESPACE@13013..13014 " " - MODULO@13014..13015 "%" - WHITESPACE@13015..13016 " " - EXPR_ARRAY@13016..13043 - L_BRACK@13016..13017 "[" - EXPR_APPLY@13017..13042 - EXPR_INDEX@13017..13039 - EXPR_VAR@13017..13020 - NAME@13017..13020 - IDENT@13017..13020 "std" - DOT@13020..13021 "." - NAME@13021..13039 - IDENT@13021..13039 "escapeStringPython" - ARGS_DESC@13039..13042 - L_PAREN@13039..13040 "(" - ARG@13040..13041 - EXPR_VAR@13040..13041 - NAME@13040..13041 - IDENT@13040..13041 "v" - R_PAREN@13041..13042 ")" - R_BRACK@13042..13043 "]" - WHITESPACE@13043..13048 "\n " - ELSE_KW@13048..13052 "else" - WHITESPACE@13052..13053 " " - FALSE_EXPR@13053..13294 - EXPR_IF_THEN_ELSE@13053..13294 - IF_KW@13053..13055 "if" - WHITESPACE@13055..13056 " " - EXPR_APPLY@13056..13073 - EXPR_INDEX@13056..13070 - EXPR_VAR@13056..13059 - NAME@13056..13059 - IDENT@13056..13059 "std" - DOT@13059..13060 "." - NAME@13060..13070 - IDENT@13060..13070 "isFunction" - ARGS_DESC@13070..13073 - L_PAREN@13070..13071 "(" - ARG@13071..13072 - EXPR_VAR@13071..13072 - NAME@13071..13072 - IDENT@13071..13072 "v" - R_PAREN@13072..13073 ")" - WHITESPACE@13073..13074 " " - THEN_KW@13074..13078 "then" - WHITESPACE@13078..13085 "\n " - TRUE_EXPR@13085..13117 - EXPR_ERROR@13085..13117 - ERROR_KW@13085..13090 "error" - WHITESPACE@13090..13091 " " - EXPR_STRING@13091..13117 - STRING_SINGLE@13091..13117 "'cannot manifest func ..." - WHITESPACE@13117..13122 "\n " - ELSE_KW@13122..13126 "else" - WHITESPACE@13126..13127 " " - FALSE_EXPR@13127..13294 - EXPR_IF_THEN_ELSE@13127..13294 - IF_KW@13127..13129 "if" - WHITESPACE@13129..13130 " " - EXPR_APPLY@13130..13145 - EXPR_INDEX@13130..13142 - EXPR_VAR@13130..13133 - NAME@13130..13133 - IDENT@13130..13133 "std" - DOT@13133..13134 "." - NAME@13134..13142 - IDENT@13134..13142 "isNumber" - ARGS_DESC@13142..13145 - L_PAREN@13142..13143 "(" - ARG@13143..13144 - EXPR_VAR@13143..13144 - NAME@13143..13144 - IDENT@13143..13144 "v" - R_PAREN@13144..13145 ")" - WHITESPACE@13145..13146 " " - THEN_KW@13146..13150 "then" - WHITESPACE@13150..13157 "\n " - TRUE_EXPR@13157..13172 - EXPR_APPLY@13157..13172 - EXPR_INDEX@13157..13169 - EXPR_VAR@13157..13160 - NAME@13157..13160 - IDENT@13157..13160 "std" - DOT@13160..13161 "." - NAME@13161..13169 - IDENT@13161..13169 "toString" - ARGS_DESC@13169..13172 - L_PAREN@13169..13170 "(" - ARG@13170..13171 - EXPR_VAR@13170..13171 - NAME@13170..13171 - IDENT@13170..13171 "v" - R_PAREN@13171..13172 ")" - WHITESPACE@13172..13177 "\n " - ELSE_KW@13177..13181 "else" - WHITESPACE@13181..13182 " " - FALSE_EXPR@13182..13294 - EXPR_IF_THEN_ELSE@13182..13294 - IF_KW@13182..13184 "if" - WHITESPACE@13184..13185 " " - EXPR_BINARY@13185..13194 - LHS_EXPR@13185..13186 - EXPR_VAR@13185..13186 - NAME@13185..13186 - IDENT@13185..13186 "v" - WHITESPACE@13186..13187 " " - EQ@13187..13189 "==" - WHITESPACE@13189..13190 " " - EXPR_LITERAL@13190..13194 - TRUE_KW@13190..13194 "true" - WHITESPACE@13194..13195 " " - THEN_KW@13195..13199 "then" - WHITESPACE@13199..13206 "\n " - TRUE_EXPR@13206..13212 - EXPR_STRING@13206..13212 - STRING_SINGLE@13206..13212 "'True'" - WHITESPACE@13212..13217 "\n " - ELSE_KW@13217..13221 "else" - WHITESPACE@13221..13222 " " - FALSE_EXPR@13222..13294 - EXPR_IF_THEN_ELSE@13222..13294 - IF_KW@13222..13224 "if" - WHITESPACE@13224..13225 " " - EXPR_BINARY@13225..13235 - LHS_EXPR@13225..13226 - EXPR_VAR@13225..13226 - NAME@13225..13226 - IDENT@13225..13226 "v" - WHITESPACE@13226..13227 " " - EQ@13227..13229 "==" - WHITESPACE@13229..13230 " " - EXPR_LITERAL@13230..13235 - FALSE_KW@13230..13235 "false" - WHITESPACE@13235..13236 " " - THEN_KW@13236..13240 "then" - WHITESPACE@13240..13247 "\n " - TRUE_EXPR@13247..13254 - EXPR_STRING@13247..13254 - STRING_SINGLE@13247..13254 "'False'" - WHITESPACE@13254..13259 "\n " - ELSE_KW@13259..13263 "else" - WHITESPACE@13263..13264 " " - FALSE_EXPR@13264..13294 - EXPR_IF_THEN_ELSE@13264..13294 - IF_KW@13264..13266 "if" - WHITESPACE@13266..13267 " " - EXPR_BINARY@13267..13276 - LHS_EXPR@13267..13268 - EXPR_VAR@13267..13268 - NAME@13267..13268 - IDENT@13267..13268 "v" - WHITESPACE@13268..13269 " " - EQ@13269..13271 "==" - WHITESPACE@13271..13272 " " - EXPR_LITERAL@13272..13276 - NULL_KW@13272..13276 "null" - WHITESPACE@13276..13277 " " - THEN_KW@13277..13281 "then" - WHITESPACE@13281..13288 "\n " - TRUE_EXPR@13288..13294 - EXPR_STRING@13288..13294 - STRING_SINGLE@13288..13294 "'None'" - COMMA@13294..13295 "," - WHITESPACE@13295..13299 "\n\n " - MEMBER_FIELD@13299..13454 - FIELD_METHOD@13299..13454 - FIELD_NAME_FIXED@13299..13317 - NAME@13299..13317 - IDENT@13299..13317 "manifestPythonVars" - PARAMS_DESC@13317..13323 - L_PAREN@13317..13318 "(" - PARAM@13318..13322 - DESTRUCT_FULL@13318..13322 - NAME@13318..13322 - IDENT@13318..13322 "conf" - R_PAREN@13322..13323 ")" - COLONCOLON@13323..13325 "::" - WHITESPACE@13325..13330 "\n " - EXPR_LOCAL@13330..13454 - LOCAL_KW@13330..13335 "local" - WHITESPACE@13335..13336 " " - BIND_DESTRUCT@13336..13421 - DESTRUCT_FULL@13336..13340 - NAME@13336..13340 - IDENT@13336..13340 "vars" - WHITESPACE@13340..13341 " " - ASSIGN@13341..13342 "=" - WHITESPACE@13342..13343 " " - EXPR_ARRAY_COMP@13343..13421 - L_BRACK@13343..13344 "[" - EXPR_BINARY@13344..13388 - LHS_EXPR@13344..13353 - EXPR_STRING@13344..13353 - STRING_SINGLE@13344..13353 "'%s = %s'" - WHITESPACE@13353..13354 " " - MODULO@13354..13355 "%" - WHITESPACE@13355..13356 " " - EXPR_ARRAY@13356..13388 - L_BRACK@13356..13357 "[" - EXPR_VAR@13357..13358 - NAME@13357..13358 - IDENT@13357..13358 "k" - COMMA@13358..13359 "," - WHITESPACE@13359..13360 " " - EXPR_APPLY@13360..13387 - EXPR_INDEX@13360..13378 - EXPR_VAR@13360..13363 - NAME@13360..13363 - IDENT@13360..13363 "std" - DOT@13363..13364 "." - NAME@13364..13378 - IDENT@13364..13378 "manifestPython" - ARGS_DESC@13378..13387 - L_PAREN@13378..13379 "(" - ARG@13379..13386 - EXPR_INDEX_EXPR@13379..13386 - LHS_EXPR@13379..13383 - EXPR_VAR@13379..13383 - NAME@13379..13383 - IDENT@13379..13383 "conf" - L_BRACK@13383..13384 "[" - EXPR_VAR@13384..13385 - NAME@13384..13385 - IDENT@13384..13385 "k" - R_BRACK@13385..13386 "]" - R_PAREN@13386..13387 ")" - R_BRACK@13387..13388 "]" - WHITESPACE@13388..13389 " " - FOR_SPEC@13389..13420 - FOR_KW@13389..13392 "for" - WHITESPACE@13392..13393 " " - NAME@13393..13394 - IDENT@13393..13394 "k" - WHITESPACE@13394..13395 " " - IN_KW@13395..13397 "in" - WHITESPACE@13397..13398 " " - EXPR_APPLY@13398..13420 - EXPR_INDEX@13398..13414 - EXPR_VAR@13398..13401 - NAME@13398..13401 - IDENT@13398..13401 "std" - DOT@13401..13402 "." - NAME@13402..13414 - IDENT@13402..13414 "objectFields" - ARGS_DESC@13414..13420 - L_PAREN@13414..13415 "(" - ARG@13415..13419 - EXPR_VAR@13415..13419 - NAME@13415..13419 - IDENT@13415..13419 "conf" - R_PAREN@13419..13420 ")" - R_BRACK@13420..13421 "]" - SEMI@13421..13422 ";" - WHITESPACE@13422..13427 "\n " - EXPR_APPLY@13427..13454 - EXPR_INDEX@13427..13435 - EXPR_VAR@13427..13430 - NAME@13427..13430 - IDENT@13427..13430 "std" - DOT@13430..13431 "." - NAME@13431..13435 - IDENT@13431..13435 "join" - ARGS_DESC@13435..13454 - L_PAREN@13435..13436 "(" - ARG@13436..13440 - EXPR_STRING@13436..13440 - STRING_SINGLE@13436..13440 "'\\n'" - COMMA@13440..13441 "," - WHITESPACE@13441..13442 " " - ARG@13442..13453 - EXPR_BINARY@13442..13453 - LHS_EXPR@13442..13446 - EXPR_VAR@13442..13446 - NAME@13442..13446 - IDENT@13442..13446 "vars" - WHITESPACE@13446..13447 " " - PLUS@13447..13448 "+" - WHITESPACE@13448..13449 " " - EXPR_ARRAY@13449..13453 - L_BRACK@13449..13450 "[" - EXPR_STRING@13450..13452 - STRING_SINGLE@13450..13452 "''" - R_BRACK@13452..13453 "]" - R_PAREN@13453..13454 ")" - COMMA@13454..13455 "," - WHITESPACE@13455..13459 "\n\n " - MEMBER_FIELD@13459..14126 - FIELD_METHOD@13459..14126 - FIELD_NAME_FIXED@13459..13476 - NAME@13459..13476 - IDENT@13459..13476 "manifestXmlJsonml" - PARAMS_DESC@13476..13483 - L_PAREN@13476..13477 "(" - PARAM@13477..13482 - DESTRUCT_FULL@13477..13482 - NAME@13477..13482 - IDENT@13477..13482 "value" - R_PAREN@13482..13483 ")" - COLONCOLON@13483..13485 "::" - WHITESPACE@13485..13490 "\n " - EXPR_IF_THEN_ELSE@13490..14126 - IF_KW@13490..13492 "if" - WHITESPACE@13492..13493 " " - EXPR_UNARY@13493..13512 - NOT@13493..13494 "!" - EXPR_APPLY@13494..13512 - EXPR_INDEX@13494..13505 - EXPR_VAR@13494..13497 - NAME@13494..13497 - IDENT@13494..13497 "std" - DOT@13497..13498 "." - NAME@13498..13505 - IDENT@13498..13505 "isArray" - ARGS_DESC@13505..13512 - L_PAREN@13505..13506 "(" - ARG@13506..13511 - EXPR_VAR@13506..13511 - NAME@13506..13511 - IDENT@13506..13511 "value" - R_PAREN@13511..13512 ")" - WHITESPACE@13512..13513 " " - THEN_KW@13513..13517 "then" - WHITESPACE@13517..13524 "\n " - TRUE_EXPR@13524..13592 - EXPR_ERROR@13524..13592 - ERROR_KW@13524..13529 "error" - WHITESPACE@13529..13530 " " - EXPR_BINARY@13530..13592 - LHS_EXPR@13530..13574 - EXPR_STRING@13530..13574 - STRING_SINGLE@13530..13574 "'Expected a JSONML va ..." - WHITESPACE@13574..13575 " " - MODULO@13575..13576 "%" - WHITESPACE@13576..13577 " " - EXPR_APPLY@13577..13592 - EXPR_INDEX@13577..13585 - EXPR_VAR@13577..13580 - NAME@13577..13580 - IDENT@13577..13580 "std" - DOT@13580..13581 "." - NAME@13581..13585 - IDENT@13581..13585 "type" - ARGS_DESC@13585..13592 - L_PAREN@13585..13586 "(" - ARG@13586..13591 - EXPR_VAR@13586..13591 - NAME@13586..13591 - IDENT@13586..13591 "value" - R_PAREN@13591..13592 ")" - WHITESPACE@13592..13597 "\n " - ELSE_KW@13597..13601 "else" - WHITESPACE@13601..13608 "\n " - FALSE_EXPR@13608..14126 - EXPR_LOCAL@13608..14126 - LOCAL_KW@13608..13613 "local" - WHITESPACE@13613..13614 " " - BIND_FUNCTION@13614..14107 - NAME@13614..13617 - IDENT@13614..13617 "aux" - PARAMS_DESC@13617..13620 - L_PAREN@13617..13618 "(" - PARAM@13618..13619 - DESTRUCT_FULL@13618..13619 - NAME@13618..13619 - IDENT@13618..13619 "v" - R_PAREN@13619..13620 ")" - WHITESPACE@13620..13621 " " - ASSIGN@13621..13622 "=" - WHITESPACE@13622..13631 "\n " - EXPR_IF_THEN_ELSE@13631..14107 - IF_KW@13631..13633 "if" - WHITESPACE@13633..13634 " " - EXPR_APPLY@13634..13649 - EXPR_INDEX@13634..13646 - EXPR_VAR@13634..13637 - NAME@13634..13637 - IDENT@13634..13637 "std" - DOT@13637..13638 "." - NAME@13638..13646 - IDENT@13638..13646 "isString" - ARGS_DESC@13646..13649 - L_PAREN@13646..13647 "(" - ARG@13647..13648 - EXPR_VAR@13647..13648 - NAME@13647..13648 - IDENT@13647..13648 "v" - R_PAREN@13648..13649 ")" - WHITESPACE@13649..13650 " " - THEN_KW@13650..13654 "then" - WHITESPACE@13654..13665 "\n " - TRUE_EXPR@13665..13666 - EXPR_VAR@13665..13666 - NAME@13665..13666 - IDENT@13665..13666 "v" - WHITESPACE@13666..13675 "\n " - ELSE_KW@13675..13679 "else" - WHITESPACE@13679..13690 "\n " - FALSE_EXPR@13690..14107 - EXPR_LOCAL@13690..14107 - LOCAL_KW@13690..13695 "local" - WHITESPACE@13695..13696 " " - BIND_DESTRUCT@13696..13706 - DESTRUCT_FULL@13696..13699 - NAME@13696..13699 - IDENT@13696..13699 "tag" - WHITESPACE@13699..13700 " " - ASSIGN@13700..13701 "=" - WHITESPACE@13701..13702 " " - EXPR_INDEX_EXPR@13702..13706 - LHS_EXPR@13702..13703 - EXPR_VAR@13702..13703 - NAME@13702..13703 - IDENT@13702..13703 "v" - L_BRACK@13703..13704 "[" - EXPR_NUMBER@13704..13705 - FLOAT@13704..13705 "0" - R_BRACK@13705..13706 "]" - SEMI@13706..13707 ";" - WHITESPACE@13707..13718 "\n " - EXPR_LOCAL@13718..14107 - LOCAL_KW@13718..13723 "local" - WHITESPACE@13723..13724 " " - BIND_DESTRUCT@13724..13775 - DESTRUCT_FULL@13724..13733 - NAME@13724..13733 - IDENT@13724..13733 "has_attrs" - WHITESPACE@13733..13734 " " - ASSIGN@13734..13735 "=" - WHITESPACE@13735..13736 " " - EXPR_BINARY@13736..13775 - LHS_EXPR@13736..13753 - EXPR_BINARY@13736..13753 - LHS_EXPR@13736..13749 - EXPR_APPLY@13736..13749 - EXPR_INDEX@13736..13746 - EXPR_VAR@13736..13739 - NAME@13736..13739 - IDENT@13736..13739 "std" - DOT@13739..13740 "." - NAME@13740..13746 - IDENT@13740..13746 "length" - ARGS_DESC@13746..13749 - L_PAREN@13746..13747 "(" - ARG@13747..13748 - EXPR_VAR@13747..13748 - NAME@13747..13748 - IDENT@13747..13748 "v" - R_PAREN@13748..13749 ")" - WHITESPACE@13749..13750 " " - GT@13750..13751 ">" - WHITESPACE@13751..13752 " " - EXPR_NUMBER@13752..13753 - FLOAT@13752..13753 "1" - WHITESPACE@13753..13754 " " - AND@13754..13756 "&&" - WHITESPACE@13756..13757 " " - EXPR_APPLY@13757..13775 - EXPR_INDEX@13757..13769 - EXPR_VAR@13757..13760 - NAME@13757..13760 - IDENT@13757..13760 "std" - DOT@13760..13761 "." - NAME@13761..13769 - IDENT@13761..13769 "isObject" - ARGS_DESC@13769..13775 - L_PAREN@13769..13770 "(" - ARG@13770..13774 - EXPR_INDEX_EXPR@13770..13774 - LHS_EXPR@13770..13771 - EXPR_VAR@13770..13771 - NAME@13770..13771 - IDENT@13770..13771 "v" - L_BRACK@13771..13772 "[" - EXPR_NUMBER@13772..13773 - FLOAT@13772..13773 "1" - R_BRACK@13773..13774 "]" - R_PAREN@13774..13775 ")" - SEMI@13775..13776 ";" - WHITESPACE@13776..13787 "\n " - EXPR_LOCAL@13787..14107 - LOCAL_KW@13787..13792 "local" - WHITESPACE@13792..13793 " " - BIND_DESTRUCT@13793..13831 - DESTRUCT_FULL@13793..13798 - NAME@13793..13798 - IDENT@13793..13798 "attrs" - WHITESPACE@13798..13799 " " - ASSIGN@13799..13800 "=" - WHITESPACE@13800..13801 " " - EXPR_IF_THEN_ELSE@13801..13831 - IF_KW@13801..13803 "if" - WHITESPACE@13803..13804 " " - EXPR_VAR@13804..13813 - NAME@13804..13813 - IDENT@13804..13813 "has_attrs" - WHITESPACE@13813..13814 " " - THEN_KW@13814..13818 "then" - WHITESPACE@13818..13819 " " - TRUE_EXPR@13819..13823 - EXPR_INDEX_EXPR@13819..13823 - LHS_EXPR@13819..13820 - EXPR_VAR@13819..13820 - NAME@13819..13820 - IDENT@13819..13820 "v" - L_BRACK@13820..13821 "[" - EXPR_NUMBER@13821..13822 - FLOAT@13821..13822 "1" - R_BRACK@13822..13823 "]" - WHITESPACE@13823..13824 " " - ELSE_KW@13824..13828 "else" - WHITESPACE@13828..13829 " " - FALSE_EXPR@13829..13831 - EXPR_OBJECT@13829..13831 - OBJ_BODY_MEMBER_LIST@13829..13831 - L_BRACE@13829..13830 "{" - R_BRACE@13830..13831 "}" - SEMI@13831..13832 ";" - WHITESPACE@13832..13843 "\n " - EXPR_LOCAL@13843..14107 - LOCAL_KW@13843..13848 "local" - WHITESPACE@13848..13849 " " - BIND_DESTRUCT@13849..13894 - DESTRUCT_FULL@13849..13857 - NAME@13849..13857 - IDENT@13849..13857 "children" - WHITESPACE@13857..13858 " " - ASSIGN@13858..13859 "=" - WHITESPACE@13859..13860 " " - EXPR_IF_THEN_ELSE@13860..13894 - IF_KW@13860..13862 "if" - WHITESPACE@13862..13863 " " - EXPR_VAR@13863..13872 - NAME@13863..13872 - IDENT@13863..13872 "has_attrs" - WHITESPACE@13872..13873 " " - THEN_KW@13873..13877 "then" - WHITESPACE@13877..13878 " " - TRUE_EXPR@13878..13883 - EXPR_SLICE@13878..13883 - EXPR_VAR@13878..13879 - NAME@13878..13879 - IDENT@13878..13879 "v" - SLICE_DESC@13879..13883 - L_BRACK@13879..13880 "[" - EXPR_NUMBER@13880..13881 - FLOAT@13880..13881 "2" - COLON@13881..13882 ":" - R_BRACK@13882..13883 "]" - WHITESPACE@13883..13884 " " - ELSE_KW@13884..13888 "else" - WHITESPACE@13888..13889 " " - FALSE_EXPR@13889..13894 - EXPR_SLICE@13889..13894 - EXPR_VAR@13889..13890 - NAME@13889..13890 - IDENT@13889..13890 "v" - SLICE_DESC@13890..13894 - L_BRACK@13890..13891 "[" - EXPR_NUMBER@13891..13892 - FLOAT@13891..13892 "1" - COLON@13892..13893 ":" - R_BRACK@13893..13894 "]" - SEMI@13894..13895 ";" - WHITESPACE@13895..13906 "\n " - EXPR_LOCAL@13906..14107 - LOCAL_KW@13906..13911 "local" - WHITESPACE@13911..13912 " " - BIND_DESTRUCT@13912..14011 - DESTRUCT_FULL@13912..13921 - NAME@13912..13921 - IDENT@13912..13921 "attrs_str" - WHITESPACE@13921..13922 " " - ASSIGN@13922..13923 "=" - WHITESPACE@13923..13936 "\n " - EXPR_APPLY@13936..14011 - EXPR_INDEX@13936..13944 - EXPR_VAR@13936..13939 - NAME@13936..13939 - IDENT@13936..13939 "std" - DOT@13939..13940 "." - NAME@13940..13944 - IDENT@13940..13944 "join" - ARGS_DESC@13944..14011 - L_PAREN@13944..13945 "(" - ARG@13945..13947 - EXPR_STRING@13945..13947 - STRING_SINGLE@13945..13947 "''" - COMMA@13947..13948 "," - WHITESPACE@13948..13949 " " - ARG@13949..14010 - EXPR_ARRAY_COMP@13949..14010 - L_BRACK@13949..13950 "[" - EXPR_BINARY@13950..13976 - LHS_EXPR@13950..13960 - EXPR_STRING@13950..13960 - STRING_SINGLE@13950..13960 "' %s=\"%s\"'" - WHITESPACE@13960..13961 " " - MODULO@13961..13962 "%" - WHITESPACE@13962..13963 " " - EXPR_ARRAY@13963..13976 - L_BRACK@13963..13964 "[" - EXPR_VAR@13964..13965 - NAME@13964..13965 - IDENT@13964..13965 "k" - COMMA@13965..13966 "," - WHITESPACE@13966..13967 " " - EXPR_INDEX_EXPR@13967..13975 - LHS_EXPR@13967..13972 - EXPR_VAR@13967..13972 - NAME@13967..13972 - IDENT@13967..13972 "attrs" - L_BRACK@13972..13973 "[" - EXPR_VAR@13973..13974 - NAME@13973..13974 - IDENT@13973..13974 "k" - R_BRACK@13974..13975 "]" - R_BRACK@13975..13976 "]" - WHITESPACE@13976..13977 " " - FOR_SPEC@13977..14009 - FOR_KW@13977..13980 "for" - WHITESPACE@13980..13981 " " - NAME@13981..13982 - IDENT@13981..13982 "k" - WHITESPACE@13982..13983 " " - IN_KW@13983..13985 "in" - WHITESPACE@13985..13986 " " - EXPR_APPLY@13986..14009 - EXPR_INDEX@13986..14002 - EXPR_VAR@13986..13989 - NAME@13986..13989 - IDENT@13986..13989 "std" - DOT@13989..13990 "." - NAME@13990..14002 - IDENT@13990..14002 "objectFields" - ARGS_DESC@14002..14009 - L_PAREN@14002..14003 "(" - ARG@14003..14008 - EXPR_VAR@14003..14008 - NAME@14003..14008 - IDENT@14003..14008 "attrs" - R_PAREN@14008..14009 ")" - R_BRACK@14009..14010 "]" - R_PAREN@14010..14011 ")" - SEMI@14011..14012 ";" - WHITESPACE@14012..14023 "\n " - EXPR_APPLY@14023..14107 - EXPR_INDEX@14023..14035 - EXPR_VAR@14023..14026 - NAME@14023..14026 - IDENT@14023..14026 "std" - DOT@14026..14027 "." - NAME@14027..14035 - IDENT@14027..14035 "deepJoin" - ARGS_DESC@14035..14107 - L_PAREN@14035..14036 "(" - ARG@14036..14106 - EXPR_ARRAY@14036..14106 - L_BRACK@14036..14037 "[" - EXPR_STRING@14037..14040 - STRING_SINGLE@14037..14040 "'<'" - COMMA@14040..14041 "," - WHITESPACE@14041..14042 " " - EXPR_VAR@14042..14045 - NAME@14042..14045 - IDENT@14042..14045 "tag" - COMMA@14045..14046 "," - WHITESPACE@14046..14047 " " - EXPR_VAR@14047..14056 - NAME@14047..14056 - IDENT@14047..14056 "attrs_str" - COMMA@14056..14057 "," - WHITESPACE@14057..14058 " " - EXPR_STRING@14058..14061 - STRING_SINGLE@14058..14061 "'>'" - COMMA@14061..14062 "," - WHITESPACE@14062..14063 " " - EXPR_ARRAY_COMP@14063..14089 - L_BRACK@14063..14064 "[" - EXPR_APPLY@14064..14070 - EXPR_VAR@14064..14067 - NAME@14064..14067 - IDENT@14064..14067 "aux" - ARGS_DESC@14067..14070 - L_PAREN@14067..14068 "(" - ARG@14068..14069 - EXPR_VAR@14068..14069 - NAME@14068..14069 - IDENT@14068..14069 "x" - R_PAREN@14069..14070 ")" - WHITESPACE@14070..14071 " " - FOR_SPEC@14071..14088 - FOR_KW@14071..14074 "for" - WHITESPACE@14074..14075 " " - NAME@14075..14076 - IDENT@14075..14076 "x" - WHITESPACE@14076..14077 " " - IN_KW@14077..14079 "in" - WHITESPACE@14079..14080 " " - EXPR_VAR@14080..14088 - NAME@14080..14088 - IDENT@14080..14088 "children" - R_BRACK@14088..14089 "]" - COMMA@14089..14090 "," - WHITESPACE@14090..14091 " " - EXPR_STRING@14091..14095 - STRING_SINGLE@14091..14095 "''" - R_BRACK@14105..14106 "]" - R_PAREN@14106..14107 ")" - SEMI@14107..14108 ";" - WHITESPACE@14108..14116 "\n\n " - EXPR_APPLY@14116..14126 - EXPR_VAR@14116..14119 - NAME@14116..14119 - IDENT@14116..14119 "aux" - ARGS_DESC@14119..14126 - L_PAREN@14119..14120 "(" - ARG@14120..14125 - EXPR_VAR@14120..14125 - NAME@14120..14125 - IDENT@14120..14125 "value" - R_PAREN@14125..14126 ")" - COMMA@14126..14127 "," - WHITESPACE@14127..14131 "\n\n " - MEMBER_BIND_STMT@14131..14218 - OBJ_LOCAL@14131..14218 - LOCAL_KW@14131..14136 "local" - WHITESPACE@14136..14137 " " - BIND_DESTRUCT@14137..14218 - DESTRUCT_FULL@14137..14149 - NAME@14137..14149 - IDENT@14137..14149 "base64_table" - WHITESPACE@14149..14150 " " - ASSIGN@14150..14151 "=" - WHITESPACE@14151..14152 " " - EXPR_STRING@14152..14218 - STRING_SINGLE@14152..14218 "'ABCDEFGHIJKLMNOPQRST ..." - COMMA@14218..14219 "," - WHITESPACE@14219..14222 "\n " - MEMBER_BIND_STMT@14222..14291 - OBJ_LOCAL@14222..14291 - LOCAL_KW@14222..14227 "local" - WHITESPACE@14227..14228 " " - BIND_DESTRUCT@14228..14291 - DESTRUCT_FULL@14228..14238 - NAME@14228..14238 - IDENT@14228..14238 "base64_inv" - WHITESPACE@14238..14239 " " - ASSIGN@14239..14240 "=" - WHITESPACE@14240..14241 " " - EXPR_OBJECT@14241..14291 - OBJ_BODY_MEMBER_LIST@14241..14291 - L_BRACE@14241..14242 "{" - WHITESPACE@14242..14243 " " - MEMBER_FIELD@14243..14289 - FIELD_NORMAL@14243..14263 - FIELD_NAME_DYNAMIC@14243..14260 - L_BRACK@14243..14244 "[" - EXPR_INDEX_EXPR@14244..14259 - LHS_EXPR@14244..14256 - EXPR_VAR@14244..14256 - NAME@14244..14256 - IDENT@14244..14256 "base64_table" - L_BRACK@14256..14257 "[" - EXPR_VAR@14257..14258 - NAME@14257..14258 - IDENT@14257..14258 "i" - R_BRACK@14258..14259 "]" - R_BRACK@14259..14260 "]" - COLON@14260..14261 ":" - WHITESPACE@14261..14262 " " - EXPR_VAR@14262..14263 - NAME@14262..14263 - IDENT@14262..14263 "i" - WHITESPACE@14263..14264 " " - FOR_SPEC@14264..14289 - FOR_KW@14264..14267 "for" - WHITESPACE@14267..14268 " " - NAME@14268..14269 - IDENT@14268..14269 "i" - WHITESPACE@14269..14270 " " - IN_KW@14270..14272 "in" - WHITESPACE@14272..14273 " " - EXPR_APPLY@14273..14289 - EXPR_INDEX@14273..14282 - EXPR_VAR@14273..14276 - NAME@14273..14276 - IDENT@14273..14276 "std" - DOT@14276..14277 "." - NAME@14277..14282 - IDENT@14277..14282 "range" - ARGS_DESC@14282..14289 - L_PAREN@14282..14283 "(" - ARG@14283..14284 - EXPR_NUMBER@14283..14284 - FLOAT@14283..14284 "0" - COMMA@14284..14285 "," - WHITESPACE@14285..14286 " " - ARG@14286..14288 - EXPR_NUMBER@14286..14288 - FLOAT@14286..14288 "63" - R_PAREN@14288..14289 ")" - WHITESPACE@14289..14290 " " - R_BRACE@14290..14291 "}" - COMMA@14291..14292 "," - WHITESPACE@14292..14296 "\n\n " - MEMBER_FIELD@14296..14323 - FIELD_NORMAL@14296..14323 - FIELD_NAME_FIXED@14296..14302 - NAME@14296..14302 - IDENT@14296..14302 "base64" - COLONCOLON@14302..14304 "::" - WHITESPACE@14304..14305 " " - EXPR_INTRINSIC@14305..14323 - INTRINSIC@14305..14315 "$intrinsic" - L_PAREN@14315..14316 "(" - NAME@14316..14322 - IDENT@14316..14322 "base64" - R_PAREN@14322..14323 ")" - COMMA@14323..14324 "," - WHITESPACE@14324..14328 "\n\n " - MEMBER_FIELD@14328..14377 - FIELD_NORMAL@14328..14377 - FIELD_NAME_FIXED@14328..14345 - NAME@14328..14345 - IDENT@14328..14345 "base64DecodeBytes" - COLONCOLON@14345..14347 "::" - WHITESPACE@14347..14348 " " - EXPR_INTRINSIC@14348..14377 - INTRINSIC@14348..14358 "$intrinsic" - L_PAREN@14358..14359 "(" - NAME@14359..14376 - IDENT@14359..14376 "base64DecodeBytes" - R_PAREN@14376..14377 ")" - COMMA@14377..14378 "," - WHITESPACE@14378..14382 "\n\n " - MEMBER_FIELD@14382..14421 - FIELD_NORMAL@14382..14421 - FIELD_NAME_FIXED@14382..14394 - NAME@14382..14394 - IDENT@14382..14394 "base64Decode" - COLONCOLON@14394..14396 "::" - WHITESPACE@14396..14397 " " - EXPR_INTRINSIC@14397..14421 - INTRINSIC@14397..14407 "$intrinsic" - L_PAREN@14407..14408 "(" - NAME@14408..14420 - IDENT@14408..14420 "base64Decode" - R_PAREN@14420..14421 ")" - COMMA@14421..14422 "," - WHITESPACE@14422..14426 "\n\n " - MEMBER_FIELD@14426..14455 - FIELD_NORMAL@14426..14455 - FIELD_NAME_FIXED@14426..14433 - NAME@14426..14433 - IDENT@14426..14433 "reverse" - COLONCOLON@14433..14435 "::" - WHITESPACE@14435..14436 " " - EXPR_INTRINSIC@14436..14455 - INTRINSIC@14436..14446 "$intrinsic" - L_PAREN@14446..14447 "(" - NAME@14447..14454 - IDENT@14447..14454 "reverse" - R_PAREN@14454..14455 ")" - COMMA@14455..14456 "," - WHITESPACE@14456..14460 "\n\n " - MEMBER_FIELD@14460..14483 - FIELD_NORMAL@14460..14483 - FIELD_NAME_FIXED@14460..14464 - NAME@14460..14464 - IDENT@14460..14464 "sort" - COLONCOLON@14464..14466 "::" - WHITESPACE@14466..14467 " " - EXPR_INTRINSIC@14467..14483 - INTRINSIC@14467..14477 "$intrinsic" - L_PAREN@14477..14478 "(" - NAME@14478..14482 - IDENT@14478..14482 "sort" - R_PAREN@14482..14483 ")" - COMMA@14483..14484 "," - WHITESPACE@14484..14488 "\n\n " - MEMBER_FIELD@14488..14694 - FIELD_METHOD@14488..14694 - FIELD_NAME_FIXED@14488..14492 - NAME@14488..14492 - IDENT@14488..14492 "uniq" - PARAMS_DESC@14492..14506 - L_PAREN@14492..14493 "(" - PARAM@14493..14496 - DESTRUCT_FULL@14493..14496 - NAME@14493..14496 - IDENT@14493..14496 "arr" - COMMA@14496..14497 "," - WHITESPACE@14497..14498 " " - PARAM@14498..14505 - DESTRUCT_FULL@14498..14502 - NAME@14498..14502 - IDENT@14498..14502 "keyF" - ASSIGN@14502..14503 "=" - EXPR_VAR@14503..14505 - NAME@14503..14505 - IDENT@14503..14505 "id" - R_PAREN@14505..14506 ")" - COLONCOLON@14506..14508 "::" - WHITESPACE@14508..14513 "\n " - EXPR_LOCAL@14513..14694 - LOCAL_KW@14513..14518 "local" - WHITESPACE@14518..14519 " " - BIND_FUNCTION@14519..14667 - NAME@14519..14520 - IDENT@14519..14520 "f" - PARAMS_DESC@14520..14526 - L_PAREN@14520..14521 "(" - PARAM@14521..14522 - DESTRUCT_FULL@14521..14522 - NAME@14521..14522 - IDENT@14521..14522 "a" - COMMA@14522..14523 "," - WHITESPACE@14523..14524 " " - PARAM@14524..14525 - DESTRUCT_FULL@14524..14525 - NAME@14524..14525 - IDENT@14524..14525 "b" - R_PAREN@14525..14526 ")" - WHITESPACE@14526..14527 " " - ASSIGN@14527..14528 "=" - WHITESPACE@14528..14535 "\n " - EXPR_IF_THEN_ELSE@14535..14667 - IF_KW@14535..14537 "if" - WHITESPACE@14537..14538 " " - EXPR_BINARY@14538..14556 - LHS_EXPR@14538..14551 - EXPR_APPLY@14538..14551 - EXPR_INDEX@14538..14548 - EXPR_VAR@14538..14541 - NAME@14538..14541 - IDENT@14538..14541 "std" - DOT@14541..14542 "." - NAME@14542..14548 - IDENT@14542..14548 "length" - ARGS_DESC@14548..14551 - L_PAREN@14548..14549 "(" - ARG@14549..14550 - EXPR_VAR@14549..14550 - NAME@14549..14550 - IDENT@14549..14550 "a" - R_PAREN@14550..14551 ")" - WHITESPACE@14551..14552 " " - EQ@14552..14554 "==" - WHITESPACE@14554..14555 " " - EXPR_NUMBER@14555..14556 - FLOAT@14555..14556 "0" - WHITESPACE@14556..14557 " " - THEN_KW@14557..14561 "then" - WHITESPACE@14561..14570 "\n " - TRUE_EXPR@14570..14573 - EXPR_ARRAY@14570..14573 - L_BRACK@14570..14571 "[" - EXPR_VAR@14571..14572 - NAME@14571..14572 - IDENT@14571..14572 "b" - R_BRACK@14572..14573 "]" - WHITESPACE@14573..14580 "\n " - ELSE_KW@14580..14584 "else" - WHITESPACE@14584..14585 " " - FALSE_EXPR@14585..14667 - EXPR_IF_THEN_ELSE@14585..14667 - IF_KW@14585..14587 "if" - WHITESPACE@14587..14588 " " - EXPR_BINARY@14588..14625 - LHS_EXPR@14588..14614 - EXPR_APPLY@14588..14614 - EXPR_VAR@14588..14592 - NAME@14588..14592 - IDENT@14588..14592 "keyF" - ARGS_DESC@14592..14614 - L_PAREN@14592..14593 "(" - ARG@14593..14613 - EXPR_INDEX_EXPR@14593..14613 - LHS_EXPR@14593..14594 - EXPR_VAR@14593..14594 - NAME@14593..14594 - IDENT@14593..14594 "a" - L_BRACK@14594..14595 "[" - EXPR_BINARY@14595..14612 - LHS_EXPR@14595..14608 - EXPR_APPLY@14595..14608 - EXPR_INDEX@14595..14605 - EXPR_VAR@14595..14598 - NAME@14595..14598 - IDENT@14595..14598 "std" - DOT@14598..14599 "." - NAME@14599..14605 - IDENT@14599..14605 "length" - ARGS_DESC@14605..14608 - L_PAREN@14605..14606 "(" - ARG@14606..14607 - EXPR_VAR@14606..14607 - NAME@14606..14607 - IDENT@14606..14607 "a" - R_PAREN@14607..14608 ")" - WHITESPACE@14608..14609 " " - MINUS@14609..14610 "-" - WHITESPACE@14610..14611 " " - EXPR_NUMBER@14611..14612 - FLOAT@14611..14612 "1" - R_BRACK@14612..14613 "]" - R_PAREN@14613..14614 ")" - WHITESPACE@14614..14615 " " - EQ@14615..14617 "==" - WHITESPACE@14617..14618 " " - EXPR_APPLY@14618..14625 - EXPR_VAR@14618..14622 - NAME@14618..14622 - IDENT@14618..14622 "keyF" - ARGS_DESC@14622..14625 - L_PAREN@14622..14623 "(" - ARG@14623..14624 - EXPR_VAR@14623..14624 - NAME@14623..14624 - IDENT@14623..14624 "b" - R_PAREN@14624..14625 ")" - WHITESPACE@14625..14626 " " - THEN_KW@14626..14630 "then" - WHITESPACE@14630..14639 "\n " - TRUE_EXPR@14639..14640 - EXPR_VAR@14639..14640 - NAME@14639..14640 - IDENT@14639..14640 "a" - WHITESPACE@14640..14647 "\n " - ELSE_KW@14647..14651 "else" - WHITESPACE@14651..14660 "\n " - FALSE_EXPR@14660..14667 - EXPR_BINARY@14660..14667 - LHS_EXPR@14660..14661 - EXPR_VAR@14660..14661 - NAME@14660..14661 - IDENT@14660..14661 "a" - WHITESPACE@14661..14662 " " - PLUS@14662..14663 "+" - WHITESPACE@14663..14664 " " - EXPR_ARRAY@14664..14667 - L_BRACK@14664..14665 "[" - EXPR_VAR@14665..14666 - NAME@14665..14666 - IDENT@14665..14666 "b" - R_BRACK@14666..14667 "]" - SEMI@14667..14668 ";" - WHITESPACE@14668..14673 "\n " - EXPR_APPLY@14673..14694 - EXPR_INDEX@14673..14682 - EXPR_VAR@14673..14676 - NAME@14673..14676 - IDENT@14673..14676 "std" - DOT@14676..14677 "." - NAME@14677..14682 - IDENT@14677..14682 "foldl" - ARGS_DESC@14682..14694 - L_PAREN@14682..14683 "(" - ARG@14683..14684 - EXPR_VAR@14683..14684 - NAME@14683..14684 - IDENT@14683..14684 "f" - COMMA@14684..14685 "," - WHITESPACE@14685..14686 " " - ARG@14686..14689 - EXPR_VAR@14686..14689 - NAME@14686..14689 - IDENT@14686..14689 "arr" - COMMA@14689..14690 "," - WHITESPACE@14690..14691 " " - ARG@14691..14693 - EXPR_ARRAY@14691..14693 - L_BRACK@14691..14692 "[" - R_BRACK@14692..14693 "]" - R_PAREN@14693..14694 ")" - COMMA@14694..14695 "," - WHITESPACE@14695..14699 "\n\n " - MEMBER_FIELD@14699..14758 - FIELD_METHOD@14699..14758 - FIELD_NAME_FIXED@14699..14702 - NAME@14699..14702 - IDENT@14699..14702 "set" - PARAMS_DESC@14702..14716 - L_PAREN@14702..14703 "(" - PARAM@14703..14706 - DESTRUCT_FULL@14703..14706 - NAME@14703..14706 - IDENT@14703..14706 "arr" - COMMA@14706..14707 "," - WHITESPACE@14707..14708 " " - PARAM@14708..14715 - DESTRUCT_FULL@14708..14712 - NAME@14708..14712 - IDENT@14708..14712 "keyF" - ASSIGN@14712..14713 "=" - EXPR_VAR@14713..14715 - NAME@14713..14715 - IDENT@14713..14715 "id" - R_PAREN@14715..14716 ")" - COLONCOLON@14716..14718 "::" - WHITESPACE@14718..14723 "\n " - EXPR_APPLY@14723..14758 - EXPR_INDEX@14723..14731 - EXPR_VAR@14723..14726 - NAME@14723..14726 - IDENT@14723..14726 "std" - DOT@14726..14727 "." - NAME@14727..14731 - IDENT@14727..14731 "uniq" - ARGS_DESC@14731..14758 - L_PAREN@14731..14732 "(" - ARG@14732..14751 - EXPR_APPLY@14732..14751 - EXPR_INDEX@14732..14740 - EXPR_VAR@14732..14735 - NAME@14732..14735 - IDENT@14732..14735 "std" - DOT@14735..14736 "." - NAME@14736..14740 - IDENT@14736..14740 "sort" - ARGS_DESC@14740..14751 - L_PAREN@14740..14741 "(" - ARG@14741..14744 - EXPR_VAR@14741..14744 - NAME@14741..14744 - IDENT@14741..14744 "arr" - COMMA@14744..14745 "," - WHITESPACE@14745..14746 " " - ARG@14746..14750 - EXPR_VAR@14746..14750 - NAME@14746..14750 - IDENT@14746..14750 "keyF" - R_PAREN@14750..14751 ")" - COMMA@14751..14752 "," - WHITESPACE@14752..14753 " " - ARG@14753..14757 - EXPR_VAR@14753..14757 - NAME@14753..14757 - IDENT@14753..14757 "keyF" - R_PAREN@14757..14758 ")" - COMMA@14758..14759 "," - WHITESPACE@14759..14763 "\n\n " - MEMBER_FIELD@14763..14898 - FIELD_METHOD@14763..14898 - FIELD_NAME_FIXED@14763..14772 - NAME@14763..14772 - IDENT@14763..14772 "setMember" - PARAMS_DESC@14772..14789 - L_PAREN@14772..14773 "(" - PARAM@14773..14774 - DESTRUCT_FULL@14773..14774 - NAME@14773..14774 - IDENT@14773..14774 "x" - COMMA@14774..14775 "," - WHITESPACE@14775..14776 " " - PARAM@14776..14779 - DESTRUCT_FULL@14776..14779 - NAME@14776..14779 - IDENT@14776..14779 "arr" - COMMA@14779..14780 "," - WHITESPACE@14780..14781 " " - PARAM@14781..14788 - DESTRUCT_FULL@14781..14785 - NAME@14781..14785 - IDENT@14781..14785 "keyF" - ASSIGN@14785..14786 "=" - EXPR_VAR@14786..14788 - NAME@14786..14788 - IDENT@14786..14788 "id" - R_PAREN@14788..14789 ")" - COLONCOLON@14789..14791 "::" - WHITESPACE@14791..14796 "\n " - SINGLE_LINE_SLASH_COMMENT@14796..14850 "// TODO(dcunnin): Bin ..." - WHITESPACE@14850..14854 " " - EXPR_BINARY@14854..14898 - LHS_EXPR@14854..14894 - EXPR_APPLY@14854..14894 - EXPR_INDEX@14854..14864 - EXPR_VAR@14854..14857 - NAME@14854..14857 - IDENT@14854..14857 "std" - DOT@14857..14858 "." - NAME@14858..14864 - IDENT@14858..14864 "length" - ARGS_DESC@14864..14894 - L_PAREN@14864..14865 "(" - ARG@14865..14893 - EXPR_APPLY@14865..14893 - EXPR_INDEX@14865..14877 - EXPR_VAR@14865..14868 - NAME@14865..14868 - IDENT@14865..14868 "std" - DOT@14868..14869 "." - NAME@14869..14877 - IDENT@14869..14877 "setInter" - ARGS_DESC@14877..14893 - L_PAREN@14877..14878 "(" - ARG@14878..14881 - EXPR_ARRAY@14878..14881 - L_BRACK@14878..14879 "[" - EXPR_VAR@14879..14880 - NAME@14879..14880 - IDENT@14879..14880 "x" - R_BRACK@14880..14881 "]" - COMMA@14881..14882 "," - WHITESPACE@14882..14883 " " - ARG@14883..14886 - EXPR_VAR@14883..14886 - NAME@14883..14886 - IDENT@14883..14886 "arr" - COMMA@14886..14887 "," - WHITESPACE@14887..14888 " " - ARG@14888..14892 - EXPR_VAR@14888..14892 - NAME@14888..14892 - IDENT@14888..14892 "keyF" - R_PAREN@14892..14893 ")" - R_PAREN@14893..14894 ")" - WHITESPACE@14894..14895 " " - GT@14895..14896 ">" - WHITESPACE@14896..14897 " " - EXPR_NUMBER@14897..14898 - FLOAT@14897..14898 "0" - COMMA@14898..14899 "," - WHITESPACE@14899..14903 "\n\n " - MEMBER_FIELD@14903..15452 - FIELD_METHOD@14903..15452 - FIELD_NAME_FIXED@14903..14911 - NAME@14903..14911 - IDENT@14903..14911 "setUnion" - PARAMS_DESC@14911..14926 - L_PAREN@14911..14912 "(" - PARAM@14912..14913 - DESTRUCT_FULL@14912..14913 - NAME@14912..14913 - IDENT@14912..14913 "a" - COMMA@14913..14914 "," - WHITESPACE@14914..14915 " " - PARAM@14915..14916 - DESTRUCT_FULL@14915..14916 - NAME@14915..14916 - IDENT@14915..14916 "b" - COMMA@14916..14917 "," - WHITESPACE@14917..14918 " " - PARAM@14918..14925 - DESTRUCT_FULL@14918..14922 - NAME@14918..14922 - IDENT@14918..14922 "keyF" - ASSIGN@14922..14923 "=" - EXPR_VAR@14923..14925 - NAME@14923..14925 - IDENT@14923..14925 "id" - R_PAREN@14925..14926 ")" - COLONCOLON@14926..14928 "::" - WHITESPACE@14928..14933 "\n " - SINGLE_LINE_SLASH_COMMENT@14933..14975 "// NOTE: order matter ..." - WHITESPACE@14975..14979 " " - EXPR_LOCAL@14979..15452 - LOCAL_KW@14979..14984 "local" - WHITESPACE@14984..14985 " " - BIND_FUNCTION@14985..15427 - NAME@14985..14988 - IDENT@14985..14988 "aux" - PARAMS_DESC@14988..15005 - L_PAREN@14988..14989 "(" - PARAM@14989..14990 - DESTRUCT_FULL@14989..14990 - NAME@14989..14990 - IDENT@14989..14990 "a" - COMMA@14990..14991 "," - WHITESPACE@14991..14992 " " - PARAM@14992..14993 - DESTRUCT_FULL@14992..14993 - NAME@14992..14993 - IDENT@14992..14993 "b" - COMMA@14993..14994 "," - WHITESPACE@14994..14995 " " - PARAM@14995..14996 - DESTRUCT_FULL@14995..14996 - NAME@14995..14996 - IDENT@14995..14996 "i" - COMMA@14996..14997 "," - WHITESPACE@14997..14998 " " - PARAM@14998..14999 - DESTRUCT_FULL@14998..14999 - NAME@14998..14999 - IDENT@14998..14999 "j" - COMMA@14999..15000 "," - WHITESPACE@15000..15001 " " - PARAM@15001..15004 - DESTRUCT_FULL@15001..15004 - NAME@15001..15004 - IDENT@15001..15004 "acc" - R_PAREN@15004..15005 ")" - WHITESPACE@15005..15006 " " - ASSIGN@15006..15007 "=" - WHITESPACE@15007..15014 "\n " - EXPR_IF_THEN_ELSE@15014..15427 - IF_KW@15014..15016 "if" - WHITESPACE@15016..15017 " " - EXPR_BINARY@15017..15035 - LHS_EXPR@15017..15018 - EXPR_VAR@15017..15018 - NAME@15017..15018 - IDENT@15017..15018 "i" - WHITESPACE@15018..15019 " " - GE@15019..15021 ">=" - WHITESPACE@15021..15022 " " - EXPR_APPLY@15022..15035 - EXPR_INDEX@15022..15032 - EXPR_VAR@15022..15025 - NAME@15022..15025 - IDENT@15022..15025 "std" - DOT@15025..15026 "." - NAME@15026..15032 - IDENT@15026..15032 "length" - ARGS_DESC@15032..15035 - L_PAREN@15032..15033 "(" - ARG@15033..15034 - EXPR_VAR@15033..15034 - NAME@15033..15034 - IDENT@15033..15034 "a" - R_PAREN@15034..15035 ")" - WHITESPACE@15035..15036 " " - THEN_KW@15036..15040 "then" - WHITESPACE@15040..15049 "\n " - TRUE_EXPR@15049..15060 - EXPR_BINARY@15049..15060 - LHS_EXPR@15049..15052 - EXPR_VAR@15049..15052 - NAME@15049..15052 - IDENT@15049..15052 "acc" - WHITESPACE@15052..15053 " " - PLUS@15053..15054 "+" - WHITESPACE@15054..15055 " " - EXPR_SLICE@15055..15060 - EXPR_VAR@15055..15056 - NAME@15055..15056 - IDENT@15055..15056 "b" - SLICE_DESC@15056..15060 - L_BRACK@15056..15057 "[" - EXPR_VAR@15057..15058 - NAME@15057..15058 - IDENT@15057..15058 "j" - COLON@15058..15059 ":" - R_BRACK@15059..15060 "]" - WHITESPACE@15060..15067 "\n " - ELSE_KW@15067..15071 "else" - WHITESPACE@15071..15072 " " - FALSE_EXPR@15072..15427 - EXPR_IF_THEN_ELSE@15072..15427 - IF_KW@15072..15074 "if" - WHITESPACE@15074..15075 " " - EXPR_BINARY@15075..15093 - LHS_EXPR@15075..15076 - EXPR_VAR@15075..15076 - NAME@15075..15076 - IDENT@15075..15076 "j" - WHITESPACE@15076..15077 " " - GE@15077..15079 ">=" - WHITESPACE@15079..15080 " " - EXPR_APPLY@15080..15093 - EXPR_INDEX@15080..15090 - EXPR_VAR@15080..15083 - NAME@15080..15083 - IDENT@15080..15083 "std" - DOT@15083..15084 "." - NAME@15084..15090 - IDENT@15084..15090 "length" - ARGS_DESC@15090..15093 - L_PAREN@15090..15091 "(" - ARG@15091..15092 - EXPR_VAR@15091..15092 - NAME@15091..15092 - IDENT@15091..15092 "b" - R_PAREN@15092..15093 ")" - WHITESPACE@15093..15094 " " - THEN_KW@15094..15098 "then" - WHITESPACE@15098..15107 "\n " - TRUE_EXPR@15107..15118 - EXPR_BINARY@15107..15118 - LHS_EXPR@15107..15110 - EXPR_VAR@15107..15110 - NAME@15107..15110 - IDENT@15107..15110 "acc" - WHITESPACE@15110..15111 " " - PLUS@15111..15112 "+" - WHITESPACE@15112..15113 " " - EXPR_SLICE@15113..15118 - EXPR_VAR@15113..15114 - NAME@15113..15114 - IDENT@15113..15114 "a" - SLICE_DESC@15114..15118 - L_BRACK@15114..15115 "[" - EXPR_VAR@15115..15116 - NAME@15115..15116 - IDENT@15115..15116 "i" - COLON@15116..15117 ":" - R_BRACK@15117..15118 "]" - WHITESPACE@15118..15125 "\n " - ELSE_KW@15125..15129 "else" - WHITESPACE@15129..15138 "\n " - FALSE_EXPR@15138..15427 - EXPR_LOCAL@15138..15427 - LOCAL_KW@15138..15143 "local" - WHITESPACE@15143..15144 " " - BIND_DESTRUCT@15144..15159 - DESTRUCT_FULL@15144..15146 - NAME@15144..15146 - IDENT@15144..15146 "ak" - WHITESPACE@15146..15147 " " - ASSIGN@15147..15148 "=" - WHITESPACE@15148..15149 " " - EXPR_APPLY@15149..15159 - EXPR_VAR@15149..15153 - NAME@15149..15153 - IDENT@15149..15153 "keyF" - ARGS_DESC@15153..15159 - L_PAREN@15153..15154 "(" - ARG@15154..15158 - EXPR_INDEX_EXPR@15154..15158 - LHS_EXPR@15154..15155 - EXPR_VAR@15154..15155 - NAME@15154..15155 - IDENT@15154..15155 "a" - L_BRACK@15155..15156 "[" - EXPR_VAR@15156..15157 - NAME@15156..15157 - IDENT@15156..15157 "i" - R_BRACK@15157..15158 "]" - R_PAREN@15158..15159 ")" - SEMI@15159..15160 ";" - WHITESPACE@15160..15169 "\n " - EXPR_LOCAL@15169..15427 - LOCAL_KW@15169..15174 "local" - WHITESPACE@15174..15175 " " - BIND_DESTRUCT@15175..15190 - DESTRUCT_FULL@15175..15177 - NAME@15175..15177 - IDENT@15175..15177 "bk" - WHITESPACE@15177..15178 " " - ASSIGN@15178..15179 "=" - WHITESPACE@15179..15180 " " - EXPR_APPLY@15180..15190 - EXPR_VAR@15180..15184 - NAME@15180..15184 - IDENT@15180..15184 "keyF" - ARGS_DESC@15184..15190 - L_PAREN@15184..15185 "(" - ARG@15185..15189 - EXPR_INDEX_EXPR@15185..15189 - LHS_EXPR@15185..15186 - EXPR_VAR@15185..15186 - NAME@15185..15186 - IDENT@15185..15186 "b" - L_BRACK@15186..15187 "[" - EXPR_VAR@15187..15188 - NAME@15187..15188 - IDENT@15187..15188 "j" - R_BRACK@15188..15189 "]" - R_PAREN@15189..15190 ")" - SEMI@15190..15191 ";" - WHITESPACE@15191..15200 "\n " - EXPR_IF_THEN_ELSE@15200..15427 - IF_KW@15200..15202 "if" - WHITESPACE@15202..15203 " " - EXPR_BINARY@15203..15211 - LHS_EXPR@15203..15205 - EXPR_VAR@15203..15205 - NAME@15203..15205 - IDENT@15203..15205 "ak" - WHITESPACE@15205..15206 " " - EQ@15206..15208 "==" - WHITESPACE@15208..15209 " " - EXPR_VAR@15209..15211 - NAME@15209..15211 - IDENT@15209..15211 "bk" - WHITESPACE@15211..15212 " " - THEN_KW@15212..15216 "then" - WHITESPACE@15216..15227 "\n " - TRUE_EXPR@15227..15275 - EXPR_APPLY@15227..15275 - EXPR_VAR@15227..15230 - NAME@15227..15230 - IDENT@15227..15230 "aux" - ARGS_DESC@15230..15275 - L_PAREN@15230..15231 "(" - ARG@15231..15232 - EXPR_VAR@15231..15232 - NAME@15231..15232 - IDENT@15231..15232 "a" - COMMA@15232..15233 "," - WHITESPACE@15233..15234 " " - ARG@15234..15235 - EXPR_VAR@15234..15235 - NAME@15234..15235 - IDENT@15234..15235 "b" - COMMA@15235..15236 "," - WHITESPACE@15236..15237 " " - ARG@15237..15242 - EXPR_BINARY@15237..15242 - LHS_EXPR@15237..15238 - EXPR_VAR@15237..15238 - NAME@15237..15238 - IDENT@15237..15238 "i" - WHITESPACE@15238..15239 " " - PLUS@15239..15240 "+" - WHITESPACE@15240..15241 " " - EXPR_NUMBER@15241..15242 - FLOAT@15241..15242 "1" - COMMA@15242..15243 "," - WHITESPACE@15243..15244 " " - ARG@15244..15249 - EXPR_BINARY@15244..15249 - LHS_EXPR@15244..15245 - EXPR_VAR@15244..15245 - NAME@15244..15245 - IDENT@15244..15245 "j" - WHITESPACE@15245..15246 " " - PLUS@15246..15247 "+" - WHITESPACE@15247..15248 " " - EXPR_NUMBER@15248..15249 - FLOAT@15248..15249 "1" - COMMA@15249..15250 "," - WHITESPACE@15250..15251 " " - ARG@15251..15263 - EXPR_BINARY@15251..15263 - LHS_EXPR@15251..15254 - EXPR_VAR@15251..15254 - NAME@15251..15254 - IDENT@15251..15254 "acc" - WHITESPACE@15254..15255 " " - PLUS@15255..15256 "+" - WHITESPACE@15256..15257 " " - EXPR_ARRAY@15257..15263 - L_BRACK@15257..15258 "[" - EXPR_INDEX_EXPR@15258..15262 - LHS_EXPR@15258..15259 - EXPR_VAR@15258..15259 - NAME@15258..15259 - IDENT@15258..15259 "a" - L_BRACK@15259..15260 "[" - EXPR_VAR@15260..15261 - NAME@15260..15261 - IDENT@15260..15261 "i" - R_BRACK@15261..15262 "]" - R_BRACK@15262..15263 "]" - R_PAREN@15263..15264 ")" - WHITESPACE@15264..15265 " " - TAILSTRICT_KW@15265..15275 "tailstrict" - WHITESPACE@15275..15284 "\n " - ELSE_KW@15284..15288 "else" - WHITESPACE@15288..15289 " " - FALSE_EXPR@15289..15427 - EXPR_IF_THEN_ELSE@15289..15427 - IF_KW@15289..15291 "if" - WHITESPACE@15291..15292 " " - EXPR_BINARY@15292..15299 - LHS_EXPR@15292..15294 - EXPR_VAR@15292..15294 - NAME@15292..15294 - IDENT@15292..15294 "ak" - WHITESPACE@15294..15295 " " - LT@15295..15296 "<" - WHITESPACE@15296..15297 " " - EXPR_VAR@15297..15299 - NAME@15297..15299 - IDENT@15297..15299 "bk" - WHITESPACE@15299..15300 " " - THEN_KW@15300..15304 "then" - WHITESPACE@15304..15315 "\n " - TRUE_EXPR@15315..15359 - EXPR_APPLY@15315..15359 - EXPR_VAR@15315..15318 - NAME@15315..15318 - IDENT@15315..15318 "aux" - ARGS_DESC@15318..15359 - L_PAREN@15318..15319 "(" - ARG@15319..15320 - EXPR_VAR@15319..15320 - NAME@15319..15320 - IDENT@15319..15320 "a" - COMMA@15320..15321 "," - WHITESPACE@15321..15322 " " - ARG@15322..15323 - EXPR_VAR@15322..15323 - NAME@15322..15323 - IDENT@15322..15323 "b" - COMMA@15323..15324 "," - WHITESPACE@15324..15325 " " - ARG@15325..15330 - EXPR_BINARY@15325..15330 - LHS_EXPR@15325..15326 - EXPR_VAR@15325..15326 - NAME@15325..15326 - IDENT@15325..15326 "i" - WHITESPACE@15326..15327 " " - PLUS@15327..15328 "+" - WHITESPACE@15328..15329 " " - EXPR_NUMBER@15329..15330 - FLOAT@15329..15330 "1" - COMMA@15330..15331 "," - WHITESPACE@15331..15332 " " - ARG@15332..15333 - EXPR_VAR@15332..15333 - NAME@15332..15333 - IDENT@15332..15333 "j" - COMMA@15333..15334 "," - WHITESPACE@15334..15335 " " - ARG@15335..15347 - EXPR_BINARY@15335..15347 - LHS_EXPR@15335..15338 - EXPR_VAR@15335..15338 - NAME@15335..15338 - IDENT@15335..15338 "acc" - WHITESPACE@15338..15339 " " - PLUS@15339..15340 "+" - WHITESPACE@15340..15341 " " - EXPR_ARRAY@15341..15347 - L_BRACK@15341..15342 "[" - EXPR_INDEX_EXPR@15342..15346 - LHS_EXPR@15342..15343 - EXPR_VAR@15342..15343 - NAME@15342..15343 - IDENT@15342..15343 "a" - L_BRACK@15343..15344 "[" - EXPR_VAR@15344..15345 - NAME@15344..15345 - IDENT@15344..15345 "i" - R_BRACK@15345..15346 "]" - R_BRACK@15346..15347 "]" - R_PAREN@15347..15348 ")" - WHITESPACE@15348..15349 " " - TAILSTRICT_KW@15349..15359 "tailstrict" - WHITESPACE@15359..15368 "\n " - ELSE_KW@15368..15372 "else" - WHITESPACE@15372..15383 "\n " - FALSE_EXPR@15383..15427 - EXPR_APPLY@15383..15427 - EXPR_VAR@15383..15386 - NAME@15383..15386 - IDENT@15383..15386 "aux" - ARGS_DESC@15386..15427 - L_PAREN@15386..15387 "(" - ARG@15387..15388 - EXPR_VAR@15387..15388 - NAME@15387..15388 - IDENT@15387..15388 "a" - COMMA@15388..15389 "," - WHITESPACE@15389..15390 " " - ARG@15390..15391 - EXPR_VAR@15390..15391 - NAME@15390..15391 - IDENT@15390..15391 "b" - COMMA@15391..15392 "," - WHITESPACE@15392..15393 " " - ARG@15393..15394 - EXPR_VAR@15393..15394 - NAME@15393..15394 - IDENT@15393..15394 "i" - COMMA@15394..15395 "," - WHITESPACE@15395..15396 " " - ARG@15396..15401 - EXPR_BINARY@15396..15401 - LHS_EXPR@15396..15397 - EXPR_VAR@15396..15397 - NAME@15396..15397 - IDENT@15396..15397 "j" - WHITESPACE@15397..15398 " " - PLUS@15398..15399 "+" - WHITESPACE@15399..15400 " " - EXPR_NUMBER@15400..15401 - FLOAT@15400..15401 "1" - COMMA@15401..15402 "," - WHITESPACE@15402..15403 " " - ARG@15403..15415 - EXPR_BINARY@15403..15415 - LHS_EXPR@15403..15406 - EXPR_VAR@15403..15406 - NAME@15403..15406 - IDENT@15403..15406 "acc" - WHITESPACE@15406..15407 " " - PLUS@15407..15408 "+" - WHITESPACE@15408..15409 " " - EXPR_ARRAY@15409..15415 - L_BRACK@15409..15410 "[" - EXPR_INDEX_EXPR@15410..15414 - LHS_EXPR@15410..15411 - EXPR_VAR@15410..15411 - NAME@15410..15411 - IDENT@15410..15411 "b" - L_BRACK@15411..15412 "[" - EXPR_VAR@15412..15413 - NAME@15412..15413 - IDENT@15412..15413 "j" - R_BRACK@15413..15414 "]" - R_BRACK@15414..15415 "]" - R_PAREN@15415..15416 ")" - WHITESPACE@15416..15417 " " - TAILSTRICT_KW@15417..15427 "tailstrict" - SEMI@15427..15428 ";" - WHITESPACE@15428..15433 "\n " - EXPR_APPLY@15433..15452 - EXPR_VAR@15433..15436 - NAME@15433..15436 - IDENT@15433..15436 "aux" - ARGS_DESC@15436..15452 - L_PAREN@15436..15437 "(" - ARG@15437..15438 - EXPR_VAR@15437..15438 - NAME@15437..15438 - IDENT@15437..15438 "a" - COMMA@15438..15439 "," - WHITESPACE@15439..15440 " " - ARG@15440..15441 - EXPR_VAR@15440..15441 - NAME@15440..15441 - IDENT@15440..15441 "b" - COMMA@15441..15442 "," - WHITESPACE@15442..15443 " " - ARG@15443..15444 - EXPR_NUMBER@15443..15444 - FLOAT@15443..15444 "0" - COMMA@15444..15445 "," - WHITESPACE@15445..15446 " " - ARG@15446..15447 - EXPR_NUMBER@15446..15447 - FLOAT@15446..15447 "0" - COMMA@15447..15448 "," - WHITESPACE@15448..15449 " " - ARG@15449..15451 - EXPR_ARRAY@15449..15451 - L_BRACK@15449..15450 "[" - R_BRACK@15450..15451 "]" - R_PAREN@15451..15452 ")" - COMMA@15452..15453 "," - WHITESPACE@15453..15457 "\n\n " - MEMBER_FIELD@15457..15879 - FIELD_METHOD@15457..15879 - FIELD_NAME_FIXED@15457..15465 - NAME@15457..15465 - IDENT@15457..15465 "setInter" - PARAMS_DESC@15465..15480 - L_PAREN@15465..15466 "(" - PARAM@15466..15467 - DESTRUCT_FULL@15466..15467 - NAME@15466..15467 - IDENT@15466..15467 "a" - COMMA@15467..15468 "," - WHITESPACE@15468..15469 " " - PARAM@15469..15470 - DESTRUCT_FULL@15469..15470 - NAME@15469..15470 - IDENT@15469..15470 "b" - COMMA@15470..15471 "," - WHITESPACE@15471..15472 " " - PARAM@15472..15479 - DESTRUCT_FULL@15472..15476 - NAME@15472..15476 - IDENT@15472..15476 "keyF" - ASSIGN@15476..15477 "=" - EXPR_VAR@15477..15479 - NAME@15477..15479 - IDENT@15477..15479 "id" - R_PAREN@15479..15480 ")" - COLONCOLON@15480..15482 "::" - WHITESPACE@15482..15487 "\n " - EXPR_LOCAL@15487..15879 - LOCAL_KW@15487..15492 "local" - WHITESPACE@15492..15493 " " - BIND_FUNCTION@15493..15843 - NAME@15493..15496 - IDENT@15493..15496 "aux" - PARAMS_DESC@15496..15513 - L_PAREN@15496..15497 "(" - PARAM@15497..15498 - DESTRUCT_FULL@15497..15498 - NAME@15497..15498 - IDENT@15497..15498 "a" - COMMA@15498..15499 "," - WHITESPACE@15499..15500 " " - PARAM@15500..15501 - DESTRUCT_FULL@15500..15501 - NAME@15500..15501 - IDENT@15500..15501 "b" - COMMA@15501..15502 "," - WHITESPACE@15502..15503 " " - PARAM@15503..15504 - DESTRUCT_FULL@15503..15504 - NAME@15503..15504 - IDENT@15503..15504 "i" - COMMA@15504..15505 "," - WHITESPACE@15505..15506 " " - PARAM@15506..15507 - DESTRUCT_FULL@15506..15507 - NAME@15506..15507 - IDENT@15506..15507 "j" - COMMA@15507..15508 "," - WHITESPACE@15508..15509 " " - PARAM@15509..15512 - DESTRUCT_FULL@15509..15512 - NAME@15509..15512 - IDENT@15509..15512 "acc" - R_PAREN@15512..15513 ")" - WHITESPACE@15513..15514 " " - ASSIGN@15514..15515 "=" - WHITESPACE@15515..15522 "\n " - EXPR_IF_THEN_ELSE@15522..15843 - IF_KW@15522..15524 "if" - WHITESPACE@15524..15525 " " - EXPR_BINARY@15525..15565 - LHS_EXPR@15525..15543 - EXPR_BINARY@15525..15543 - LHS_EXPR@15525..15526 - EXPR_VAR@15525..15526 - NAME@15525..15526 - IDENT@15525..15526 "i" - WHITESPACE@15526..15527 " " - GE@15527..15529 ">=" - WHITESPACE@15529..15530 " " - EXPR_APPLY@15530..15543 - EXPR_INDEX@15530..15540 - EXPR_VAR@15530..15533 - NAME@15530..15533 - IDENT@15530..15533 "std" - DOT@15533..15534 "." - NAME@15534..15540 - IDENT@15534..15540 "length" - ARGS_DESC@15540..15543 - L_PAREN@15540..15541 "(" - ARG@15541..15542 - EXPR_VAR@15541..15542 - NAME@15541..15542 - IDENT@15541..15542 "a" - R_PAREN@15542..15543 ")" - WHITESPACE@15543..15544 " " - OR@15544..15546 "||" - WHITESPACE@15546..15547 " " - EXPR_BINARY@15547..15565 - LHS_EXPR@15547..15548 - EXPR_VAR@15547..15548 - NAME@15547..15548 - IDENT@15547..15548 "j" - WHITESPACE@15548..15549 " " - GE@15549..15551 ">=" - WHITESPACE@15551..15552 " " - EXPR_APPLY@15552..15565 - EXPR_INDEX@15552..15562 - EXPR_VAR@15552..15555 - NAME@15552..15555 - IDENT@15552..15555 "std" - DOT@15555..15556 "." - NAME@15556..15562 - IDENT@15556..15562 "length" - ARGS_DESC@15562..15565 - L_PAREN@15562..15563 "(" - ARG@15563..15564 - EXPR_VAR@15563..15564 - NAME@15563..15564 - IDENT@15563..15564 "b" - R_PAREN@15564..15565 ")" - WHITESPACE@15565..15566 " " - THEN_KW@15566..15570 "then" - WHITESPACE@15570..15579 "\n " - TRUE_EXPR@15579..15582 - EXPR_VAR@15579..15582 - NAME@15579..15582 - IDENT@15579..15582 "acc" - WHITESPACE@15582..15589 "\n " - ELSE_KW@15589..15593 "else" - WHITESPACE@15593..15602 "\n " - FALSE_EXPR@15602..15843 - EXPR_IF_THEN_ELSE@15602..15843 - IF_KW@15602..15604 "if" - WHITESPACE@15604..15605 " " - EXPR_BINARY@15605..15629 - LHS_EXPR@15605..15615 - EXPR_APPLY@15605..15615 - EXPR_VAR@15605..15609 - NAME@15605..15609 - IDENT@15605..15609 "keyF" - ARGS_DESC@15609..15615 - L_PAREN@15609..15610 "(" - ARG@15610..15614 - EXPR_INDEX_EXPR@15610..15614 - LHS_EXPR@15610..15611 - EXPR_VAR@15610..15611 - NAME@15610..15611 - IDENT@15610..15611 "a" - L_BRACK@15611..15612 "[" - EXPR_VAR@15612..15613 - NAME@15612..15613 - IDENT@15612..15613 "i" - R_BRACK@15613..15614 "]" - R_PAREN@15614..15615 ")" - WHITESPACE@15615..15616 " " - EQ@15616..15618 "==" - WHITESPACE@15618..15619 " " - EXPR_APPLY@15619..15629 - EXPR_VAR@15619..15623 - NAME@15619..15623 - IDENT@15619..15623 "keyF" - ARGS_DESC@15623..15629 - L_PAREN@15623..15624 "(" - ARG@15624..15628 - EXPR_INDEX_EXPR@15624..15628 - LHS_EXPR@15624..15625 - EXPR_VAR@15624..15625 - NAME@15624..15625 - IDENT@15624..15625 "b" - L_BRACK@15625..15626 "[" - EXPR_VAR@15626..15627 - NAME@15626..15627 - IDENT@15626..15627 "j" - R_BRACK@15627..15628 "]" - R_PAREN@15628..15629 ")" - WHITESPACE@15629..15630 " " - THEN_KW@15630..15634 "then" - WHITESPACE@15634..15645 "\n " - TRUE_EXPR@15645..15693 - EXPR_APPLY@15645..15693 - EXPR_VAR@15645..15648 - NAME@15645..15648 - IDENT@15645..15648 "aux" - ARGS_DESC@15648..15693 - L_PAREN@15648..15649 "(" - ARG@15649..15650 - EXPR_VAR@15649..15650 - NAME@15649..15650 - IDENT@15649..15650 "a" - COMMA@15650..15651 "," - WHITESPACE@15651..15652 " " - ARG@15652..15653 - EXPR_VAR@15652..15653 - NAME@15652..15653 - IDENT@15652..15653 "b" - COMMA@15653..15654 "," - WHITESPACE@15654..15655 " " - ARG@15655..15660 - EXPR_BINARY@15655..15660 - LHS_EXPR@15655..15656 - EXPR_VAR@15655..15656 - NAME@15655..15656 - IDENT@15655..15656 "i" - WHITESPACE@15656..15657 " " - PLUS@15657..15658 "+" - WHITESPACE@15658..15659 " " - EXPR_NUMBER@15659..15660 - FLOAT@15659..15660 "1" - COMMA@15660..15661 "," - WHITESPACE@15661..15662 " " - ARG@15662..15667 - EXPR_BINARY@15662..15667 - LHS_EXPR@15662..15663 - EXPR_VAR@15662..15663 - NAME@15662..15663 - IDENT@15662..15663 "j" - WHITESPACE@15663..15664 " " - PLUS@15664..15665 "+" - WHITESPACE@15665..15666 " " - EXPR_NUMBER@15666..15667 - FLOAT@15666..15667 "1" - COMMA@15667..15668 "," - WHITESPACE@15668..15669 " " - ARG@15669..15681 - EXPR_BINARY@15669..15681 - LHS_EXPR@15669..15672 - EXPR_VAR@15669..15672 - NAME@15669..15672 - IDENT@15669..15672 "acc" - WHITESPACE@15672..15673 " " - PLUS@15673..15674 "+" - WHITESPACE@15674..15675 " " - EXPR_ARRAY@15675..15681 - L_BRACK@15675..15676 "[" - EXPR_INDEX_EXPR@15676..15680 - LHS_EXPR@15676..15677 - EXPR_VAR@15676..15677 - NAME@15676..15677 - IDENT@15676..15677 "a" - L_BRACK@15677..15678 "[" - EXPR_VAR@15678..15679 - NAME@15678..15679 - IDENT@15678..15679 "i" - R_BRACK@15679..15680 "]" - R_BRACK@15680..15681 "]" - R_PAREN@15681..15682 ")" - WHITESPACE@15682..15683 " " - TAILSTRICT_KW@15683..15693 "tailstrict" - WHITESPACE@15693..15702 "\n " - ELSE_KW@15702..15706 "else" - WHITESPACE@15706..15707 " " - FALSE_EXPR@15707..15843 - EXPR_IF_THEN_ELSE@15707..15843 - IF_KW@15707..15709 "if" - WHITESPACE@15709..15710 " " - EXPR_BINARY@15710..15733 - LHS_EXPR@15710..15720 - EXPR_APPLY@15710..15720 - EXPR_VAR@15710..15714 - NAME@15710..15714 - IDENT@15710..15714 "keyF" - ARGS_DESC@15714..15720 - L_PAREN@15714..15715 "(" - ARG@15715..15719 - EXPR_INDEX_EXPR@15715..15719 - LHS_EXPR@15715..15716 - EXPR_VAR@15715..15716 - NAME@15715..15716 - IDENT@15715..15716 "a" - L_BRACK@15716..15717 "[" - EXPR_VAR@15717..15718 - NAME@15717..15718 - IDENT@15717..15718 "i" - R_BRACK@15718..15719 "]" - R_PAREN@15719..15720 ")" - WHITESPACE@15720..15721 " " - LT@15721..15722 "<" - WHITESPACE@15722..15723 " " - EXPR_APPLY@15723..15733 - EXPR_VAR@15723..15727 - NAME@15723..15727 - IDENT@15723..15727 "keyF" - ARGS_DESC@15727..15733 - L_PAREN@15727..15728 "(" - ARG@15728..15732 - EXPR_INDEX_EXPR@15728..15732 - LHS_EXPR@15728..15729 - EXPR_VAR@15728..15729 - NAME@15728..15729 - IDENT@15728..15729 "b" - L_BRACK@15729..15730 "[" - EXPR_VAR@15730..15731 - NAME@15730..15731 - IDENT@15730..15731 "j" - R_BRACK@15731..15732 "]" - R_PAREN@15732..15733 ")" - WHITESPACE@15733..15734 " " - THEN_KW@15734..15738 "then" - WHITESPACE@15738..15749 "\n " - TRUE_EXPR@15749..15784 - EXPR_APPLY@15749..15784 - EXPR_VAR@15749..15752 - NAME@15749..15752 - IDENT@15749..15752 "aux" - ARGS_DESC@15752..15784 - L_PAREN@15752..15753 "(" - ARG@15753..15754 - EXPR_VAR@15753..15754 - NAME@15753..15754 - IDENT@15753..15754 "a" - COMMA@15754..15755 "," - WHITESPACE@15755..15756 " " - ARG@15756..15757 - EXPR_VAR@15756..15757 - NAME@15756..15757 - IDENT@15756..15757 "b" - COMMA@15757..15758 "," - WHITESPACE@15758..15759 " " - ARG@15759..15764 - EXPR_BINARY@15759..15764 - LHS_EXPR@15759..15760 - EXPR_VAR@15759..15760 - NAME@15759..15760 - IDENT@15759..15760 "i" - WHITESPACE@15760..15761 " " - PLUS@15761..15762 "+" - WHITESPACE@15762..15763 " " - EXPR_NUMBER@15763..15764 - FLOAT@15763..15764 "1" - COMMA@15764..15765 "," - WHITESPACE@15765..15766 " " - ARG@15766..15767 - EXPR_VAR@15766..15767 - NAME@15766..15767 - IDENT@15766..15767 "j" - COMMA@15767..15768 "," - WHITESPACE@15768..15769 " " - ARG@15769..15772 - EXPR_VAR@15769..15772 - NAME@15769..15772 - IDENT@15769..15772 "acc" - R_PAREN@15772..15773 ")" - WHITESPACE@15773..15774 " " - TAILSTRICT_KW@15774..15784 "tailstrict" - WHITESPACE@15784..15793 "\n " - ELSE_KW@15793..15797 "else" - WHITESPACE@15797..15808 "\n " - FALSE_EXPR@15808..15843 - EXPR_APPLY@15808..15843 - EXPR_VAR@15808..15811 - NAME@15808..15811 - IDENT@15808..15811 "aux" - ARGS_DESC@15811..15843 - L_PAREN@15811..15812 "(" - ARG@15812..15813 - EXPR_VAR@15812..15813 - NAME@15812..15813 - IDENT@15812..15813 "a" - COMMA@15813..15814 "," - WHITESPACE@15814..15815 " " - ARG@15815..15816 - EXPR_VAR@15815..15816 - NAME@15815..15816 - IDENT@15815..15816 "b" - COMMA@15816..15817 "," - WHITESPACE@15817..15818 " " - ARG@15818..15819 - EXPR_VAR@15818..15819 - NAME@15818..15819 - IDENT@15818..15819 "i" - COMMA@15819..15820 "," - WHITESPACE@15820..15821 " " - ARG@15821..15826 - EXPR_BINARY@15821..15826 - LHS_EXPR@15821..15822 - EXPR_VAR@15821..15822 - NAME@15821..15822 - IDENT@15821..15822 "j" - WHITESPACE@15822..15823 " " - PLUS@15823..15824 "+" - WHITESPACE@15824..15825 " " - EXPR_NUMBER@15825..15826 - FLOAT@15825..15826 "1" - COMMA@15826..15827 "," - WHITESPACE@15827..15828 " " - ARG@15828..15831 - EXPR_VAR@15828..15831 - NAME@15828..15831 - IDENT@15828..15831 "acc" - R_PAREN@15831..15832 ")" - WHITESPACE@15832..15833 " " - TAILSTRICT_KW@15833..15843 "tailstrict" - SEMI@15843..15844 ";" - WHITESPACE@15844..15849 "\n " - EXPR_APPLY@15849..15879 - EXPR_VAR@15849..15852 - NAME@15849..15852 - IDENT@15849..15852 "aux" - ARGS_DESC@15852..15879 - L_PAREN@15852..15853 "(" - ARG@15853..15854 - EXPR_VAR@15853..15854 - NAME@15853..15854 - IDENT@15853..15854 "a" - COMMA@15854..15855 "," - WHITESPACE@15855..15856 " " - ARG@15856..15857 - EXPR_VAR@15856..15857 - NAME@15856..15857 - IDENT@15856..15857 "b" - COMMA@15857..15858 "," - WHITESPACE@15858..15859 " " - ARG@15859..15860 - EXPR_NUMBER@15859..15860 - FLOAT@15859..15860 "0" - COMMA@15860..15861 "," - WHITESPACE@15861..15862 " " - ARG@15862..15863 - EXPR_NUMBER@15862..15863 - FLOAT@15862..15863 "0" - COMMA@15863..15864 "," - WHITESPACE@15864..15865 " " - ARG@15865..15867 - EXPR_ARRAY@15865..15867 - L_BRACK@15865..15866 "[" - R_BRACK@15866..15867 "]" - R_PAREN@15867..15868 ")" - WHITESPACE@15868..15869 " " - TAILSTRICT_KW@15869..15879 "tailstrict" - COMMA@15879..15880 "," - WHITESPACE@15880..15884 "\n\n " - MEMBER_FIELD@15884..16341 - FIELD_METHOD@15884..16341 - FIELD_NAME_FIXED@15884..15891 - NAME@15884..15891 - IDENT@15884..15891 "setDiff" - PARAMS_DESC@15891..15906 - L_PAREN@15891..15892 "(" - PARAM@15892..15893 - DESTRUCT_FULL@15892..15893 - NAME@15892..15893 - IDENT@15892..15893 "a" - COMMA@15893..15894 "," - WHITESPACE@15894..15895 " " - PARAM@15895..15896 - DESTRUCT_FULL@15895..15896 - NAME@15895..15896 - IDENT@15895..15896 "b" - COMMA@15896..15897 "," - WHITESPACE@15897..15898 " " - PARAM@15898..15905 - DESTRUCT_FULL@15898..15902 - NAME@15898..15902 - IDENT@15898..15902 "keyF" - ASSIGN@15902..15903 "=" - EXPR_VAR@15903..15905 - NAME@15903..15905 - IDENT@15903..15905 "id" - R_PAREN@15905..15906 ")" - COLONCOLON@15906..15908 "::" - WHITESPACE@15908..15913 "\n " - EXPR_LOCAL@15913..16341 - LOCAL_KW@15913..15918 "local" - WHITESPACE@15918..15919 " " - BIND_FUNCTION@15919..16305 - NAME@15919..15922 - IDENT@15919..15922 "aux" - PARAMS_DESC@15922..15939 - L_PAREN@15922..15923 "(" - PARAM@15923..15924 - DESTRUCT_FULL@15923..15924 - NAME@15923..15924 - IDENT@15923..15924 "a" - COMMA@15924..15925 "," - WHITESPACE@15925..15926 " " - PARAM@15926..15927 - DESTRUCT_FULL@15926..15927 - NAME@15926..15927 - IDENT@15926..15927 "b" - COMMA@15927..15928 "," - WHITESPACE@15928..15929 " " - PARAM@15929..15930 - DESTRUCT_FULL@15929..15930 - NAME@15929..15930 - IDENT@15929..15930 "i" - COMMA@15930..15931 "," - WHITESPACE@15931..15932 " " - PARAM@15932..15933 - DESTRUCT_FULL@15932..15933 - NAME@15932..15933 - IDENT@15932..15933 "j" - COMMA@15933..15934 "," - WHITESPACE@15934..15935 " " - PARAM@15935..15938 - DESTRUCT_FULL@15935..15938 - NAME@15935..15938 - IDENT@15935..15938 "acc" - R_PAREN@15938..15939 ")" - WHITESPACE@15939..15940 " " - ASSIGN@15940..15941 "=" - WHITESPACE@15941..15948 "\n " - EXPR_IF_THEN_ELSE@15948..16305 - IF_KW@15948..15950 "if" - WHITESPACE@15950..15951 " " - EXPR_BINARY@15951..15969 - LHS_EXPR@15951..15952 - EXPR_VAR@15951..15952 - NAME@15951..15952 - IDENT@15951..15952 "i" - WHITESPACE@15952..15953 " " - GE@15953..15955 ">=" - WHITESPACE@15955..15956 " " - EXPR_APPLY@15956..15969 - EXPR_INDEX@15956..15966 - EXPR_VAR@15956..15959 - NAME@15956..15959 - IDENT@15956..15959 "std" - DOT@15959..15960 "." - NAME@15960..15966 - IDENT@15960..15966 "length" - ARGS_DESC@15966..15969 - L_PAREN@15966..15967 "(" - ARG@15967..15968 - EXPR_VAR@15967..15968 - NAME@15967..15968 - IDENT@15967..15968 "a" - R_PAREN@15968..15969 ")" - WHITESPACE@15969..15970 " " - THEN_KW@15970..15974 "then" - WHITESPACE@15974..15983 "\n " - TRUE_EXPR@15983..15986 - EXPR_VAR@15983..15986 - NAME@15983..15986 - IDENT@15983..15986 "acc" - WHITESPACE@15986..15993 "\n " - ELSE_KW@15993..15997 "else" - WHITESPACE@15997..15998 " " - FALSE_EXPR@15998..16305 - EXPR_IF_THEN_ELSE@15998..16305 - IF_KW@15998..16000 "if" - WHITESPACE@16000..16001 " " - EXPR_BINARY@16001..16019 - LHS_EXPR@16001..16002 - EXPR_VAR@16001..16002 - NAME@16001..16002 - IDENT@16001..16002 "j" - WHITESPACE@16002..16003 " " - GE@16003..16005 ">=" - WHITESPACE@16005..16006 " " - EXPR_APPLY@16006..16019 - EXPR_INDEX@16006..16016 - EXPR_VAR@16006..16009 - NAME@16006..16009 - IDENT@16006..16009 "std" - DOT@16009..16010 "." - NAME@16010..16016 - IDENT@16010..16016 "length" - ARGS_DESC@16016..16019 - L_PAREN@16016..16017 "(" - ARG@16017..16018 - EXPR_VAR@16017..16018 - NAME@16017..16018 - IDENT@16017..16018 "b" - R_PAREN@16018..16019 ")" - WHITESPACE@16019..16020 " " - THEN_KW@16020..16024 "then" - WHITESPACE@16024..16033 "\n " - TRUE_EXPR@16033..16044 - EXPR_BINARY@16033..16044 - LHS_EXPR@16033..16036 - EXPR_VAR@16033..16036 - NAME@16033..16036 - IDENT@16033..16036 "acc" - WHITESPACE@16036..16037 " " - PLUS@16037..16038 "+" - WHITESPACE@16038..16039 " " - EXPR_SLICE@16039..16044 - EXPR_VAR@16039..16040 - NAME@16039..16040 - IDENT@16039..16040 "a" - SLICE_DESC@16040..16044 - L_BRACK@16040..16041 "[" - EXPR_VAR@16041..16042 - NAME@16041..16042 - IDENT@16041..16042 "i" - COLON@16042..16043 ":" - R_BRACK@16043..16044 "]" - WHITESPACE@16044..16051 "\n " - ELSE_KW@16051..16055 "else" - WHITESPACE@16055..16064 "\n " - FALSE_EXPR@16064..16305 - EXPR_IF_THEN_ELSE@16064..16305 - IF_KW@16064..16066 "if" - WHITESPACE@16066..16067 " " - EXPR_BINARY@16067..16091 - LHS_EXPR@16067..16077 - EXPR_APPLY@16067..16077 - EXPR_VAR@16067..16071 - NAME@16067..16071 - IDENT@16067..16071 "keyF" - ARGS_DESC@16071..16077 - L_PAREN@16071..16072 "(" - ARG@16072..16076 - EXPR_INDEX_EXPR@16072..16076 - LHS_EXPR@16072..16073 - EXPR_VAR@16072..16073 - NAME@16072..16073 - IDENT@16072..16073 "a" - L_BRACK@16073..16074 "[" - EXPR_VAR@16074..16075 - NAME@16074..16075 - IDENT@16074..16075 "i" - R_BRACK@16075..16076 "]" - R_PAREN@16076..16077 ")" - WHITESPACE@16077..16078 " " - EQ@16078..16080 "==" - WHITESPACE@16080..16081 " " - EXPR_APPLY@16081..16091 - EXPR_VAR@16081..16085 - NAME@16081..16085 - IDENT@16081..16085 "keyF" - ARGS_DESC@16085..16091 - L_PAREN@16085..16086 "(" - ARG@16086..16090 - EXPR_INDEX_EXPR@16086..16090 - LHS_EXPR@16086..16087 - EXPR_VAR@16086..16087 - NAME@16086..16087 - IDENT@16086..16087 "b" - L_BRACK@16087..16088 "[" - EXPR_VAR@16088..16089 - NAME@16088..16089 - IDENT@16088..16089 "j" - R_BRACK@16089..16090 "]" - R_PAREN@16090..16091 ")" - WHITESPACE@16091..16092 " " - THEN_KW@16092..16096 "then" - WHITESPACE@16096..16107 "\n " - TRUE_EXPR@16107..16146 - EXPR_APPLY@16107..16146 - EXPR_VAR@16107..16110 - NAME@16107..16110 - IDENT@16107..16110 "aux" - ARGS_DESC@16110..16146 - L_PAREN@16110..16111 "(" - ARG@16111..16112 - EXPR_VAR@16111..16112 - NAME@16111..16112 - IDENT@16111..16112 "a" - COMMA@16112..16113 "," - WHITESPACE@16113..16114 " " - ARG@16114..16115 - EXPR_VAR@16114..16115 - NAME@16114..16115 - IDENT@16114..16115 "b" - COMMA@16115..16116 "," - WHITESPACE@16116..16117 " " - ARG@16117..16122 - EXPR_BINARY@16117..16122 - LHS_EXPR@16117..16118 - EXPR_VAR@16117..16118 - NAME@16117..16118 - IDENT@16117..16118 "i" - WHITESPACE@16118..16119 " " - PLUS@16119..16120 "+" - WHITESPACE@16120..16121 " " - EXPR_NUMBER@16121..16122 - FLOAT@16121..16122 "1" - COMMA@16122..16123 "," - WHITESPACE@16123..16124 " " - ARG@16124..16129 - EXPR_BINARY@16124..16129 - LHS_EXPR@16124..16125 - EXPR_VAR@16124..16125 - NAME@16124..16125 - IDENT@16124..16125 "j" - WHITESPACE@16125..16126 " " - PLUS@16126..16127 "+" - WHITESPACE@16127..16128 " " - EXPR_NUMBER@16128..16129 - FLOAT@16128..16129 "1" - COMMA@16129..16130 "," - WHITESPACE@16130..16131 " " - ARG@16131..16134 - EXPR_VAR@16131..16134 - NAME@16131..16134 - IDENT@16131..16134 "acc" - R_PAREN@16134..16135 ")" - WHITESPACE@16135..16136 " " - TAILSTRICT_KW@16136..16146 "tailstrict" - WHITESPACE@16146..16155 "\n " - ELSE_KW@16155..16159 "else" - WHITESPACE@16159..16160 " " - FALSE_EXPR@16160..16305 - EXPR_IF_THEN_ELSE@16160..16305 - IF_KW@16160..16162 "if" - WHITESPACE@16162..16163 " " - EXPR_BINARY@16163..16186 - LHS_EXPR@16163..16173 - EXPR_APPLY@16163..16173 - EXPR_VAR@16163..16167 - NAME@16163..16167 - IDENT@16163..16167 "keyF" - ARGS_DESC@16167..16173 - L_PAREN@16167..16168 "(" - ARG@16168..16172 - EXPR_INDEX_EXPR@16168..16172 - LHS_EXPR@16168..16169 - EXPR_VAR@16168..16169 - NAME@16168..16169 - IDENT@16168..16169 "a" - L_BRACK@16169..16170 "[" - EXPR_VAR@16170..16171 - NAME@16170..16171 - IDENT@16170..16171 "i" - R_BRACK@16171..16172 "]" - R_PAREN@16172..16173 ")" - WHITESPACE@16173..16174 " " - LT@16174..16175 "<" - WHITESPACE@16175..16176 " " - EXPR_APPLY@16176..16186 - EXPR_VAR@16176..16180 - NAME@16176..16180 - IDENT@16176..16180 "keyF" - ARGS_DESC@16180..16186 - L_PAREN@16180..16181 "(" - ARG@16181..16185 - EXPR_INDEX_EXPR@16181..16185 - LHS_EXPR@16181..16182 - EXPR_VAR@16181..16182 - NAME@16181..16182 - IDENT@16181..16182 "b" - L_BRACK@16182..16183 "[" - EXPR_VAR@16183..16184 - NAME@16183..16184 - IDENT@16183..16184 "j" - R_BRACK@16184..16185 "]" - R_PAREN@16185..16186 ")" - WHITESPACE@16186..16187 " " - THEN_KW@16187..16191 "then" - WHITESPACE@16191..16202 "\n " - TRUE_EXPR@16202..16246 - EXPR_APPLY@16202..16246 - EXPR_VAR@16202..16205 - NAME@16202..16205 - IDENT@16202..16205 "aux" - ARGS_DESC@16205..16246 - L_PAREN@16205..16206 "(" - ARG@16206..16207 - EXPR_VAR@16206..16207 - NAME@16206..16207 - IDENT@16206..16207 "a" - COMMA@16207..16208 "," - WHITESPACE@16208..16209 " " - ARG@16209..16210 - EXPR_VAR@16209..16210 - NAME@16209..16210 - IDENT@16209..16210 "b" - COMMA@16210..16211 "," - WHITESPACE@16211..16212 " " - ARG@16212..16217 - EXPR_BINARY@16212..16217 - LHS_EXPR@16212..16213 - EXPR_VAR@16212..16213 - NAME@16212..16213 - IDENT@16212..16213 "i" - WHITESPACE@16213..16214 " " - PLUS@16214..16215 "+" - WHITESPACE@16215..16216 " " - EXPR_NUMBER@16216..16217 - FLOAT@16216..16217 "1" - COMMA@16217..16218 "," - WHITESPACE@16218..16219 " " - ARG@16219..16220 - EXPR_VAR@16219..16220 - NAME@16219..16220 - IDENT@16219..16220 "j" - COMMA@16220..16221 "," - WHITESPACE@16221..16222 " " - ARG@16222..16234 - EXPR_BINARY@16222..16234 - LHS_EXPR@16222..16225 - EXPR_VAR@16222..16225 - NAME@16222..16225 - IDENT@16222..16225 "acc" - WHITESPACE@16225..16226 " " - PLUS@16226..16227 "+" - WHITESPACE@16227..16228 " " - EXPR_ARRAY@16228..16234 - L_BRACK@16228..16229 "[" - EXPR_INDEX_EXPR@16229..16233 - LHS_EXPR@16229..16230 - EXPR_VAR@16229..16230 - NAME@16229..16230 - IDENT@16229..16230 "a" - L_BRACK@16230..16231 "[" - EXPR_VAR@16231..16232 - NAME@16231..16232 - IDENT@16231..16232 "i" - R_BRACK@16232..16233 "]" - R_BRACK@16233..16234 "]" - R_PAREN@16234..16235 ")" - WHITESPACE@16235..16236 " " - TAILSTRICT_KW@16236..16246 "tailstrict" - WHITESPACE@16246..16255 "\n " - ELSE_KW@16255..16259 "else" - WHITESPACE@16259..16270 "\n " - FALSE_EXPR@16270..16305 - EXPR_APPLY@16270..16305 - EXPR_VAR@16270..16273 - NAME@16270..16273 - IDENT@16270..16273 "aux" - ARGS_DESC@16273..16305 - L_PAREN@16273..16274 "(" - ARG@16274..16275 - EXPR_VAR@16274..16275 - NAME@16274..16275 - IDENT@16274..16275 "a" - COMMA@16275..16276 "," - WHITESPACE@16276..16277 " " - ARG@16277..16278 - EXPR_VAR@16277..16278 - NAME@16277..16278 - IDENT@16277..16278 "b" - COMMA@16278..16279 "," - WHITESPACE@16279..16280 " " - ARG@16280..16281 - EXPR_VAR@16280..16281 - NAME@16280..16281 - IDENT@16280..16281 "i" - COMMA@16281..16282 "," - WHITESPACE@16282..16283 " " - ARG@16283..16288 - EXPR_BINARY@16283..16288 - LHS_EXPR@16283..16284 - EXPR_VAR@16283..16284 - NAME@16283..16284 - IDENT@16283..16284 "j" - WHITESPACE@16284..16285 " " - PLUS@16285..16286 "+" - WHITESPACE@16286..16287 " " - EXPR_NUMBER@16287..16288 - FLOAT@16287..16288 "1" - COMMA@16288..16289 "," - WHITESPACE@16289..16290 " " - ARG@16290..16293 - EXPR_VAR@16290..16293 - NAME@16290..16293 - IDENT@16290..16293 "acc" - R_PAREN@16293..16294 ")" - WHITESPACE@16294..16295 " " - TAILSTRICT_KW@16295..16305 "tailstrict" - SEMI@16305..16306 ";" - WHITESPACE@16306..16311 "\n " - EXPR_APPLY@16311..16341 - EXPR_VAR@16311..16314 - NAME@16311..16314 - IDENT@16311..16314 "aux" - ARGS_DESC@16314..16341 - L_PAREN@16314..16315 "(" - ARG@16315..16316 - EXPR_VAR@16315..16316 - NAME@16315..16316 - IDENT@16315..16316 "a" - COMMA@16316..16317 "," - WHITESPACE@16317..16318 " " - ARG@16318..16319 - EXPR_VAR@16318..16319 - NAME@16318..16319 - IDENT@16318..16319 "b" - COMMA@16319..16320 "," - WHITESPACE@16320..16321 " " - ARG@16321..16322 - EXPR_NUMBER@16321..16322 - FLOAT@16321..16322 "0" - COMMA@16322..16323 "," - WHITESPACE@16323..16324 " " - ARG@16324..16325 - EXPR_NUMBER@16324..16325 - FLOAT@16324..16325 "0" - COMMA@16325..16326 "," - WHITESPACE@16326..16327 " " - ARG@16327..16329 - EXPR_ARRAY@16327..16329 - L_BRACK@16327..16328 "[" - R_BRACK@16328..16329 "]" - R_PAREN@16329..16330 ")" - WHITESPACE@16330..16331 " " - TAILSTRICT_KW@16331..16341 "tailstrict" - COMMA@16341..16342 "," - WHITESPACE@16342..16346 "\n\n " - MEMBER_FIELD@16346..17134 - FIELD_METHOD@16346..17134 - FIELD_NAME_FIXED@16346..16356 - NAME@16346..16356 - IDENT@16346..16356 "mergePatch" - PARAMS_DESC@16356..16371 - L_PAREN@16356..16357 "(" - PARAM@16357..16363 - DESTRUCT_FULL@16357..16363 - NAME@16357..16363 - IDENT@16357..16363 "target" - COMMA@16363..16364 "," - WHITESPACE@16364..16365 " " - PARAM@16365..16370 - DESTRUCT_FULL@16365..16370 - NAME@16365..16370 - IDENT@16365..16370 "patch" - R_PAREN@16370..16371 ")" - COLONCOLON@16371..16373 "::" - WHITESPACE@16373..16378 "\n " - EXPR_IF_THEN_ELSE@16378..17134 - IF_KW@16378..16380 "if" - WHITESPACE@16380..16381 " " - EXPR_APPLY@16381..16400 - EXPR_INDEX@16381..16393 - EXPR_VAR@16381..16384 - NAME@16381..16384 - IDENT@16381..16384 "std" - DOT@16384..16385 "." - NAME@16385..16393 - IDENT@16385..16393 "isObject" - ARGS_DESC@16393..16400 - L_PAREN@16393..16394 "(" - ARG@16394..16399 - EXPR_VAR@16394..16399 - NAME@16394..16399 - IDENT@16394..16399 "patch" - R_PAREN@16399..16400 ")" - WHITESPACE@16400..16401 " " - THEN_KW@16401..16405 "then" - WHITESPACE@16405..16412 "\n " - TRUE_EXPR@16412..17113 - EXPR_LOCAL@16412..17113 - LOCAL_KW@16412..16417 "local" - WHITESPACE@16417..16418 " " - BIND_DESTRUCT@16418..16485 - DESTRUCT_FULL@16418..16431 - NAME@16418..16431 - IDENT@16418..16431 "target_object" - WHITESPACE@16431..16432 " " - ASSIGN@16432..16433 "=" - WHITESPACE@16433..16442 "\n " - EXPR_IF_THEN_ELSE@16442..16485 - IF_KW@16442..16444 "if" - WHITESPACE@16444..16445 " " - EXPR_APPLY@16445..16465 - EXPR_INDEX@16445..16457 - EXPR_VAR@16445..16448 - NAME@16445..16448 - IDENT@16445..16448 "std" - DOT@16448..16449 "." - NAME@16449..16457 - IDENT@16449..16457 "isObject" - ARGS_DESC@16457..16465 - L_PAREN@16457..16458 "(" - ARG@16458..16464 - EXPR_VAR@16458..16464 - NAME@16458..16464 - IDENT@16458..16464 "target" - R_PAREN@16464..16465 ")" - WHITESPACE@16465..16466 " " - THEN_KW@16466..16470 "then" - WHITESPACE@16470..16471 " " - TRUE_EXPR@16471..16477 - EXPR_VAR@16471..16477 - NAME@16471..16477 - IDENT@16471..16477 "target" - WHITESPACE@16477..16478 " " - ELSE_KW@16478..16482 "else" - WHITESPACE@16482..16483 " " - FALSE_EXPR@16483..16485 - EXPR_OBJECT@16483..16485 - OBJ_BODY_MEMBER_LIST@16483..16485 - L_BRACE@16483..16484 "{" - R_BRACE@16484..16485 "}" - SEMI@16485..16486 ";" - WHITESPACE@16486..16494 "\n\n " - EXPR_LOCAL@16494..17113 - LOCAL_KW@16494..16499 "local" - WHITESPACE@16499..16500 " " - BIND_DESTRUCT@16500..16599 - DESTRUCT_FULL@16500..16513 - NAME@16500..16513 - IDENT@16500..16513 "target_fields" - WHITESPACE@16513..16514 " " - ASSIGN@16514..16515 "=" - WHITESPACE@16515..16524 "\n " - EXPR_IF_THEN_ELSE@16524..16599 - IF_KW@16524..16526 "if" - WHITESPACE@16526..16527 " " - EXPR_APPLY@16527..16554 - EXPR_INDEX@16527..16539 - EXPR_VAR@16527..16530 - NAME@16527..16530 - IDENT@16527..16530 "std" - DOT@16530..16531 "." - NAME@16531..16539 - IDENT@16531..16539 "isObject" - ARGS_DESC@16539..16554 - L_PAREN@16539..16540 "(" - ARG@16540..16553 - EXPR_VAR@16540..16553 - NAME@16540..16553 - IDENT@16540..16553 "target_object" - R_PAREN@16553..16554 ")" - WHITESPACE@16554..16555 " " - THEN_KW@16555..16559 "then" - WHITESPACE@16559..16560 " " - TRUE_EXPR@16560..16591 - EXPR_APPLY@16560..16591 - EXPR_INDEX@16560..16576 - EXPR_VAR@16560..16563 - NAME@16560..16563 - IDENT@16560..16563 "std" - DOT@16563..16564 "." - NAME@16564..16576 - IDENT@16564..16576 "objectFields" - ARGS_DESC@16576..16591 - L_PAREN@16576..16577 "(" - ARG@16577..16590 - EXPR_VAR@16577..16590 - NAME@16577..16590 - IDENT@16577..16590 "target_object" - R_PAREN@16590..16591 ")" - WHITESPACE@16591..16592 " " - ELSE_KW@16592..16596 "else" - WHITESPACE@16596..16597 " " - FALSE_EXPR@16597..16599 - EXPR_ARRAY@16597..16599 - L_BRACK@16597..16598 "[" - R_BRACK@16598..16599 "]" - SEMI@16599..16600 ";" - WHITESPACE@16600..16608 "\n\n " - EXPR_LOCAL@16608..17113 - LOCAL_KW@16608..16613 "local" - WHITESPACE@16613..16614 " " - BIND_DESTRUCT@16614..16684 - DESTRUCT_FULL@16614..16625 - NAME@16614..16625 - IDENT@16614..16625 "null_fields" - WHITESPACE@16625..16626 " " - ASSIGN@16626..16627 "=" - WHITESPACE@16627..16628 " " - EXPR_ARRAY_COMP@16628..16684 - L_BRACK@16628..16629 "[" - EXPR_VAR@16629..16630 - NAME@16629..16630 - IDENT@16629..16630 "k" - WHITESPACE@16630..16631 " " - FOR_SPEC@16631..16663 - FOR_KW@16631..16634 "for" - WHITESPACE@16634..16635 " " - NAME@16635..16636 - IDENT@16635..16636 "k" - WHITESPACE@16636..16637 " " - IN_KW@16637..16639 "in" - WHITESPACE@16639..16640 " " - EXPR_APPLY@16640..16663 - EXPR_INDEX@16640..16656 - EXPR_VAR@16640..16643 - NAME@16640..16643 - IDENT@16640..16643 "std" - DOT@16643..16644 "." - NAME@16644..16656 - IDENT@16644..16656 "objectFields" - ARGS_DESC@16656..16663 - L_PAREN@16656..16657 "(" - ARG@16657..16662 - EXPR_VAR@16657..16662 - NAME@16657..16662 - IDENT@16657..16662 "patch" - R_PAREN@16662..16663 ")" - WHITESPACE@16663..16664 " " - IF_SPEC@16664..16683 - IF_KW@16664..16666 "if" - WHITESPACE@16666..16667 " " - EXPR_BINARY@16667..16683 - LHS_EXPR@16667..16675 - EXPR_INDEX_EXPR@16667..16675 - LHS_EXPR@16667..16672 - EXPR_VAR@16667..16672 - NAME@16667..16672 - IDENT@16667..16672 "patch" - L_BRACK@16672..16673 "[" - EXPR_VAR@16673..16674 - NAME@16673..16674 - IDENT@16673..16674 "k" - R_BRACK@16674..16675 "]" - WHITESPACE@16675..16676 " " - EQ@16676..16678 "==" - WHITESPACE@16678..16679 " " - EXPR_LITERAL@16679..16683 - NULL_KW@16679..16683 "null" - R_BRACK@16683..16684 "]" - SEMI@16684..16685 ";" - WHITESPACE@16685..16692 "\n " - EXPR_LOCAL@16692..17113 - LOCAL_KW@16692..16697 "local" - WHITESPACE@16697..16698 " " - BIND_DESTRUCT@16698..16764 - DESTRUCT_FULL@16698..16709 - NAME@16698..16709 - IDENT@16698..16709 "both_fields" - WHITESPACE@16709..16710 " " - ASSIGN@16710..16711 "=" - WHITESPACE@16711..16712 " " - EXPR_APPLY@16712..16764 - EXPR_INDEX@16712..16724 - EXPR_VAR@16712..16715 - NAME@16712..16715 - IDENT@16712..16715 "std" - DOT@16715..16716 "." - NAME@16716..16724 - IDENT@16716..16724 "setUnion" - ARGS_DESC@16724..16764 - L_PAREN@16724..16725 "(" - ARG@16725..16738 - EXPR_VAR@16725..16738 - NAME@16725..16738 - IDENT@16725..16738 "target_fields" - COMMA@16738..16739 "," - WHITESPACE@16739..16740 " " - ARG@16740..16763 - EXPR_APPLY@16740..16763 - EXPR_INDEX@16740..16756 - EXPR_VAR@16740..16743 - NAME@16740..16743 - IDENT@16740..16743 "std" - DOT@16743..16744 "." - NAME@16744..16756 - IDENT@16744..16756 "objectFields" - ARGS_DESC@16756..16763 - L_PAREN@16756..16757 "(" - ARG@16757..16762 - EXPR_VAR@16757..16762 - NAME@16757..16762 - IDENT@16757..16762 "patch" - R_PAREN@16762..16763 ")" - R_PAREN@16763..16764 ")" - SEMI@16764..16765 ";" - WHITESPACE@16765..16773 "\n\n " - EXPR_OBJECT@16773..17113 - OBJ_BODY_MEMBER_LIST@16773..17113 - L_BRACE@16773..16774 "{" - WHITESPACE@16774..16783 "\n " - MEMBER_FIELD@16783..17105 - FIELD_NORMAL@16783..17050 - FIELD_NAME_DYNAMIC@16783..16786 - L_BRACK@16783..16784 "[" - EXPR_VAR@16784..16785 - NAME@16784..16785 - IDENT@16784..16785 "k" - R_BRACK@16785..16786 "]" - COLON@16786..16787 ":" - WHITESPACE@16787..16798 "\n " - EXPR_IF_THEN_ELSE@16798..17050 - IF_KW@16798..16800 "if" - WHITESPACE@16800..16801 " " - EXPR_UNARY@16801..16825 - NOT@16801..16802 "!" - EXPR_APPLY@16802..16825 - EXPR_INDEX@16802..16815 - EXPR_VAR@16802..16805 - NAME@16802..16805 - IDENT@16802..16805 "std" - DOT@16805..16806 "." - NAME@16806..16815 - IDENT@16806..16815 "objectHas" - ARGS_DESC@16815..16825 - L_PAREN@16815..16816 "(" - ARG@16816..16821 - EXPR_VAR@16816..16821 - NAME@16816..16821 - IDENT@16816..16821 "patch" - COMMA@16821..16822 "," - WHITESPACE@16822..16823 " " - ARG@16823..16824 - EXPR_VAR@16823..16824 - NAME@16823..16824 - IDENT@16823..16824 "k" - R_PAREN@16824..16825 ")" - WHITESPACE@16825..16826 " " - THEN_KW@16826..16830 "then" - WHITESPACE@16830..16843 "\n " - TRUE_EXPR@16843..16859 - EXPR_INDEX_EXPR@16843..16859 - LHS_EXPR@16843..16856 - EXPR_VAR@16843..16856 - NAME@16843..16856 - IDENT@16843..16856 "target_object" - L_BRACK@16856..16857 "[" - EXPR_VAR@16857..16858 - NAME@16857..16858 - IDENT@16857..16858 "k" - R_BRACK@16858..16859 "]" - WHITESPACE@16859..16870 "\n " - ELSE_KW@16870..16874 "else" - WHITESPACE@16874..16875 " " - FALSE_EXPR@16875..17050 - EXPR_IF_THEN_ELSE@16875..17050 - IF_KW@16875..16877 "if" - WHITESPACE@16877..16878 " " - EXPR_UNARY@16878..16910 - NOT@16878..16879 "!" - EXPR_APPLY@16879..16910 - EXPR_INDEX@16879..16892 - EXPR_VAR@16879..16882 - NAME@16879..16882 - IDENT@16879..16882 "std" - DOT@16882..16883 "." - NAME@16883..16892 - IDENT@16883..16892 "objectHas" - ARGS_DESC@16892..16910 - L_PAREN@16892..16893 "(" - ARG@16893..16906 - EXPR_VAR@16893..16906 - NAME@16893..16906 - IDENT@16893..16906 "target_object" - COMMA@16906..16907 "," - WHITESPACE@16907..16908 " " - ARG@16908..16909 - EXPR_VAR@16908..16909 - NAME@16908..16909 - IDENT@16908..16909 "k" - R_PAREN@16909..16910 ")" - WHITESPACE@16910..16911 " " - THEN_KW@16911..16915 "then" - WHITESPACE@16915..16928 "\n " - TRUE_EXPR@16928..16969 - EXPR_APPLY@16928..16969 - EXPR_INDEX@16928..16942 - EXPR_VAR@16928..16931 - NAME@16928..16931 - IDENT@16928..16931 "std" - DOT@16931..16932 "." - NAME@16932..16942 - IDENT@16932..16942 "mergePatch" - ARGS_DESC@16942..16969 - L_PAREN@16942..16943 "(" - ARG@16943..16947 - EXPR_LITERAL@16943..16947 - NULL_KW@16943..16947 "null" - COMMA@16947..16948 "," - WHITESPACE@16948..16949 " " - ARG@16949..16957 - EXPR_INDEX_EXPR@16949..16957 - LHS_EXPR@16949..16954 - EXPR_VAR@16949..16954 - NAME@16949..16954 - IDENT@16949..16954 "patch" - L_BRACK@16954..16955 "[" - EXPR_VAR@16955..16956 - NAME@16955..16956 - IDENT@16955..16956 "k" - R_BRACK@16956..16957 "]" - R_PAREN@16957..16958 ")" - WHITESPACE@16958..16959 " " - TAILSTRICT_KW@16959..16969 "tailstrict" - WHITESPACE@16969..16980 "\n " - ELSE_KW@16980..16984 "else" - WHITESPACE@16984..16997 "\n " - FALSE_EXPR@16997..17050 - EXPR_APPLY@16997..17050 - EXPR_INDEX@16997..17011 - EXPR_VAR@16997..17000 - NAME@16997..17000 - IDENT@16997..17000 "std" - DOT@17000..17001 "." - NAME@17001..17011 - IDENT@17001..17011 "mergePatch" - ARGS_DESC@17011..17050 - L_PAREN@17011..17012 "(" - ARG@17012..17028 - EXPR_INDEX_EXPR@17012..17028 - LHS_EXPR@17012..17025 - EXPR_VAR@17012..17025 - NAME@17012..17025 - IDENT@17012..17025 "target_object" - L_BRACK@17025..17026 "[" - EXPR_VAR@17026..17027 - NAME@17026..17027 - IDENT@17026..17027 "k" - R_BRACK@17027..17028 "]" - COMMA@17028..17029 "," - WHITESPACE@17029..17030 " " - ARG@17030..17038 - EXPR_INDEX_EXPR@17030..17038 - LHS_EXPR@17030..17035 - EXPR_VAR@17030..17035 - NAME@17030..17035 - IDENT@17030..17035 "patch" - L_BRACK@17035..17036 "[" - EXPR_VAR@17036..17037 - NAME@17036..17037 - IDENT@17036..17037 "k" - R_BRACK@17037..17038 "]" - R_PAREN@17038..17039 ")" - WHITESPACE@17039..17040 " " - TAILSTRICT_KW@17040..17050 "tailstrict" - WHITESPACE@17050..17059 "\n " - FOR_SPEC@17059..17105 - FOR_KW@17059..17062 "for" - WHITESPACE@17062..17063 " " - NAME@17063..17064 - IDENT@17063..17064 "k" - WHITESPACE@17064..17065 " " - IN_KW@17065..17067 "in" - WHITESPACE@17067..17068 " " - EXPR_APPLY@17068..17105 - EXPR_INDEX@17068..17079 - EXPR_VAR@17068..17071 - NAME@17068..17071 - IDENT@17068..17071 "std" - DOT@17071..17072 "." - NAME@17072..17079 - IDENT@17072..17079 "setDiff" - ARGS_DESC@17079..17105 - L_PAREN@17079..17080 "(" - ARG@17080..17091 - EXPR_VAR@17080..17091 - NAME@17080..17091 - IDENT@17080..17091 "both_fields" - COMMA@17091..17092 "," - WHITESPACE@17092..17093 " " - ARG@17093..17104 - EXPR_VAR@17093..17104 - NAME@17093..17104 - IDENT@17093..17104 "null_fields" - R_PAREN@17104..17105 ")" - WHITESPACE@17105..17112 "\n " - R_BRACE@17112..17113 "}" - WHITESPACE@17113..17118 "\n " - ELSE_KW@17118..17122 "else" - WHITESPACE@17122..17129 "\n " - FALSE_EXPR@17129..17134 - EXPR_VAR@17129..17134 - NAME@17129..17134 - IDENT@17129..17134 "patch" - COMMA@17134..17135 "," - WHITESPACE@17135..17139 "\n\n " - MEMBER_FIELD@17139..17249 - FIELD_METHOD@17139..17249 - FIELD_NAME_FIXED@17139..17142 - NAME@17139..17142 - IDENT@17139..17142 "get" - PARAMS_DESC@17142..17183 - L_PAREN@17142..17143 "(" - PARAM@17143..17144 - DESTRUCT_FULL@17143..17144 - NAME@17143..17144 - IDENT@17143..17144 "o" - COMMA@17144..17145 "," - WHITESPACE@17145..17146 " " - PARAM@17146..17147 - DESTRUCT_FULL@17146..17147 - NAME@17146..17147 - IDENT@17146..17147 "f" - COMMA@17147..17148 "," - WHITESPACE@17148..17149 " " - PARAM@17149..17163 - DESTRUCT_FULL@17149..17156 - NAME@17149..17156 - IDENT@17149..17156 "default" - WHITESPACE@17156..17157 " " - ASSIGN@17157..17158 "=" - WHITESPACE@17158..17159 " " - EXPR_LITERAL@17159..17163 - NULL_KW@17159..17163 "null" - COMMA@17163..17164 "," - WHITESPACE@17164..17165 " " - PARAM@17165..17182 - DESTRUCT_FULL@17165..17175 - NAME@17165..17175 - IDENT@17165..17175 "inc_hidden" - WHITESPACE@17175..17176 " " - ASSIGN@17176..17177 "=" - WHITESPACE@17177..17178 " " - EXPR_LITERAL@17178..17182 - TRUE_KW@17178..17182 "true" - R_PAREN@17182..17183 ")" - COLONCOLON@17183..17185 "::" - WHITESPACE@17185..17190 "\n " - EXPR_IF_THEN_ELSE@17190..17249 - IF_KW@17190..17192 "if" - WHITESPACE@17192..17193 " " - EXPR_APPLY@17193..17226 - EXPR_INDEX@17193..17208 - EXPR_VAR@17193..17196 - NAME@17193..17196 - IDENT@17193..17196 "std" - DOT@17196..17197 "." - NAME@17197..17208 - IDENT@17197..17208 "objectHasEx" - ARGS_DESC@17208..17226 - L_PAREN@17208..17209 "(" - ARG@17209..17210 - EXPR_VAR@17209..17210 - NAME@17209..17210 - IDENT@17209..17210 "o" - COMMA@17210..17211 "," - WHITESPACE@17211..17212 " " - ARG@17212..17213 - EXPR_VAR@17212..17213 - NAME@17212..17213 - IDENT@17212..17213 "f" - COMMA@17213..17214 "," - WHITESPACE@17214..17215 " " - ARG@17215..17225 - EXPR_VAR@17215..17225 - NAME@17215..17225 - IDENT@17215..17225 "inc_hidden" - R_PAREN@17225..17226 ")" - WHITESPACE@17226..17227 " " - THEN_KW@17227..17231 "then" - WHITESPACE@17231..17232 " " - TRUE_EXPR@17232..17236 - EXPR_INDEX_EXPR@17232..17236 - LHS_EXPR@17232..17233 - EXPR_VAR@17232..17233 - NAME@17232..17233 - IDENT@17232..17233 "o" - L_BRACK@17233..17234 "[" - EXPR_VAR@17234..17235 - NAME@17234..17235 - IDENT@17234..17235 "f" - R_BRACK@17235..17236 "]" - WHITESPACE@17236..17237 " " - ELSE_KW@17237..17241 "else" - WHITESPACE@17241..17242 " " - FALSE_EXPR@17242..17249 - EXPR_VAR@17242..17249 - NAME@17242..17249 - IDENT@17242..17249 "default" - COMMA@17249..17250 "," - WHITESPACE@17250..17254 "\n\n " - MEMBER_FIELD@17254..17304 - FIELD_METHOD@17254..17304 - FIELD_NAME_FIXED@17254..17266 - NAME@17254..17266 - IDENT@17254..17266 "objectFields" - PARAMS_DESC@17266..17269 - L_PAREN@17266..17267 "(" - PARAM@17267..17268 - DESTRUCT_FULL@17267..17268 - NAME@17267..17268 - IDENT@17267..17268 "o" - R_PAREN@17268..17269 ")" - COLONCOLON@17269..17271 "::" - WHITESPACE@17271..17276 "\n " - EXPR_APPLY@17276..17304 - EXPR_INDEX@17276..17294 - EXPR_VAR@17276..17279 - NAME@17276..17279 - IDENT@17276..17279 "std" - DOT@17279..17280 "." - NAME@17280..17294 - IDENT@17280..17294 "objectFieldsEx" - ARGS_DESC@17294..17304 - L_PAREN@17294..17295 "(" - ARG@17295..17296 - EXPR_VAR@17295..17296 - NAME@17295..17296 - IDENT@17295..17296 "o" - COMMA@17296..17297 "," - WHITESPACE@17297..17298 " " - ARG@17298..17303 - EXPR_LITERAL@17298..17303 - FALSE_KW@17298..17303 "false" - R_PAREN@17303..17304 ")" - COMMA@17304..17305 "," - WHITESPACE@17305..17309 "\n\n " - MEMBER_FIELD@17309..17361 - FIELD_METHOD@17309..17361 - FIELD_NAME_FIXED@17309..17324 - NAME@17309..17324 - IDENT@17309..17324 "objectFieldsAll" - PARAMS_DESC@17324..17327 - L_PAREN@17324..17325 "(" - PARAM@17325..17326 - DESTRUCT_FULL@17325..17326 - NAME@17325..17326 - IDENT@17325..17326 "o" - R_PAREN@17326..17327 ")" - COLONCOLON@17327..17329 "::" - WHITESPACE@17329..17334 "\n " - EXPR_APPLY@17334..17361 - EXPR_INDEX@17334..17352 - EXPR_VAR@17334..17337 - NAME@17334..17337 - IDENT@17334..17337 "std" - DOT@17337..17338 "." - NAME@17338..17352 - IDENT@17338..17352 "objectFieldsEx" - ARGS_DESC@17352..17361 - L_PAREN@17352..17353 "(" - ARG@17353..17354 - EXPR_VAR@17353..17354 - NAME@17353..17354 - IDENT@17353..17354 "o" - COMMA@17354..17355 "," - WHITESPACE@17355..17356 " " - ARG@17356..17360 - EXPR_LITERAL@17356..17360 - TRUE_KW@17356..17360 "true" - R_PAREN@17360..17361 ")" - COMMA@17361..17362 "," - WHITESPACE@17362..17366 "\n\n " - MEMBER_FIELD@17366..17416 - FIELD_METHOD@17366..17416 - FIELD_NAME_FIXED@17366..17375 - NAME@17366..17375 - IDENT@17366..17375 "objectHas" - PARAMS_DESC@17375..17381 - L_PAREN@17375..17376 "(" - PARAM@17376..17377 - DESTRUCT_FULL@17376..17377 - NAME@17376..17377 - IDENT@17376..17377 "o" - COMMA@17377..17378 "," - WHITESPACE@17378..17379 " " - PARAM@17379..17380 - DESTRUCT_FULL@17379..17380 - NAME@17379..17380 - IDENT@17379..17380 "f" - R_PAREN@17380..17381 ")" - COLONCOLON@17381..17383 "::" - WHITESPACE@17383..17388 "\n " - EXPR_APPLY@17388..17416 - EXPR_INDEX@17388..17403 - EXPR_VAR@17388..17391 - NAME@17388..17391 - IDENT@17388..17391 "std" - DOT@17391..17392 "." - NAME@17392..17403 - IDENT@17392..17403 "objectHasEx" - ARGS_DESC@17403..17416 - L_PAREN@17403..17404 "(" - ARG@17404..17405 - EXPR_VAR@17404..17405 - NAME@17404..17405 - IDENT@17404..17405 "o" - COMMA@17405..17406 "," - WHITESPACE@17406..17407 " " - ARG@17407..17408 - EXPR_VAR@17407..17408 - NAME@17407..17408 - IDENT@17407..17408 "f" - COMMA@17408..17409 "," - WHITESPACE@17409..17410 " " - ARG@17410..17415 - EXPR_LITERAL@17410..17415 - FALSE_KW@17410..17415 "false" - R_PAREN@17415..17416 ")" - COMMA@17416..17417 "," - WHITESPACE@17417..17421 "\n\n " - MEMBER_FIELD@17421..17473 - FIELD_METHOD@17421..17473 - FIELD_NAME_FIXED@17421..17433 - NAME@17421..17433 - IDENT@17421..17433 "objectHasAll" - PARAMS_DESC@17433..17439 - L_PAREN@17433..17434 "(" - PARAM@17434..17435 - DESTRUCT_FULL@17434..17435 - NAME@17434..17435 - IDENT@17434..17435 "o" - COMMA@17435..17436 "," - WHITESPACE@17436..17437 " " - PARAM@17437..17438 - DESTRUCT_FULL@17437..17438 - NAME@17437..17438 - IDENT@17437..17438 "f" - R_PAREN@17438..17439 ")" - COLONCOLON@17439..17441 "::" - WHITESPACE@17441..17446 "\n " - EXPR_APPLY@17446..17473 - EXPR_INDEX@17446..17461 - EXPR_VAR@17446..17449 - NAME@17446..17449 - IDENT@17446..17449 "std" - DOT@17449..17450 "." - NAME@17450..17461 - IDENT@17450..17461 "objectHasEx" - ARGS_DESC@17461..17473 - L_PAREN@17461..17462 "(" - ARG@17462..17463 - EXPR_VAR@17462..17463 - NAME@17462..17463 - IDENT@17462..17463 "o" - COMMA@17463..17464 "," - WHITESPACE@17464..17465 " " - ARG@17465..17466 - EXPR_VAR@17465..17466 - NAME@17465..17466 - IDENT@17465..17466 "f" - COMMA@17466..17467 "," - WHITESPACE@17467..17468 " " - ARG@17468..17472 - EXPR_LITERAL@17468..17472 - TRUE_KW@17468..17472 "true" - R_PAREN@17472..17473 ")" - COMMA@17473..17474 "," - WHITESPACE@17474..17478 "\n\n " - MEMBER_FIELD@17478..17535 - FIELD_METHOD@17478..17535 - FIELD_NAME_FIXED@17478..17490 - NAME@17478..17490 - IDENT@17478..17490 "objectValues" - PARAMS_DESC@17490..17493 - L_PAREN@17490..17491 "(" - PARAM@17491..17492 - DESTRUCT_FULL@17491..17492 - NAME@17491..17492 - IDENT@17491..17492 "o" - R_PAREN@17492..17493 ")" - COLONCOLON@17493..17495 "::" - WHITESPACE@17495..17500 "\n " - EXPR_ARRAY_COMP@17500..17535 - L_BRACK@17500..17501 "[" - EXPR_INDEX_EXPR@17501..17505 - LHS_EXPR@17501..17502 - EXPR_VAR@17501..17502 - NAME@17501..17502 - IDENT@17501..17502 "o" - L_BRACK@17502..17503 "[" - EXPR_VAR@17503..17504 - NAME@17503..17504 - IDENT@17503..17504 "k" - R_BRACK@17504..17505 "]" - WHITESPACE@17505..17506 " " - FOR_SPEC@17506..17534 - FOR_KW@17506..17509 "for" - WHITESPACE@17509..17510 " " - NAME@17510..17511 - IDENT@17510..17511 "k" - WHITESPACE@17511..17512 " " - IN_KW@17512..17514 "in" - WHITESPACE@17514..17515 " " - EXPR_APPLY@17515..17534 - EXPR_INDEX@17515..17531 - EXPR_VAR@17515..17518 - NAME@17515..17518 - IDENT@17515..17518 "std" - DOT@17518..17519 "." - NAME@17519..17531 - IDENT@17519..17531 "objectFields" - ARGS_DESC@17531..17534 - L_PAREN@17531..17532 "(" - ARG@17532..17533 - EXPR_VAR@17532..17533 - NAME@17532..17533 - IDENT@17532..17533 "o" - R_PAREN@17533..17534 ")" - R_BRACK@17534..17535 "]" - COMMA@17535..17536 "," - WHITESPACE@17536..17540 "\n\n " - MEMBER_FIELD@17540..17603 - FIELD_METHOD@17540..17603 - FIELD_NAME_FIXED@17540..17555 - NAME@17540..17555 - IDENT@17540..17555 "objectValuesAll" - PARAMS_DESC@17555..17558 - L_PAREN@17555..17556 "(" - PARAM@17556..17557 - DESTRUCT_FULL@17556..17557 - NAME@17556..17557 - IDENT@17556..17557 "o" - R_PAREN@17557..17558 ")" - COLONCOLON@17558..17560 "::" - WHITESPACE@17560..17565 "\n " - EXPR_ARRAY_COMP@17565..17603 - L_BRACK@17565..17566 "[" - EXPR_INDEX_EXPR@17566..17570 - LHS_EXPR@17566..17567 - EXPR_VAR@17566..17567 - NAME@17566..17567 - IDENT@17566..17567 "o" - L_BRACK@17567..17568 "[" - EXPR_VAR@17568..17569 - NAME@17568..17569 - IDENT@17568..17569 "k" - R_BRACK@17569..17570 "]" - WHITESPACE@17570..17571 " " - FOR_SPEC@17571..17602 - FOR_KW@17571..17574 "for" - WHITESPACE@17574..17575 " " - NAME@17575..17576 - IDENT@17575..17576 "k" - WHITESPACE@17576..17577 " " - IN_KW@17577..17579 "in" - WHITESPACE@17579..17580 " " - EXPR_APPLY@17580..17602 - EXPR_INDEX@17580..17599 - EXPR_VAR@17580..17583 - NAME@17580..17583 - IDENT@17580..17583 "std" - DOT@17583..17584 "." - NAME@17584..17599 - IDENT@17584..17599 "objectFieldsAll" - ARGS_DESC@17599..17602 - L_PAREN@17599..17600 "(" - ARG@17600..17601 - EXPR_VAR@17600..17601 - NAME@17600..17601 - IDENT@17600..17601 "o" - R_PAREN@17601..17602 ")" - R_BRACK@17602..17603 "]" - COMMA@17603..17604 "," - WHITESPACE@17604..17608 "\n\n " - MEMBER_FIELD@17608..17635 - FIELD_NORMAL@17608..17635 - FIELD_NAME_FIXED@17608..17614 - NAME@17608..17614 - IDENT@17608..17614 "equals" - COLONCOLON@17614..17616 "::" - WHITESPACE@17616..17617 " " - EXPR_INTRINSIC@17617..17635 - INTRINSIC@17617..17627 "$intrinsic" - L_PAREN@17627..17628 "(" - NAME@17628..17634 - IDENT@17628..17634 "equals" - R_PAREN@17634..17635 ")" - COMMA@17635..17636 "," - WHITESPACE@17636..17640 "\n\n " - MEMBER_FIELD@17640..17774 - FIELD_METHOD@17640..17774 - FIELD_NAME_FIXED@17640..17651 - NAME@17640..17651 - IDENT@17640..17651 "resolvePath" - PARAMS_DESC@17651..17657 - L_PAREN@17651..17652 "(" - PARAM@17652..17653 - DESTRUCT_FULL@17652..17653 - NAME@17652..17653 - IDENT@17652..17653 "f" - COMMA@17653..17654 "," - WHITESPACE@17654..17655 " " - PARAM@17655..17656 - DESTRUCT_FULL@17655..17656 - NAME@17655..17656 - IDENT@17655..17656 "r" - R_PAREN@17656..17657 ")" - COLONCOLON@17657..17659 "::" - WHITESPACE@17659..17664 "\n " - EXPR_LOCAL@17664..17774 - LOCAL_KW@17664..17669 "local" - WHITESPACE@17669..17670 " " - BIND_DESTRUCT@17670..17693 - DESTRUCT_FULL@17670..17673 - NAME@17670..17673 - IDENT@17670..17673 "arr" - WHITESPACE@17673..17674 " " - ASSIGN@17674..17675 "=" - WHITESPACE@17675..17676 " " - EXPR_APPLY@17676..17693 - EXPR_INDEX@17676..17685 - EXPR_VAR@17676..17679 - NAME@17676..17679 - IDENT@17676..17679 "std" - DOT@17679..17680 "." - NAME@17680..17685 - IDENT@17680..17685 "split" - ARGS_DESC@17685..17693 - L_PAREN@17685..17686 "(" - ARG@17686..17687 - EXPR_VAR@17686..17687 - NAME@17686..17687 - IDENT@17686..17687 "f" - COMMA@17687..17688 "," - WHITESPACE@17688..17689 " " - ARG@17689..17692 - EXPR_STRING@17689..17692 - STRING_SINGLE@17689..17692 "'/'" - R_PAREN@17692..17693 ")" - SEMI@17693..17694 ";" - WHITESPACE@17694..17699 "\n " - EXPR_APPLY@17699..17774 - EXPR_INDEX@17699..17707 - EXPR_VAR@17699..17702 - NAME@17699..17702 - IDENT@17699..17702 "std" - DOT@17702..17703 "." - NAME@17703..17707 - IDENT@17703..17707 "join" - ARGS_DESC@17707..17774 - L_PAREN@17707..17708 "(" - ARG@17708..17711 - EXPR_STRING@17708..17711 - STRING_SINGLE@17708..17711 "'/'" - COMMA@17711..17712 "," - WHITESPACE@17712..17713 " " - ARG@17713..17773 - EXPR_BINARY@17713..17773 - LHS_EXPR@17713..17767 - EXPR_APPLY@17713..17767 - EXPR_INDEX@17713..17726 - EXPR_VAR@17713..17716 - NAME@17713..17716 - IDENT@17713..17716 "std" - DOT@17716..17717 "." - NAME@17717..17726 - IDENT@17717..17726 "makeArray" - ARGS_DESC@17726..17767 - L_PAREN@17726..17727 "(" - ARG@17727..17746 - EXPR_BINARY@17727..17746 - LHS_EXPR@17727..17742 - EXPR_APPLY@17727..17742 - EXPR_INDEX@17727..17737 - EXPR_VAR@17727..17730 - NAME@17727..17730 - IDENT@17727..17730 "std" - DOT@17730..17731 "." - NAME@17731..17737 - IDENT@17731..17737 "length" - ARGS_DESC@17737..17742 - L_PAREN@17737..17738 "(" - ARG@17738..17741 - EXPR_VAR@17738..17741 - NAME@17738..17741 - IDENT@17738..17741 "arr" - R_PAREN@17741..17742 ")" - WHITESPACE@17742..17743 " " - MINUS@17743..17744 "-" - WHITESPACE@17744..17745 " " - EXPR_NUMBER@17745..17746 - FLOAT@17745..17746 "1" - COMMA@17746..17747 "," - WHITESPACE@17747..17748 " " - ARG@17748..17766 - EXPR_FUNCTION@17748..17766 - FUNCTION_KW@17748..17756 "function" - PARAMS_DESC@17756..17759 - L_PAREN@17756..17757 "(" - PARAM@17757..17758 - DESTRUCT_FULL@17757..17758 - NAME@17757..17758 - IDENT@17757..17758 "i" - R_PAREN@17758..17759 ")" - WHITESPACE@17759..17760 " " - EXPR_INDEX_EXPR@17760..17766 - LHS_EXPR@17760..17763 - EXPR_VAR@17760..17763 - NAME@17760..17763 - IDENT@17760..17763 "arr" - L_BRACK@17763..17764 "[" - EXPR_VAR@17764..17765 - NAME@17764..17765 - IDENT@17764..17765 "i" - R_BRACK@17765..17766 "]" - R_PAREN@17766..17767 ")" - WHITESPACE@17767..17768 " " - PLUS@17768..17769 "+" - WHITESPACE@17769..17770 " " - EXPR_ARRAY@17770..17773 - L_BRACK@17770..17771 "[" - EXPR_VAR@17771..17772 - NAME@17771..17772 - IDENT@17771..17772 "r" - R_BRACK@17772..17773 "]" - R_PAREN@17773..17774 ")" - COMMA@17774..17775 "," - WHITESPACE@17775..17779 "\n\n " - MEMBER_FIELD@17779..18232 - FIELD_METHOD@17779..18232 - FIELD_NAME_FIXED@17779..17784 - NAME@17779..17784 - IDENT@17779..17784 "prune" - PARAMS_DESC@17784..17787 - L_PAREN@17784..17785 "(" - PARAM@17785..17786 - DESTRUCT_FULL@17785..17786 - NAME@17785..17786 - IDENT@17785..17786 "a" - R_PAREN@17786..17787 ")" - COLONCOLON@17787..17789 "::" - WHITESPACE@17789..17794 "\n " - EXPR_LOCAL@17794..18232 - LOCAL_KW@17794..17799 "local" - WHITESPACE@17799..17800 " " - BIND_FUNCTION@17800..17997 - NAME@17800..17809 - IDENT@17800..17809 "isContent" - PARAMS_DESC@17809..17812 - L_PAREN@17809..17810 "(" - PARAM@17810..17811 - DESTRUCT_FULL@17810..17811 - NAME@17810..17811 - IDENT@17810..17811 "b" - R_PAREN@17811..17812 ")" - WHITESPACE@17812..17813 " " - ASSIGN@17813..17814 "=" - WHITESPACE@17814..17821 "\n " - EXPR_IF_THEN_ELSE@17821..17997 - IF_KW@17821..17823 "if" - WHITESPACE@17823..17824 " " - EXPR_BINARY@17824..17833 - LHS_EXPR@17824..17825 - EXPR_VAR@17824..17825 - NAME@17824..17825 - IDENT@17824..17825 "b" - WHITESPACE@17825..17826 " " - EQ@17826..17828 "==" - WHITESPACE@17828..17829 " " - EXPR_LITERAL@17829..17833 - NULL_KW@17829..17833 "null" - WHITESPACE@17833..17834 " " - THEN_KW@17834..17838 "then" - WHITESPACE@17838..17847 "\n " - TRUE_EXPR@17847..17852 - EXPR_LITERAL@17847..17852 - FALSE_KW@17847..17852 "false" - WHITESPACE@17852..17859 "\n " - ELSE_KW@17859..17863 "else" - WHITESPACE@17863..17864 " " - FALSE_EXPR@17864..17997 - EXPR_IF_THEN_ELSE@17864..17997 - IF_KW@17864..17866 "if" - WHITESPACE@17866..17867 " " - EXPR_APPLY@17867..17881 - EXPR_INDEX@17867..17878 - EXPR_VAR@17867..17870 - NAME@17867..17870 - IDENT@17867..17870 "std" - DOT@17870..17871 "." - NAME@17871..17878 - IDENT@17871..17878 "isArray" - ARGS_DESC@17878..17881 - L_PAREN@17878..17879 "(" - ARG@17879..17880 - EXPR_VAR@17879..17880 - NAME@17879..17880 - IDENT@17879..17880 "b" - R_PAREN@17880..17881 ")" - WHITESPACE@17881..17882 " " - THEN_KW@17882..17886 "then" - WHITESPACE@17886..17895 "\n " - TRUE_EXPR@17895..17912 - EXPR_BINARY@17895..17912 - LHS_EXPR@17895..17908 - EXPR_APPLY@17895..17908 - EXPR_INDEX@17895..17905 - EXPR_VAR@17895..17898 - NAME@17895..17898 - IDENT@17895..17898 "std" - DOT@17898..17899 "." - NAME@17899..17905 - IDENT@17899..17905 "length" - ARGS_DESC@17905..17908 - L_PAREN@17905..17906 "(" - ARG@17906..17907 - EXPR_VAR@17906..17907 - NAME@17906..17907 - IDENT@17906..17907 "b" - R_PAREN@17907..17908 ")" - WHITESPACE@17908..17909 " " - GT@17909..17910 ">" - WHITESPACE@17910..17911 " " - EXPR_NUMBER@17911..17912 - FLOAT@17911..17912 "0" - WHITESPACE@17912..17919 "\n " - ELSE_KW@17919..17923 "else" - WHITESPACE@17923..17924 " " - FALSE_EXPR@17924..17997 - EXPR_IF_THEN_ELSE@17924..17997 - IF_KW@17924..17926 "if" - WHITESPACE@17926..17927 " " - EXPR_APPLY@17927..17942 - EXPR_INDEX@17927..17939 - EXPR_VAR@17927..17930 - NAME@17927..17930 - IDENT@17927..17930 "std" - DOT@17930..17931 "." - NAME@17931..17939 - IDENT@17931..17939 "isObject" - ARGS_DESC@17939..17942 - L_PAREN@17939..17940 "(" - ARG@17940..17941 - EXPR_VAR@17940..17941 - NAME@17940..17941 - IDENT@17940..17941 "b" - R_PAREN@17941..17942 ")" - WHITESPACE@17942..17943 " " - THEN_KW@17943..17947 "then" - WHITESPACE@17947..17956 "\n " - TRUE_EXPR@17956..17973 - EXPR_BINARY@17956..17973 - LHS_EXPR@17956..17969 - EXPR_APPLY@17956..17969 - EXPR_INDEX@17956..17966 - EXPR_VAR@17956..17959 - NAME@17956..17959 - IDENT@17956..17959 "std" - DOT@17959..17960 "." - NAME@17960..17966 - IDENT@17960..17966 "length" - ARGS_DESC@17966..17969 - L_PAREN@17966..17967 "(" - ARG@17967..17968 - EXPR_VAR@17967..17968 - NAME@17967..17968 - IDENT@17967..17968 "b" - R_PAREN@17968..17969 ")" - WHITESPACE@17969..17970 " " - GT@17970..17971 ">" - WHITESPACE@17971..17972 " " - EXPR_NUMBER@17972..17973 - FLOAT@17972..17973 "0" - WHITESPACE@17973..17980 "\n " - ELSE_KW@17980..17984 "else" - WHITESPACE@17984..17993 "\n " - FALSE_EXPR@17993..17997 - EXPR_LITERAL@17993..17997 - TRUE_KW@17993..17997 "true" - SEMI@17997..17998 ";" - WHITESPACE@17998..18003 "\n " - EXPR_IF_THEN_ELSE@18003..18232 - IF_KW@18003..18005 "if" - WHITESPACE@18005..18006 " " - EXPR_APPLY@18006..18020 - EXPR_INDEX@18006..18017 - EXPR_VAR@18006..18009 - NAME@18006..18009 - IDENT@18006..18009 "std" - DOT@18009..18010 "." - NAME@18010..18017 - IDENT@18010..18017 "isArray" - ARGS_DESC@18017..18020 - L_PAREN@18017..18018 "(" - ARG@18018..18019 - EXPR_VAR@18018..18019 - NAME@18018..18019 - IDENT@18018..18019 "a" - R_PAREN@18019..18020 ")" - WHITESPACE@18020..18021 " " - THEN_KW@18021..18025 "then" - WHITESPACE@18025..18032 "\n " - TRUE_EXPR@18032..18082 - EXPR_ARRAY_COMP@18032..18082 - L_BRACK@18032..18033 "[" - EXPR_APPLY@18033..18045 - EXPR_INDEX@18033..18042 - EXPR_VAR@18033..18036 - NAME@18033..18036 - IDENT@18033..18036 "std" - DOT@18036..18037 "." - NAME@18037..18042 - IDENT@18037..18042 "prune" - ARGS_DESC@18042..18045 - L_PAREN@18042..18043 "(" - ARG@18043..18044 - EXPR_VAR@18043..18044 - NAME@18043..18044 - IDENT@18043..18044 "x" - R_PAREN@18044..18045 ")" - WHITESPACE@18045..18046 " " - FOR_SPEC@18046..18056 - FOR_KW@18046..18049 "for" - WHITESPACE@18049..18050 " " - NAME@18050..18051 - IDENT@18050..18051 "x" - WHITESPACE@18051..18052 " " - IN_KW@18052..18054 "in" - WHITESPACE@18054..18055 " " - EXPR_VAR@18055..18056 - NAME@18055..18056 - IDENT@18055..18056 "a" - WHITESPACE@18056..18057 " " - IF_SPEC@18057..18081 - IF_KW@18057..18059 "if" - WHITESPACE@18059..18060 " " - EXPR_APPLY@18060..18081 - EXPR_VAR@18060..18069 - NAME@18060..18069 - IDENT@18060..18069 "isContent" - ARGS_DESC@18069..18081 - L_PAREN@18069..18070 "(" - ARG@18070..18080 - EXPR_APPLY@18070..18080 - EXPR_INDEX@18070..18077 - EXPR_LITERAL@18070..18071 - DOLLAR@18070..18071 "$" - DOT@18071..18072 "." - NAME@18072..18077 - IDENT@18072..18077 "prune" - ARGS_DESC@18077..18080 - L_PAREN@18077..18078 "(" - ARG@18078..18079 - EXPR_VAR@18078..18079 - NAME@18078..18079 - IDENT@18078..18079 "x" - R_PAREN@18079..18080 ")" - R_PAREN@18080..18081 ")" - R_BRACK@18081..18082 "]" - WHITESPACE@18082..18087 "\n " - ELSE_KW@18087..18091 "else" - WHITESPACE@18091..18092 " " - FALSE_EXPR@18092..18232 - EXPR_IF_THEN_ELSE@18092..18232 - IF_KW@18092..18094 "if" - WHITESPACE@18094..18095 " " - EXPR_APPLY@18095..18110 - EXPR_INDEX@18095..18107 - EXPR_VAR@18095..18098 - NAME@18095..18098 - IDENT@18095..18098 "std" - DOT@18098..18099 "." - NAME@18099..18107 - IDENT@18099..18107 "isObject" - ARGS_DESC@18107..18110 - L_PAREN@18107..18108 "(" - ARG@18108..18109 - EXPR_VAR@18108..18109 - NAME@18108..18109 - IDENT@18108..18109 "a" - R_PAREN@18109..18110 ")" - WHITESPACE@18110..18111 " " - THEN_KW@18111..18115 "then" - WHITESPACE@18115..18116 " " - TRUE_EXPR@18116..18219 - EXPR_OBJECT@18116..18219 - OBJ_BODY_MEMBER_LIST@18116..18219 - L_BRACE@18116..18117 "{" - WHITESPACE@18117..18124 "\n " - MEMBER_FIELD@18124..18213 - FIELD_NORMAL@18124..18142 - FIELD_NAME_DYNAMIC@18124..18127 - L_BRACK@18124..18125 "[" - EXPR_VAR@18125..18126 - NAME@18125..18126 - IDENT@18125..18126 "x" - R_BRACK@18126..18127 "]" - COLON@18127..18128 ":" - WHITESPACE@18128..18129 " " - EXPR_APPLY@18129..18142 - EXPR_INDEX@18129..18136 - EXPR_LITERAL@18129..18130 - DOLLAR@18129..18130 "$" - DOT@18130..18131 "." - NAME@18131..18136 - IDENT@18131..18136 "prune" - ARGS_DESC@18136..18142 - L_PAREN@18136..18137 "(" - ARG@18137..18141 - EXPR_INDEX_EXPR@18137..18141 - LHS_EXPR@18137..18138 - EXPR_VAR@18137..18138 - NAME@18137..18138 - IDENT@18137..18138 "a" - L_BRACK@18138..18139 "[" - EXPR_VAR@18139..18140 - NAME@18139..18140 - IDENT@18139..18140 "x" - R_BRACK@18140..18141 "]" - R_PAREN@18141..18142 ")" - WHITESPACE@18142..18149 "\n " - FOR_SPEC@18149..18177 - FOR_KW@18149..18152 "for" - WHITESPACE@18152..18153 " " - NAME@18153..18154 - IDENT@18153..18154 "x" - WHITESPACE@18154..18155 " " - IN_KW@18155..18157 "in" - WHITESPACE@18157..18158 " " - EXPR_APPLY@18158..18177 - EXPR_INDEX@18158..18174 - EXPR_VAR@18158..18161 - NAME@18158..18161 - IDENT@18158..18161 "std" - DOT@18161..18162 "." - NAME@18162..18174 - IDENT@18162..18174 "objectFields" - ARGS_DESC@18174..18177 - L_PAREN@18174..18175 "(" - ARG@18175..18176 - EXPR_VAR@18175..18176 - NAME@18175..18176 - IDENT@18175..18176 "a" - R_PAREN@18176..18177 ")" - WHITESPACE@18177..18184 "\n " - IF_SPEC@18184..18213 - IF_KW@18184..18186 "if" - WHITESPACE@18186..18187 " " - EXPR_APPLY@18187..18213 - EXPR_VAR@18187..18196 - NAME@18187..18196 - IDENT@18187..18196 "isContent" - ARGS_DESC@18196..18213 - L_PAREN@18196..18197 "(" - ARG@18197..18212 - EXPR_APPLY@18197..18212 - EXPR_INDEX@18197..18206 - EXPR_VAR@18197..18200 - NAME@18197..18200 - IDENT@18197..18200 "std" - DOT@18200..18201 "." - NAME@18201..18206 - IDENT@18201..18206 "prune" - ARGS_DESC@18206..18212 - L_PAREN@18206..18207 "(" - ARG@18207..18211 - EXPR_INDEX_EXPR@18207..18211 - LHS_EXPR@18207..18208 - EXPR_VAR@18207..18208 - NAME@18207..18208 - IDENT@18207..18208 "a" - L_BRACK@18208..18209 "[" - EXPR_VAR@18209..18210 - NAME@18209..18210 - IDENT@18209..18210 "x" - R_BRACK@18210..18211 "]" - R_PAREN@18211..18212 ")" - R_PAREN@18212..18213 ")" - WHITESPACE@18213..18218 "\n " - R_BRACE@18218..18219 "}" - WHITESPACE@18219..18220 " " - ELSE_KW@18220..18224 "else" - WHITESPACE@18224..18231 "\n " - FALSE_EXPR@18231..18232 - EXPR_VAR@18231..18232 - NAME@18231..18232 - IDENT@18231..18232 "a" - COMMA@18232..18233 "," - WHITESPACE@18233..18237 "\n\n " - MEMBER_FIELD@18237..18755 - FIELD_METHOD@18237..18755 - FIELD_NAME_FIXED@18237..18247 - NAME@18237..18247 - IDENT@18237..18247 "findSubstr" - PARAMS_DESC@18247..18257 - L_PAREN@18247..18248 "(" - PARAM@18248..18251 - DESTRUCT_FULL@18248..18251 - NAME@18248..18251 - IDENT@18248..18251 "pat" - COMMA@18251..18252 "," - WHITESPACE@18252..18253 " " - PARAM@18253..18256 - DESTRUCT_FULL@18253..18256 - NAME@18253..18256 - IDENT@18253..18256 "str" - R_PAREN@18256..18257 ")" - COLONCOLON@18257..18259 "::" - WHITESPACE@18259..18264 "\n " - EXPR_IF_THEN_ELSE@18264..18755 - IF_KW@18264..18266 "if" - WHITESPACE@18266..18267 " " - EXPR_UNARY@18267..18285 - NOT@18267..18268 "!" - EXPR_APPLY@18268..18285 - EXPR_INDEX@18268..18280 - EXPR_VAR@18268..18271 - NAME@18268..18271 - IDENT@18268..18271 "std" - DOT@18271..18272 "." - NAME@18272..18280 - IDENT@18272..18280 "isString" - ARGS_DESC@18280..18285 - L_PAREN@18280..18281 "(" - ARG@18281..18284 - EXPR_VAR@18281..18284 - NAME@18281..18284 - IDENT@18281..18284 "pat" - R_PAREN@18284..18285 ")" - WHITESPACE@18285..18286 " " - THEN_KW@18286..18290 "then" - WHITESPACE@18290..18297 "\n " - TRUE_EXPR@18297..18372 - EXPR_ERROR@18297..18372 - ERROR_KW@18297..18302 "error" - WHITESPACE@18302..18303 " " - EXPR_BINARY@18303..18372 - LHS_EXPR@18303..18356 - EXPR_STRING@18303..18356 - STRING_SINGLE@18303..18356 "'findSubstr first par ..." - WHITESPACE@18356..18357 " " - PLUS@18357..18358 "+" - WHITESPACE@18358..18359 " " - EXPR_APPLY@18359..18372 - EXPR_INDEX@18359..18367 - EXPR_VAR@18359..18362 - NAME@18359..18362 - IDENT@18359..18362 "std" - DOT@18362..18363 "." - NAME@18363..18367 - IDENT@18363..18367 "type" - ARGS_DESC@18367..18372 - L_PAREN@18367..18368 "(" - ARG@18368..18371 - EXPR_VAR@18368..18371 - NAME@18368..18371 - IDENT@18368..18371 "pat" - R_PAREN@18371..18372 ")" - WHITESPACE@18372..18377 "\n " - ELSE_KW@18377..18381 "else" - WHITESPACE@18381..18382 " " - FALSE_EXPR@18382..18755 - EXPR_IF_THEN_ELSE@18382..18755 - IF_KW@18382..18384 "if" - WHITESPACE@18384..18385 " " - EXPR_UNARY@18385..18403 - NOT@18385..18386 "!" - EXPR_APPLY@18386..18403 - EXPR_INDEX@18386..18398 - EXPR_VAR@18386..18389 - NAME@18386..18389 - IDENT@18386..18389 "std" - DOT@18389..18390 "." - NAME@18390..18398 - IDENT@18390..18398 "isString" - ARGS_DESC@18398..18403 - L_PAREN@18398..18399 "(" - ARG@18399..18402 - EXPR_VAR@18399..18402 - NAME@18399..18402 - IDENT@18399..18402 "str" - R_PAREN@18402..18403 ")" - WHITESPACE@18403..18404 " " - THEN_KW@18404..18408 "then" - WHITESPACE@18408..18415 "\n " - TRUE_EXPR@18415..18491 - EXPR_ERROR@18415..18491 - ERROR_KW@18415..18420 "error" - WHITESPACE@18420..18421 " " - EXPR_BINARY@18421..18491 - LHS_EXPR@18421..18475 - EXPR_STRING@18421..18475 - STRING_SINGLE@18421..18475 "'findSubstr second pa ..." - WHITESPACE@18475..18476 " " - PLUS@18476..18477 "+" - WHITESPACE@18477..18478 " " - EXPR_APPLY@18478..18491 - EXPR_INDEX@18478..18486 - EXPR_VAR@18478..18481 - NAME@18478..18481 - IDENT@18478..18481 "std" - DOT@18481..18482 "." - NAME@18482..18486 - IDENT@18482..18486 "type" - ARGS_DESC@18486..18491 - L_PAREN@18486..18487 "(" - ARG@18487..18490 - EXPR_VAR@18487..18490 - NAME@18487..18490 - IDENT@18487..18490 "str" - R_PAREN@18490..18491 ")" - WHITESPACE@18491..18496 "\n " - ELSE_KW@18496..18500 "else" - WHITESPACE@18500..18507 "\n " - FALSE_EXPR@18507..18755 - EXPR_LOCAL@18507..18755 - LOCAL_KW@18507..18512 "local" - WHITESPACE@18512..18513 " " - BIND_DESTRUCT@18513..18538 - DESTRUCT_FULL@18513..18520 - NAME@18513..18520 - IDENT@18513..18520 "pat_len" - WHITESPACE@18520..18521 " " - ASSIGN@18521..18522 "=" - WHITESPACE@18522..18523 " " - EXPR_APPLY@18523..18538 - EXPR_INDEX@18523..18533 - EXPR_VAR@18523..18526 - NAME@18523..18526 - IDENT@18523..18526 "std" - DOT@18526..18527 "." - NAME@18527..18533 - IDENT@18527..18533 "length" - ARGS_DESC@18533..18538 - L_PAREN@18533..18534 "(" - ARG@18534..18537 - EXPR_VAR@18534..18537 - NAME@18534..18537 - IDENT@18534..18537 "pat" - R_PAREN@18537..18538 ")" - SEMI@18538..18539 ";" - WHITESPACE@18539..18546 "\n " - EXPR_LOCAL@18546..18755 - LOCAL_KW@18546..18551 "local" - WHITESPACE@18551..18552 " " - BIND_DESTRUCT@18552..18577 - DESTRUCT_FULL@18552..18559 - NAME@18552..18559 - IDENT@18552..18559 "str_len" - WHITESPACE@18559..18560 " " - ASSIGN@18560..18561 "=" - WHITESPACE@18561..18562 " " - EXPR_APPLY@18562..18577 - EXPR_INDEX@18562..18572 - EXPR_VAR@18562..18565 - NAME@18562..18565 - IDENT@18562..18565 "std" - DOT@18565..18566 "." - NAME@18566..18572 - IDENT@18566..18572 "length" - ARGS_DESC@18572..18577 - L_PAREN@18572..18573 "(" - ARG@18573..18576 - EXPR_VAR@18573..18576 - NAME@18573..18576 - IDENT@18573..18576 "str" - R_PAREN@18576..18577 ")" - SEMI@18577..18578 ";" - WHITESPACE@18578..18585 "\n " - EXPR_IF_THEN_ELSE@18585..18755 - IF_KW@18585..18587 "if" - WHITESPACE@18587..18588 " " - EXPR_BINARY@18588..18637 - LHS_EXPR@18588..18616 - EXPR_BINARY@18588..18616 - LHS_EXPR@18588..18600 - EXPR_BINARY@18588..18600 - LHS_EXPR@18588..18595 - EXPR_VAR@18588..18595 - NAME@18588..18595 - IDENT@18588..18595 "pat_len" - WHITESPACE@18595..18596 " " - EQ@18596..18598 "==" - WHITESPACE@18598..18599 " " - EXPR_NUMBER@18599..18600 - FLOAT@18599..18600 "0" - WHITESPACE@18600..18601 " " - OR@18601..18603 "||" - WHITESPACE@18603..18604 " " - EXPR_BINARY@18604..18616 - LHS_EXPR@18604..18611 - EXPR_VAR@18604..18611 - NAME@18604..18611 - IDENT@18604..18611 "str_len" - WHITESPACE@18611..18612 " " - EQ@18612..18614 "==" - WHITESPACE@18614..18615 " " - EXPR_NUMBER@18615..18616 - FLOAT@18615..18616 "0" - WHITESPACE@18616..18617 " " - OR@18617..18619 "||" - WHITESPACE@18619..18620 " " - EXPR_BINARY@18620..18637 - LHS_EXPR@18620..18627 - EXPR_VAR@18620..18627 - NAME@18620..18627 - IDENT@18620..18627 "pat_len" - WHITESPACE@18627..18628 " " - GT@18628..18629 ">" - WHITESPACE@18629..18630 " " - EXPR_VAR@18630..18637 - NAME@18630..18637 - IDENT@18630..18637 "str_len" - WHITESPACE@18637..18638 " " - THEN_KW@18638..18642 "then" - WHITESPACE@18642..18651 "\n " - TRUE_EXPR@18651..18653 - EXPR_ARRAY@18651..18653 - L_BRACK@18651..18652 "[" - R_BRACK@18652..18653 "]" - WHITESPACE@18653..18660 "\n " - ELSE_KW@18660..18664 "else" - WHITESPACE@18664..18673 "\n " - FALSE_EXPR@18673..18755 - EXPR_APPLY@18673..18755 - EXPR_INDEX@18673..18683 - EXPR_VAR@18673..18676 - NAME@18673..18676 - IDENT@18673..18676 "std" - DOT@18676..18677 "." - NAME@18677..18683 - IDENT@18677..18683 "filter" - ARGS_DESC@18683..18755 - L_PAREN@18683..18684 "(" - ARG@18684..18721 - EXPR_FUNCTION@18684..18721 - FUNCTION_KW@18684..18692 "function" - PARAMS_DESC@18692..18695 - L_PAREN@18692..18693 "(" - PARAM@18693..18694 - DESTRUCT_FULL@18693..18694 - NAME@18693..18694 - IDENT@18693..18694 "i" - R_PAREN@18694..18695 ")" - WHITESPACE@18695..18696 " " - EXPR_BINARY@18696..18721 - LHS_EXPR@18696..18714 - EXPR_SLICE@18696..18714 - EXPR_VAR@18696..18699 - NAME@18696..18699 - IDENT@18696..18699 "str" - SLICE_DESC@18699..18714 - L_BRACK@18699..18700 "[" - EXPR_VAR@18700..18701 - NAME@18700..18701 - IDENT@18700..18701 "i" - COLON@18701..18702 ":" - SLICE_DESC_END@18702..18713 - EXPR_BINARY@18702..18713 - LHS_EXPR@18702..18703 - EXPR_VAR@18702..18703 - NAME@18702..18703 - IDENT@18702..18703 "i" - WHITESPACE@18703..18704 " " - PLUS@18704..18705 "+" - WHITESPACE@18705..18706 " " - EXPR_VAR@18706..18713 - NAME@18706..18713 - IDENT@18706..18713 "pat_len" - R_BRACK@18713..18714 "]" - WHITESPACE@18714..18715 " " - EQ@18715..18717 "==" - WHITESPACE@18717..18718 " " - EXPR_VAR@18718..18721 - NAME@18718..18721 - IDENT@18718..18721 "pat" - COMMA@18721..18722 "," - WHITESPACE@18722..18723 " " - ARG@18723..18754 - EXPR_APPLY@18723..18754 - EXPR_INDEX@18723..18732 - EXPR_VAR@18723..18726 - NAME@18723..18726 - IDENT@18723..18726 "std" - DOT@18726..18727 "." - NAME@18727..18732 - IDENT@18727..18732 "range" - ARGS_DESC@18732..18754 - L_PAREN@18732..18733 "(" - ARG@18733..18734 - EXPR_NUMBER@18733..18734 - FLOAT@18733..18734 "0" - COMMA@18734..18735 "," - WHITESPACE@18735..18736 " " - ARG@18736..18753 - EXPR_BINARY@18736..18753 - LHS_EXPR@18736..18743 - EXPR_VAR@18736..18743 - NAME@18736..18743 - IDENT@18736..18743 "str_len" - WHITESPACE@18743..18744 " " - MINUS@18744..18745 "-" - WHITESPACE@18745..18746 " " - EXPR_VAR@18746..18753 - NAME@18746..18753 - IDENT@18746..18753 "pat_len" - R_PAREN@18753..18754 ")" - R_PAREN@18754..18755 ")" - COMMA@18755..18756 "," - WHITESPACE@18756..18760 "\n\n " - MEMBER_FIELD@18760..18975 - FIELD_METHOD@18760..18975 - FIELD_NAME_FIXED@18760..18764 - NAME@18760..18764 - IDENT@18760..18764 "find" - PARAMS_DESC@18764..18776 - L_PAREN@18764..18765 "(" - PARAM@18765..18770 - DESTRUCT_FULL@18765..18770 - NAME@18765..18770 - IDENT@18765..18770 "value" - COMMA@18770..18771 "," - WHITESPACE@18771..18772 " " - PARAM@18772..18775 - DESTRUCT_FULL@18772..18775 - NAME@18772..18775 - IDENT@18772..18775 "arr" - R_PAREN@18775..18776 ")" - COLONCOLON@18776..18778 "::" - WHITESPACE@18778..18783 "\n " - EXPR_IF_THEN_ELSE@18783..18975 - IF_KW@18783..18785 "if" - WHITESPACE@18785..18786 " " - EXPR_UNARY@18786..18803 - NOT@18786..18787 "!" - EXPR_APPLY@18787..18803 - EXPR_INDEX@18787..18798 - EXPR_VAR@18787..18790 - NAME@18787..18790 - IDENT@18787..18790 "std" - DOT@18790..18791 "." - NAME@18791..18798 - IDENT@18791..18798 "isArray" - ARGS_DESC@18798..18803 - L_PAREN@18798..18799 "(" - ARG@18799..18802 - EXPR_VAR@18799..18802 - NAME@18799..18802 - IDENT@18799..18802 "arr" - R_PAREN@18802..18803 ")" - WHITESPACE@18803..18804 " " - THEN_KW@18804..18808 "then" - WHITESPACE@18808..18815 "\n " - TRUE_EXPR@18815..18885 - EXPR_ERROR@18815..18885 - ERROR_KW@18815..18820 "error" - WHITESPACE@18820..18821 " " - EXPR_BINARY@18821..18885 - LHS_EXPR@18821..18869 - EXPR_STRING@18821..18869 - STRING_SINGLE@18821..18869 "'find second paramete ..." - WHITESPACE@18869..18870 " " - PLUS@18870..18871 "+" - WHITESPACE@18871..18872 " " - EXPR_APPLY@18872..18885 - EXPR_INDEX@18872..18880 - EXPR_VAR@18872..18875 - NAME@18872..18875 - IDENT@18872..18875 "std" - DOT@18875..18876 "." - NAME@18876..18880 - IDENT@18876..18880 "type" - ARGS_DESC@18880..18885 - L_PAREN@18880..18881 "(" - ARG@18881..18884 - EXPR_VAR@18881..18884 - NAME@18881..18884 - IDENT@18881..18884 "arr" - R_PAREN@18884..18885 ")" - WHITESPACE@18885..18890 "\n " - ELSE_KW@18890..18894 "else" - WHITESPACE@18894..18901 "\n " - FALSE_EXPR@18901..18975 - EXPR_APPLY@18901..18975 - EXPR_INDEX@18901..18911 - EXPR_VAR@18901..18904 - NAME@18901..18904 - IDENT@18901..18904 "std" - DOT@18904..18905 "." - NAME@18905..18911 - IDENT@18905..18911 "filter" - ARGS_DESC@18911..18975 - L_PAREN@18911..18912 "(" - ARG@18912..18939 - EXPR_FUNCTION@18912..18939 - FUNCTION_KW@18912..18920 "function" - PARAMS_DESC@18920..18923 - L_PAREN@18920..18921 "(" - PARAM@18921..18922 - DESTRUCT_FULL@18921..18922 - NAME@18921..18922 - IDENT@18921..18922 "i" - R_PAREN@18922..18923 ")" - WHITESPACE@18923..18924 " " - EXPR_BINARY@18924..18939 - LHS_EXPR@18924..18930 - EXPR_INDEX_EXPR@18924..18930 - LHS_EXPR@18924..18927 - EXPR_VAR@18924..18927 - NAME@18924..18927 - IDENT@18924..18927 "arr" - L_BRACK@18927..18928 "[" - EXPR_VAR@18928..18929 - NAME@18928..18929 - IDENT@18928..18929 "i" - R_BRACK@18929..18930 "]" - WHITESPACE@18930..18931 " " - EQ@18931..18933 "==" - WHITESPACE@18933..18934 " " - EXPR_VAR@18934..18939 - NAME@18934..18939 - IDENT@18934..18939 "value" - COMMA@18939..18940 "," - WHITESPACE@18940..18941 " " - ARG@18941..18974 - EXPR_APPLY@18941..18974 - EXPR_INDEX@18941..18950 - EXPR_VAR@18941..18944 - NAME@18941..18944 - IDENT@18941..18944 "std" - DOT@18944..18945 "." - NAME@18945..18950 - IDENT@18945..18950 "range" - ARGS_DESC@18950..18974 - L_PAREN@18950..18951 "(" - ARG@18951..18952 - EXPR_NUMBER@18951..18952 - FLOAT@18951..18952 "0" - COMMA@18952..18953 "," - WHITESPACE@18953..18954 " " - ARG@18954..18973 - EXPR_BINARY@18954..18973 - LHS_EXPR@18954..18969 - EXPR_APPLY@18954..18969 - EXPR_INDEX@18954..18964 - EXPR_VAR@18954..18957 - NAME@18954..18957 - IDENT@18954..18957 "std" - DOT@18957..18958 "." - NAME@18958..18964 - IDENT@18958..18964 "length" - ARGS_DESC@18964..18969 - L_PAREN@18964..18965 "(" - ARG@18965..18968 - EXPR_VAR@18965..18968 - NAME@18965..18968 - IDENT@18965..18968 "arr" - R_PAREN@18968..18969 ")" - WHITESPACE@18969..18970 " " - MINUS@18970..18971 "-" - WHITESPACE@18971..18972 " " - EXPR_NUMBER@18972..18973 - FLOAT@18972..18973 "1" - R_PAREN@18973..18974 ")" - R_PAREN@18974..18975 ")" - COMMA@18975..18976 "," - WHITESPACE@18976..18977 "\n" - R_BRACE@18977..18978 "}" - + ARG@5661..5672 + EXPR_BINARY@5661..5672 + LHS_EXPR@5661..5665 + EXPR_VAR@5661..5665 + NAME@5661..5665 + IDENT@5661..5665 "vars" + WHITESPACE@5665..5666 " " + PLUS@5666..5667 "+" + WHITESPACE@5667..5668 " " + EXPR_ARRAY@5668..5672 + L_BRACK@5668..5669 "[" + EXPR_STRING@5669..5671 + STRING_SINGLE@5669..5671 "''" + R_BRACK@5671..5672 "]" + R_PAREN@5672..5673 ")" + COMMA@5673..5674 "," + WHITESPACE@5674..5678 "\n\n " + MEMBER_FIELD@5678..6345 + FIELD_METHOD@5678..6345 + FIELD_NAME_FIXED@5678..5695 + NAME@5678..5695 + IDENT@5678..5695 "manifestXmlJsonml" + PARAMS_DESC@5695..5702 + L_PAREN@5695..5696 "(" + PARAM@5696..5701 + DESTRUCT_FULL@5696..5701 + NAME@5696..5701 + IDENT@5696..5701 "value" + R_PAREN@5701..5702 ")" + COLONCOLON@5702..5704 "::" + WHITESPACE@5704..5709 "\n " + EXPR_IF_THEN_ELSE@5709..6345 + IF_KW@5709..5711 "if" + WHITESPACE@5711..5712 " " + EXPR_UNARY@5712..5731 + NOT@5712..5713 "!" + EXPR_APPLY@5713..5731 + EXPR_INDEX@5713..5724 + EXPR_VAR@5713..5716 + NAME@5713..5716 + IDENT@5713..5716 "std" + DOT@5716..5717 "." + NAME@5717..5724 + IDENT@5717..5724 "isArray" + ARGS_DESC@5724..5731 + L_PAREN@5724..5725 "(" + ARG@5725..5730 + EXPR_VAR@5725..5730 + NAME@5725..5730 + IDENT@5725..5730 "value" + R_PAREN@5730..5731 ")" + WHITESPACE@5731..5732 " " + THEN_KW@5732..5736 "then" + WHITESPACE@5736..5743 "\n " + TRUE_EXPR@5743..5811 + EXPR_ERROR@5743..5811 + ERROR_KW@5743..5748 "error" + WHITESPACE@5748..5749 " " + EXPR_BINARY@5749..5811 + LHS_EXPR@5749..5793 + EXPR_STRING@5749..5793 + STRING_SINGLE@5749..5793 "'Expected a JSONML va ..." + WHITESPACE@5793..5794 " " + MODULO@5794..5795 "%" + WHITESPACE@5795..5796 " " + EXPR_APPLY@5796..5811 + EXPR_INDEX@5796..5804 + EXPR_VAR@5796..5799 + NAME@5796..5799 + IDENT@5796..5799 "std" + DOT@5799..5800 "." + NAME@5800..5804 + IDENT@5800..5804 "type" + ARGS_DESC@5804..5811 + L_PAREN@5804..5805 "(" + ARG@5805..5810 + EXPR_VAR@5805..5810 + NAME@5805..5810 + IDENT@5805..5810 "value" + R_PAREN@5810..5811 ")" + WHITESPACE@5811..5816 "\n " + ELSE_KW@5816..5820 "else" + WHITESPACE@5820..5827 "\n " + FALSE_EXPR@5827..6345 + EXPR_LOCAL@5827..6345 + LOCAL_KW@5827..5832 "local" + WHITESPACE@5832..5833 " " + BIND_FUNCTION@5833..6326 + NAME@5833..5836 + IDENT@5833..5836 "aux" + PARAMS_DESC@5836..5839 + L_PAREN@5836..5837 "(" + PARAM@5837..5838 + DESTRUCT_FULL@5837..5838 + NAME@5837..5838 + IDENT@5837..5838 "v" + R_PAREN@5838..5839 ")" + WHITESPACE@5839..5840 " " + ASSIGN@5840..5841 "=" + WHITESPACE@5841..5850 "\n " + EXPR_IF_THEN_ELSE@5850..6326 + IF_KW@5850..5852 "if" + WHITESPACE@5852..5853 " " + EXPR_APPLY@5853..5868 + EXPR_INDEX@5853..5865 + EXPR_VAR@5853..5856 + NAME@5853..5856 + IDENT@5853..5856 "std" + DOT@5856..5857 "." + NAME@5857..5865 + IDENT@5857..5865 "isString" + ARGS_DESC@5865..5868 + L_PAREN@5865..5866 "(" + ARG@5866..5867 + EXPR_VAR@5866..5867 + NAME@5866..5867 + IDENT@5866..5867 "v" + R_PAREN@5867..5868 ")" + WHITESPACE@5868..5869 " " + THEN_KW@5869..5873 "then" + WHITESPACE@5873..5884 "\n " + TRUE_EXPR@5884..5885 + EXPR_VAR@5884..5885 + NAME@5884..5885 + IDENT@5884..5885 "v" + WHITESPACE@5885..5894 "\n " + ELSE_KW@5894..5898 "else" + WHITESPACE@5898..5909 "\n " + FALSE_EXPR@5909..6326 + EXPR_LOCAL@5909..6326 + LOCAL_KW@5909..5914 "local" + WHITESPACE@5914..5915 " " + BIND_DESTRUCT@5915..5925 + DESTRUCT_FULL@5915..5918 + NAME@5915..5918 + IDENT@5915..5918 "tag" + WHITESPACE@5918..5919 " " + ASSIGN@5919..5920 "=" + WHITESPACE@5920..5921 " " + EXPR_INDEX_EXPR@5921..5925 + LHS_EXPR@5921..5922 + EXPR_VAR@5921..5922 + NAME@5921..5922 + IDENT@5921..5922 "v" + L_BRACK@5922..5923 "[" + EXPR_NUMBER@5923..5924 + FLOAT@5923..5924 "0" + R_BRACK@5924..5925 "]" + SEMI@5925..5926 ";" + WHITESPACE@5926..5937 "\n " + EXPR_LOCAL@5937..6326 + LOCAL_KW@5937..5942 "local" + WHITESPACE@5942..5943 " " + BIND_DESTRUCT@5943..5994 + DESTRUCT_FULL@5943..5952 + NAME@5943..5952 + IDENT@5943..5952 "has_attrs" + WHITESPACE@5952..5953 " " + ASSIGN@5953..5954 "=" + WHITESPACE@5954..5955 " " + EXPR_BINARY@5955..5994 + LHS_EXPR@5955..5972 + EXPR_BINARY@5955..5972 + LHS_EXPR@5955..5968 + EXPR_APPLY@5955..5968 + EXPR_INDEX@5955..5965 + EXPR_VAR@5955..5958 + NAME@5955..5958 + IDENT@5955..5958 "std" + DOT@5958..5959 "." + NAME@5959..5965 + IDENT@5959..5965 "length" + ARGS_DESC@5965..5968 + L_PAREN@5965..5966 "(" + ARG@5966..5967 + EXPR_VAR@5966..5967 + NAME@5966..5967 + IDENT@5966..5967 "v" + R_PAREN@5967..5968 ")" + WHITESPACE@5968..5969 " " + GT@5969..5970 ">" + WHITESPACE@5970..5971 " " + EXPR_NUMBER@5971..5972 + FLOAT@5971..5972 "1" + WHITESPACE@5972..5973 " " + AND@5973..5975 "&&" + WHITESPACE@5975..5976 " " + EXPR_APPLY@5976..5994 + EXPR_INDEX@5976..5988 + EXPR_VAR@5976..5979 + NAME@5976..5979 + IDENT@5976..5979 "std" + DOT@5979..5980 "." + NAME@5980..5988 + IDENT@5980..5988 "isObject" + ARGS_DESC@5988..5994 + L_PAREN@5988..5989 "(" + ARG@5989..5993 + EXPR_INDEX_EXPR@5989..5993 + LHS_EXPR@5989..5990 + EXPR_VAR@5989..5990 + NAME@5989..5990 + IDENT@5989..5990 "v" + L_BRACK@5990..5991 "[" + EXPR_NUMBER@5991..5992 + FLOAT@5991..5992 "1" + R_BRACK@5992..5993 "]" + R_PAREN@5993..5994 ")" + SEMI@5994..5995 ";" + WHITESPACE@5995..6006 "\n " + EXPR_LOCAL@6006..6326 + LOCAL_KW@6006..6011 "local" + WHITESPACE@6011..6012 " " + BIND_DESTRUCT@6012..6050 + DESTRUCT_FULL@6012..6017 + NAME@6012..6017 + IDENT@6012..6017 "attrs" + WHITESPACE@6017..6018 " " + ASSIGN@6018..6019 "=" + WHITESPACE@6019..6020 " " + EXPR_IF_THEN_ELSE@6020..6050 + IF_KW@6020..6022 "if" + WHITESPACE@6022..6023 " " + EXPR_VAR@6023..6032 + NAME@6023..6032 + IDENT@6023..6032 "has_attrs" + WHITESPACE@6032..6033 " " + THEN_KW@6033..6037 "then" + WHITESPACE@6037..6038 " " + TRUE_EXPR@6038..6042 + EXPR_INDEX_EXPR@6038..6042 + LHS_EXPR@6038..6039 + EXPR_VAR@6038..6039 + NAME@6038..6039 + IDENT@6038..6039 "v" + L_BRACK@6039..6040 "[" + EXPR_NUMBER@6040..6041 + FLOAT@6040..6041 "1" + R_BRACK@6041..6042 "]" + WHITESPACE@6042..6043 " " + ELSE_KW@6043..6047 "else" + WHITESPACE@6047..6048 " " + FALSE_EXPR@6048..6050 + EXPR_OBJECT@6048..6050 + OBJ_BODY_MEMBER_LIST@6048..6050 + L_BRACE@6048..6049 "{" + R_BRACE@6049..6050 "}" + SEMI@6050..6051 ";" + WHITESPACE@6051..6062 "\n " + EXPR_LOCAL@6062..6326 + LOCAL_KW@6062..6067 "local" + WHITESPACE@6067..6068 " " + BIND_DESTRUCT@6068..6113 + DESTRUCT_FULL@6068..6076 + NAME@6068..6076 + IDENT@6068..6076 "children" + WHITESPACE@6076..6077 " " + ASSIGN@6077..6078 "=" + WHITESPACE@6078..6079 " " + EXPR_IF_THEN_ELSE@6079..6113 + IF_KW@6079..6081 "if" + WHITESPACE@6081..6082 " " + EXPR_VAR@6082..6091 + NAME@6082..6091 + IDENT@6082..6091 "has_attrs" + WHITESPACE@6091..6092 " " + THEN_KW@6092..6096 "then" + WHITESPACE@6096..6097 " " + TRUE_EXPR@6097..6102 + EXPR_SLICE@6097..6102 + EXPR_VAR@6097..6098 + NAME@6097..6098 + IDENT@6097..6098 "v" + SLICE_DESC@6098..6102 + L_BRACK@6098..6099 "[" + EXPR_NUMBER@6099..6100 + FLOAT@6099..6100 "2" + COLON@6100..6101 ":" + R_BRACK@6101..6102 "]" + WHITESPACE@6102..6103 " " + ELSE_KW@6103..6107 "else" + WHITESPACE@6107..6108 " " + FALSE_EXPR@6108..6113 + EXPR_SLICE@6108..6113 + EXPR_VAR@6108..6109 + NAME@6108..6109 + IDENT@6108..6109 "v" + SLICE_DESC@6109..6113 + L_BRACK@6109..6110 "[" + EXPR_NUMBER@6110..6111 + FLOAT@6110..6111 "1" + COLON@6111..6112 ":" + R_BRACK@6112..6113 "]" + SEMI@6113..6114 ";" + WHITESPACE@6114..6125 "\n " + EXPR_LOCAL@6125..6326 + LOCAL_KW@6125..6130 "local" + WHITESPACE@6130..6131 " " + BIND_DESTRUCT@6131..6230 + DESTRUCT_FULL@6131..6140 + NAME@6131..6140 + IDENT@6131..6140 "attrs_str" + WHITESPACE@6140..6141 " " + ASSIGN@6141..6142 "=" + WHITESPACE@6142..6155 "\n " + EXPR_APPLY@6155..6230 + EXPR_INDEX@6155..6163 + EXPR_VAR@6155..6158 + NAME@6155..6158 + IDENT@6155..6158 "std" + DOT@6158..6159 "." + NAME@6159..6163 + IDENT@6159..6163 "join" + ARGS_DESC@6163..6230 + L_PAREN@6163..6164 "(" + ARG@6164..6166 + EXPR_STRING@6164..6166 + STRING_SINGLE@6164..6166 "''" + COMMA@6166..6167 "," + WHITESPACE@6167..6168 " " + ARG@6168..6229 + EXPR_ARRAY_COMP@6168..6229 + L_BRACK@6168..6169 "[" + EXPR_BINARY@6169..6195 + LHS_EXPR@6169..6179 + EXPR_STRING@6169..6179 + STRING_SINGLE@6169..6179 "' %s=\"%s\"'" + WHITESPACE@6179..6180 " " + MODULO@6180..6181 "%" + WHITESPACE@6181..6182 " " + EXPR_ARRAY@6182..6195 + L_BRACK@6182..6183 "[" + EXPR_VAR@6183..6184 + NAME@6183..6184 + IDENT@6183..6184 "k" + COMMA@6184..6185 "," + WHITESPACE@6185..6186 " " + EXPR_INDEX_EXPR@6186..6194 + LHS_EXPR@6186..6191 + EXPR_VAR@6186..6191 + NAME@6186..6191 + IDENT@6186..6191 "attrs" + L_BRACK@6191..6192 "[" + EXPR_VAR@6192..6193 + NAME@6192..6193 + IDENT@6192..6193 "k" + R_BRACK@6193..6194 "]" + R_BRACK@6194..6195 "]" + WHITESPACE@6195..6196 " " + FOR_SPEC@6196..6228 + FOR_KW@6196..6199 "for" + WHITESPACE@6199..6200 " " + NAME@6200..6201 + IDENT@6200..6201 "k" + WHITESPACE@6201..6202 " " + IN_KW@6202..6204 "in" + WHITESPACE@6204..6205 " " + EXPR_APPLY@6205..6228 + EXPR_INDEX@6205..6221 + EXPR_VAR@6205..6208 + NAME@6205..6208 + IDENT@6205..6208 "std" + DOT@6208..6209 "." + NAME@6209..6221 + IDENT@6209..6221 "objectFields" + ARGS_DESC@6221..6228 + L_PAREN@6221..6222 "(" + ARG@6222..6227 + EXPR_VAR@6222..6227 + NAME@6222..6227 + IDENT@6222..6227 "attrs" + R_PAREN@6227..6228 ")" + R_BRACK@6228..6229 "]" + R_PAREN@6229..6230 ")" + SEMI@6230..6231 ";" + WHITESPACE@6231..6242 "\n " + EXPR_APPLY@6242..6326 + EXPR_INDEX@6242..6254 + EXPR_VAR@6242..6245 + NAME@6242..6245 + IDENT@6242..6245 "std" + DOT@6245..6246 "." + NAME@6246..6254 + IDENT@6246..6254 "deepJoin" + ARGS_DESC@6254..6326 + L_PAREN@6254..6255 "(" + ARG@6255..6325 + EXPR_ARRAY@6255..6325 + L_BRACK@6255..6256 "[" + EXPR_STRING@6256..6259 + STRING_SINGLE@6256..6259 "'<'" + COMMA@6259..6260 "," + WHITESPACE@6260..6261 " " + EXPR_VAR@6261..6264 + NAME@6261..6264 + IDENT@6261..6264 "tag" + COMMA@6264..6265 "," + WHITESPACE@6265..6266 " " + EXPR_VAR@6266..6275 + NAME@6266..6275 + IDENT@6266..6275 "attrs_str" + COMMA@6275..6276 "," + WHITESPACE@6276..6277 " " + EXPR_STRING@6277..6280 + STRING_SINGLE@6277..6280 "'>'" + COMMA@6280..6281 "," + WHITESPACE@6281..6282 " " + EXPR_ARRAY_COMP@6282..6308 + L_BRACK@6282..6283 "[" + EXPR_APPLY@6283..6289 + EXPR_VAR@6283..6286 + NAME@6283..6286 + IDENT@6283..6286 "aux" + ARGS_DESC@6286..6289 + L_PAREN@6286..6287 "(" + ARG@6287..6288 + EXPR_VAR@6287..6288 + NAME@6287..6288 + IDENT@6287..6288 "x" + R_PAREN@6288..6289 ")" + WHITESPACE@6289..6290 " " + FOR_SPEC@6290..6307 + FOR_KW@6290..6293 "for" + WHITESPACE@6293..6294 " " + NAME@6294..6295 + IDENT@6294..6295 "x" + WHITESPACE@6295..6296 " " + IN_KW@6296..6298 "in" + WHITESPACE@6298..6299 " " + EXPR_VAR@6299..6307 + NAME@6299..6307 + IDENT@6299..6307 "children" + R_BRACK@6307..6308 "]" + COMMA@6308..6309 "," + WHITESPACE@6309..6310 " " + EXPR_STRING@6310..6314 + STRING_SINGLE@6310..6314 "''" + R_BRACK@6324..6325 "]" + R_PAREN@6325..6326 ")" + SEMI@6326..6327 ";" + WHITESPACE@6327..6335 "\n\n " + EXPR_APPLY@6335..6345 + EXPR_VAR@6335..6338 + NAME@6335..6338 + IDENT@6335..6338 "aux" + ARGS_DESC@6338..6345 + L_PAREN@6338..6339 "(" + ARG@6339..6344 + EXPR_VAR@6339..6344 + NAME@6339..6344 + IDENT@6339..6344 "value" + R_PAREN@6344..6345 ")" + COMMA@6345..6346 "," + WHITESPACE@6346..6350 "\n\n " + MEMBER_FIELD@6350..6556 + FIELD_METHOD@6350..6556 + FIELD_NAME_FIXED@6350..6354 + NAME@6350..6354 + IDENT@6350..6354 "uniq" + PARAMS_DESC@6354..6368 + L_PAREN@6354..6355 "(" + PARAM@6355..6358 + DESTRUCT_FULL@6355..6358 + NAME@6355..6358 + IDENT@6355..6358 "arr" + COMMA@6358..6359 "," + WHITESPACE@6359..6360 " " + PARAM@6360..6367 + DESTRUCT_FULL@6360..6364 + NAME@6360..6364 + IDENT@6360..6364 "keyF" + ASSIGN@6364..6365 "=" + EXPR_VAR@6365..6367 + NAME@6365..6367 + IDENT@6365..6367 "id" + R_PAREN@6367..6368 ")" + COLONCOLON@6368..6370 "::" + WHITESPACE@6370..6375 "\n " + EXPR_LOCAL@6375..6556 + LOCAL_KW@6375..6380 "local" + WHITESPACE@6380..6381 " " + BIND_FUNCTION@6381..6529 + NAME@6381..6382 + IDENT@6381..6382 "f" + PARAMS_DESC@6382..6388 + L_PAREN@6382..6383 "(" + PARAM@6383..6384 + DESTRUCT_FULL@6383..6384 + NAME@6383..6384 + IDENT@6383..6384 "a" + COMMA@6384..6385 "," + WHITESPACE@6385..6386 " " + PARAM@6386..6387 + DESTRUCT_FULL@6386..6387 + NAME@6386..6387 + IDENT@6386..6387 "b" + R_PAREN@6387..6388 ")" + WHITESPACE@6388..6389 " " + ASSIGN@6389..6390 "=" + WHITESPACE@6390..6397 "\n " + EXPR_IF_THEN_ELSE@6397..6529 + IF_KW@6397..6399 "if" + WHITESPACE@6399..6400 " " + EXPR_BINARY@6400..6418 + LHS_EXPR@6400..6413 + EXPR_APPLY@6400..6413 + EXPR_INDEX@6400..6410 + EXPR_VAR@6400..6403 + NAME@6400..6403 + IDENT@6400..6403 "std" + DOT@6403..6404 "." + NAME@6404..6410 + IDENT@6404..6410 "length" + ARGS_DESC@6410..6413 + L_PAREN@6410..6411 "(" + ARG@6411..6412 + EXPR_VAR@6411..6412 + NAME@6411..6412 + IDENT@6411..6412 "a" + R_PAREN@6412..6413 ")" + WHITESPACE@6413..6414 " " + EQ@6414..6416 "==" + WHITESPACE@6416..6417 " " + EXPR_NUMBER@6417..6418 + FLOAT@6417..6418 "0" + WHITESPACE@6418..6419 " " + THEN_KW@6419..6423 "then" + WHITESPACE@6423..6432 "\n " + TRUE_EXPR@6432..6435 + EXPR_ARRAY@6432..6435 + L_BRACK@6432..6433 "[" + EXPR_VAR@6433..6434 + NAME@6433..6434 + IDENT@6433..6434 "b" + R_BRACK@6434..6435 "]" + WHITESPACE@6435..6442 "\n " + ELSE_KW@6442..6446 "else" + WHITESPACE@6446..6447 " " + FALSE_EXPR@6447..6529 + EXPR_IF_THEN_ELSE@6447..6529 + IF_KW@6447..6449 "if" + WHITESPACE@6449..6450 " " + EXPR_BINARY@6450..6487 + LHS_EXPR@6450..6476 + EXPR_APPLY@6450..6476 + EXPR_VAR@6450..6454 + NAME@6450..6454 + IDENT@6450..6454 "keyF" + ARGS_DESC@6454..6476 + L_PAREN@6454..6455 "(" + ARG@6455..6475 + EXPR_INDEX_EXPR@6455..6475 + LHS_EXPR@6455..6456 + EXPR_VAR@6455..6456 + NAME@6455..6456 + IDENT@6455..6456 "a" + L_BRACK@6456..6457 "[" + EXPR_BINARY@6457..6474 + LHS_EXPR@6457..6470 + EXPR_APPLY@6457..6470 + EXPR_INDEX@6457..6467 + EXPR_VAR@6457..6460 + NAME@6457..6460 + IDENT@6457..6460 "std" + DOT@6460..6461 "." + NAME@6461..6467 + IDENT@6461..6467 "length" + ARGS_DESC@6467..6470 + L_PAREN@6467..6468 "(" + ARG@6468..6469 + EXPR_VAR@6468..6469 + NAME@6468..6469 + IDENT@6468..6469 "a" + R_PAREN@6469..6470 ")" + WHITESPACE@6470..6471 " " + MINUS@6471..6472 "-" + WHITESPACE@6472..6473 " " + EXPR_NUMBER@6473..6474 + FLOAT@6473..6474 "1" + R_BRACK@6474..6475 "]" + R_PAREN@6475..6476 ")" + WHITESPACE@6476..6477 " " + EQ@6477..6479 "==" + WHITESPACE@6479..6480 " " + EXPR_APPLY@6480..6487 + EXPR_VAR@6480..6484 + NAME@6480..6484 + IDENT@6480..6484 "keyF" + ARGS_DESC@6484..6487 + L_PAREN@6484..6485 "(" + ARG@6485..6486 + EXPR_VAR@6485..6486 + NAME@6485..6486 + IDENT@6485..6486 "b" + R_PAREN@6486..6487 ")" + WHITESPACE@6487..6488 " " + THEN_KW@6488..6492 "then" + WHITESPACE@6492..6501 "\n " + TRUE_EXPR@6501..6502 + EXPR_VAR@6501..6502 + NAME@6501..6502 + IDENT@6501..6502 "a" + WHITESPACE@6502..6509 "\n " + ELSE_KW@6509..6513 "else" + WHITESPACE@6513..6522 "\n " + FALSE_EXPR@6522..6529 + EXPR_BINARY@6522..6529 + LHS_EXPR@6522..6523 + EXPR_VAR@6522..6523 + NAME@6522..6523 + IDENT@6522..6523 "a" + WHITESPACE@6523..6524 " " + PLUS@6524..6525 "+" + WHITESPACE@6525..6526 " " + EXPR_ARRAY@6526..6529 + L_BRACK@6526..6527 "[" + EXPR_VAR@6527..6528 + NAME@6527..6528 + IDENT@6527..6528 "b" + R_BRACK@6528..6529 "]" + SEMI@6529..6530 ";" + WHITESPACE@6530..6535 "\n " + EXPR_APPLY@6535..6556 + EXPR_INDEX@6535..6544 + EXPR_VAR@6535..6538 + NAME@6535..6538 + IDENT@6535..6538 "std" + DOT@6538..6539 "." + NAME@6539..6544 + IDENT@6539..6544 "foldl" + ARGS_DESC@6544..6556 + L_PAREN@6544..6545 "(" + ARG@6545..6546 + EXPR_VAR@6545..6546 + NAME@6545..6546 + IDENT@6545..6546 "f" + COMMA@6546..6547 "," + WHITESPACE@6547..6548 " " + ARG@6548..6551 + EXPR_VAR@6548..6551 + NAME@6548..6551 + IDENT@6548..6551 "arr" + COMMA@6551..6552 "," + WHITESPACE@6552..6553 " " + ARG@6553..6555 + EXPR_ARRAY@6553..6555 + L_BRACK@6553..6554 "[" + R_BRACK@6554..6555 "]" + R_PAREN@6555..6556 ")" + COMMA@6556..6557 "," + WHITESPACE@6557..6561 "\n\n " + MEMBER_FIELD@6561..6620 + FIELD_METHOD@6561..6620 + FIELD_NAME_FIXED@6561..6564 + NAME@6561..6564 + IDENT@6561..6564 "set" + PARAMS_DESC@6564..6578 + L_PAREN@6564..6565 "(" + PARAM@6565..6568 + DESTRUCT_FULL@6565..6568 + NAME@6565..6568 + IDENT@6565..6568 "arr" + COMMA@6568..6569 "," + WHITESPACE@6569..6570 " " + PARAM@6570..6577 + DESTRUCT_FULL@6570..6574 + NAME@6570..6574 + IDENT@6570..6574 "keyF" + ASSIGN@6574..6575 "=" + EXPR_VAR@6575..6577 + NAME@6575..6577 + IDENT@6575..6577 "id" + R_PAREN@6577..6578 ")" + COLONCOLON@6578..6580 "::" + WHITESPACE@6580..6585 "\n " + EXPR_APPLY@6585..6620 + EXPR_INDEX@6585..6593 + EXPR_VAR@6585..6588 + NAME@6585..6588 + IDENT@6585..6588 "std" + DOT@6588..6589 "." + NAME@6589..6593 + IDENT@6589..6593 "uniq" + ARGS_DESC@6593..6620 + L_PAREN@6593..6594 "(" + ARG@6594..6613 + EXPR_APPLY@6594..6613 + EXPR_INDEX@6594..6602 + EXPR_VAR@6594..6597 + NAME@6594..6597 + IDENT@6594..6597 "std" + DOT@6597..6598 "." + NAME@6598..6602 + IDENT@6598..6602 "sort" + ARGS_DESC@6602..6613 + L_PAREN@6602..6603 "(" + ARG@6603..6606 + EXPR_VAR@6603..6606 + NAME@6603..6606 + IDENT@6603..6606 "arr" + COMMA@6606..6607 "," + WHITESPACE@6607..6608 " " + ARG@6608..6612 + EXPR_VAR@6608..6612 + NAME@6608..6612 + IDENT@6608..6612 "keyF" + R_PAREN@6612..6613 ")" + COMMA@6613..6614 "," + WHITESPACE@6614..6615 " " + ARG@6615..6619 + EXPR_VAR@6615..6619 + NAME@6615..6619 + IDENT@6615..6619 "keyF" + R_PAREN@6619..6620 ")" + COMMA@6620..6621 "," + WHITESPACE@6621..6625 "\n\n " + MEMBER_FIELD@6625..6760 + FIELD_METHOD@6625..6760 + FIELD_NAME_FIXED@6625..6634 + NAME@6625..6634 + IDENT@6625..6634 "setMember" + PARAMS_DESC@6634..6651 + L_PAREN@6634..6635 "(" + PARAM@6635..6636 + DESTRUCT_FULL@6635..6636 + NAME@6635..6636 + IDENT@6635..6636 "x" + COMMA@6636..6637 "," + WHITESPACE@6637..6638 " " + PARAM@6638..6641 + DESTRUCT_FULL@6638..6641 + NAME@6638..6641 + IDENT@6638..6641 "arr" + COMMA@6641..6642 "," + WHITESPACE@6642..6643 " " + PARAM@6643..6650 + DESTRUCT_FULL@6643..6647 + NAME@6643..6647 + IDENT@6643..6647 "keyF" + ASSIGN@6647..6648 "=" + EXPR_VAR@6648..6650 + NAME@6648..6650 + IDENT@6648..6650 "id" + R_PAREN@6650..6651 ")" + COLONCOLON@6651..6653 "::" + WHITESPACE@6653..6658 "\n " + SINGLE_LINE_SLASH_COMMENT@6658..6712 "// TODO(dcunnin): Bin ..." + WHITESPACE@6712..6716 " " + EXPR_BINARY@6716..6760 + LHS_EXPR@6716..6756 + EXPR_APPLY@6716..6756 + EXPR_INDEX@6716..6726 + EXPR_VAR@6716..6719 + NAME@6716..6719 + IDENT@6716..6719 "std" + DOT@6719..6720 "." + NAME@6720..6726 + IDENT@6720..6726 "length" + ARGS_DESC@6726..6756 + L_PAREN@6726..6727 "(" + ARG@6727..6755 + EXPR_APPLY@6727..6755 + EXPR_INDEX@6727..6739 + EXPR_VAR@6727..6730 + NAME@6727..6730 + IDENT@6727..6730 "std" + DOT@6730..6731 "." + NAME@6731..6739 + IDENT@6731..6739 "setInter" + ARGS_DESC@6739..6755 + L_PAREN@6739..6740 "(" + ARG@6740..6743 + EXPR_ARRAY@6740..6743 + L_BRACK@6740..6741 "[" + EXPR_VAR@6741..6742 + NAME@6741..6742 + IDENT@6741..6742 "x" + R_BRACK@6742..6743 "]" + COMMA@6743..6744 "," + WHITESPACE@6744..6745 " " + ARG@6745..6748 + EXPR_VAR@6745..6748 + NAME@6745..6748 + IDENT@6745..6748 "arr" + COMMA@6748..6749 "," + WHITESPACE@6749..6750 " " + ARG@6750..6754 + EXPR_VAR@6750..6754 + NAME@6750..6754 + IDENT@6750..6754 "keyF" + R_PAREN@6754..6755 ")" + R_PAREN@6755..6756 ")" + WHITESPACE@6756..6757 " " + GT@6757..6758 ">" + WHITESPACE@6758..6759 " " + EXPR_NUMBER@6759..6760 + FLOAT@6759..6760 "0" + COMMA@6760..6761 "," + WHITESPACE@6761..6765 "\n\n " + MEMBER_FIELD@6765..7314 + FIELD_METHOD@6765..7314 + FIELD_NAME_FIXED@6765..6773 + NAME@6765..6773 + IDENT@6765..6773 "setUnion" + PARAMS_DESC@6773..6788 + L_PAREN@6773..6774 "(" + PARAM@6774..6775 + DESTRUCT_FULL@6774..6775 + NAME@6774..6775 + IDENT@6774..6775 "a" + COMMA@6775..6776 "," + WHITESPACE@6776..6777 " " + PARAM@6777..6778 + DESTRUCT_FULL@6777..6778 + NAME@6777..6778 + IDENT@6777..6778 "b" + COMMA@6778..6779 "," + WHITESPACE@6779..6780 " " + PARAM@6780..6787 + DESTRUCT_FULL@6780..6784 + NAME@6780..6784 + IDENT@6780..6784 "keyF" + ASSIGN@6784..6785 "=" + EXPR_VAR@6785..6787 + NAME@6785..6787 + IDENT@6785..6787 "id" + R_PAREN@6787..6788 ")" + COLONCOLON@6788..6790 "::" + WHITESPACE@6790..6795 "\n " + SINGLE_LINE_SLASH_COMMENT@6795..6837 "// NOTE: order matter ..." + WHITESPACE@6837..6841 " " + EXPR_LOCAL@6841..7314 + LOCAL_KW@6841..6846 "local" + WHITESPACE@6846..6847 " " + BIND_FUNCTION@6847..7289 + NAME@6847..6850 + IDENT@6847..6850 "aux" + PARAMS_DESC@6850..6867 + L_PAREN@6850..6851 "(" + PARAM@6851..6852 + DESTRUCT_FULL@6851..6852 + NAME@6851..6852 + IDENT@6851..6852 "a" + COMMA@6852..6853 "," + WHITESPACE@6853..6854 " " + PARAM@6854..6855 + DESTRUCT_FULL@6854..6855 + NAME@6854..6855 + IDENT@6854..6855 "b" + COMMA@6855..6856 "," + WHITESPACE@6856..6857 " " + PARAM@6857..6858 + DESTRUCT_FULL@6857..6858 + NAME@6857..6858 + IDENT@6857..6858 "i" + COMMA@6858..6859 "," + WHITESPACE@6859..6860 " " + PARAM@6860..6861 + DESTRUCT_FULL@6860..6861 + NAME@6860..6861 + IDENT@6860..6861 "j" + COMMA@6861..6862 "," + WHITESPACE@6862..6863 " " + PARAM@6863..6866 + DESTRUCT_FULL@6863..6866 + NAME@6863..6866 + IDENT@6863..6866 "acc" + R_PAREN@6866..6867 ")" + WHITESPACE@6867..6868 " " + ASSIGN@6868..6869 "=" + WHITESPACE@6869..6876 "\n " + EXPR_IF_THEN_ELSE@6876..7289 + IF_KW@6876..6878 "if" + WHITESPACE@6878..6879 " " + EXPR_BINARY@6879..6897 + LHS_EXPR@6879..6880 + EXPR_VAR@6879..6880 + NAME@6879..6880 + IDENT@6879..6880 "i" + WHITESPACE@6880..6881 " " + GE@6881..6883 ">=" + WHITESPACE@6883..6884 " " + EXPR_APPLY@6884..6897 + EXPR_INDEX@6884..6894 + EXPR_VAR@6884..6887 + NAME@6884..6887 + IDENT@6884..6887 "std" + DOT@6887..6888 "." + NAME@6888..6894 + IDENT@6888..6894 "length" + ARGS_DESC@6894..6897 + L_PAREN@6894..6895 "(" + ARG@6895..6896 + EXPR_VAR@6895..6896 + NAME@6895..6896 + IDENT@6895..6896 "a" + R_PAREN@6896..6897 ")" + WHITESPACE@6897..6898 " " + THEN_KW@6898..6902 "then" + WHITESPACE@6902..6911 "\n " + TRUE_EXPR@6911..6922 + EXPR_BINARY@6911..6922 + LHS_EXPR@6911..6914 + EXPR_VAR@6911..6914 + NAME@6911..6914 + IDENT@6911..6914 "acc" + WHITESPACE@6914..6915 " " + PLUS@6915..6916 "+" + WHITESPACE@6916..6917 " " + EXPR_SLICE@6917..6922 + EXPR_VAR@6917..6918 + NAME@6917..6918 + IDENT@6917..6918 "b" + SLICE_DESC@6918..6922 + L_BRACK@6918..6919 "[" + EXPR_VAR@6919..6920 + NAME@6919..6920 + IDENT@6919..6920 "j" + COLON@6920..6921 ":" + R_BRACK@6921..6922 "]" + WHITESPACE@6922..6929 "\n " + ELSE_KW@6929..6933 "else" + WHITESPACE@6933..6934 " " + FALSE_EXPR@6934..7289 + EXPR_IF_THEN_ELSE@6934..7289 + IF_KW@6934..6936 "if" + WHITESPACE@6936..6937 " " + EXPR_BINARY@6937..6955 + LHS_EXPR@6937..6938 + EXPR_VAR@6937..6938 + NAME@6937..6938 + IDENT@6937..6938 "j" + WHITESPACE@6938..6939 " " + GE@6939..6941 ">=" + WHITESPACE@6941..6942 " " + EXPR_APPLY@6942..6955 + EXPR_INDEX@6942..6952 + EXPR_VAR@6942..6945 + NAME@6942..6945 + IDENT@6942..6945 "std" + DOT@6945..6946 "." + NAME@6946..6952 + IDENT@6946..6952 "length" + ARGS_DESC@6952..6955 + L_PAREN@6952..6953 "(" + ARG@6953..6954 + EXPR_VAR@6953..6954 + NAME@6953..6954 + IDENT@6953..6954 "b" + R_PAREN@6954..6955 ")" + WHITESPACE@6955..6956 " " + THEN_KW@6956..6960 "then" + WHITESPACE@6960..6969 "\n " + TRUE_EXPR@6969..6980 + EXPR_BINARY@6969..6980 + LHS_EXPR@6969..6972 + EXPR_VAR@6969..6972 + NAME@6969..6972 + IDENT@6969..6972 "acc" + WHITESPACE@6972..6973 " " + PLUS@6973..6974 "+" + WHITESPACE@6974..6975 " " + EXPR_SLICE@6975..6980 + EXPR_VAR@6975..6976 + NAME@6975..6976 + IDENT@6975..6976 "a" + SLICE_DESC@6976..6980 + L_BRACK@6976..6977 "[" + EXPR_VAR@6977..6978 + NAME@6977..6978 + IDENT@6977..6978 "i" + COLON@6978..6979 ":" + R_BRACK@6979..6980 "]" + WHITESPACE@6980..6987 "\n " + ELSE_KW@6987..6991 "else" + WHITESPACE@6991..7000 "\n " + FALSE_EXPR@7000..7289 + EXPR_LOCAL@7000..7289 + LOCAL_KW@7000..7005 "local" + WHITESPACE@7005..7006 " " + BIND_DESTRUCT@7006..7021 + DESTRUCT_FULL@7006..7008 + NAME@7006..7008 + IDENT@7006..7008 "ak" + WHITESPACE@7008..7009 " " + ASSIGN@7009..7010 "=" + WHITESPACE@7010..7011 " " + EXPR_APPLY@7011..7021 + EXPR_VAR@7011..7015 + NAME@7011..7015 + IDENT@7011..7015 "keyF" + ARGS_DESC@7015..7021 + L_PAREN@7015..7016 "(" + ARG@7016..7020 + EXPR_INDEX_EXPR@7016..7020 + LHS_EXPR@7016..7017 + EXPR_VAR@7016..7017 + NAME@7016..7017 + IDENT@7016..7017 "a" + L_BRACK@7017..7018 "[" + EXPR_VAR@7018..7019 + NAME@7018..7019 + IDENT@7018..7019 "i" + R_BRACK@7019..7020 "]" + R_PAREN@7020..7021 ")" + SEMI@7021..7022 ";" + WHITESPACE@7022..7031 "\n " + EXPR_LOCAL@7031..7289 + LOCAL_KW@7031..7036 "local" + WHITESPACE@7036..7037 " " + BIND_DESTRUCT@7037..7052 + DESTRUCT_FULL@7037..7039 + NAME@7037..7039 + IDENT@7037..7039 "bk" + WHITESPACE@7039..7040 " " + ASSIGN@7040..7041 "=" + WHITESPACE@7041..7042 " " + EXPR_APPLY@7042..7052 + EXPR_VAR@7042..7046 + NAME@7042..7046 + IDENT@7042..7046 "keyF" + ARGS_DESC@7046..7052 + L_PAREN@7046..7047 "(" + ARG@7047..7051 + EXPR_INDEX_EXPR@7047..7051 + LHS_EXPR@7047..7048 + EXPR_VAR@7047..7048 + NAME@7047..7048 + IDENT@7047..7048 "b" + L_BRACK@7048..7049 "[" + EXPR_VAR@7049..7050 + NAME@7049..7050 + IDENT@7049..7050 "j" + R_BRACK@7050..7051 "]" + R_PAREN@7051..7052 ")" + SEMI@7052..7053 ";" + WHITESPACE@7053..7062 "\n " + EXPR_IF_THEN_ELSE@7062..7289 + IF_KW@7062..7064 "if" + WHITESPACE@7064..7065 " " + EXPR_BINARY@7065..7073 + LHS_EXPR@7065..7067 + EXPR_VAR@7065..7067 + NAME@7065..7067 + IDENT@7065..7067 "ak" + WHITESPACE@7067..7068 " " + EQ@7068..7070 "==" + WHITESPACE@7070..7071 " " + EXPR_VAR@7071..7073 + NAME@7071..7073 + IDENT@7071..7073 "bk" + WHITESPACE@7073..7074 " " + THEN_KW@7074..7078 "then" + WHITESPACE@7078..7089 "\n " + TRUE_EXPR@7089..7137 + EXPR_APPLY@7089..7137 + EXPR_VAR@7089..7092 + NAME@7089..7092 + IDENT@7089..7092 "aux" + ARGS_DESC@7092..7137 + L_PAREN@7092..7093 "(" + ARG@7093..7094 + EXPR_VAR@7093..7094 + NAME@7093..7094 + IDENT@7093..7094 "a" + COMMA@7094..7095 "," + WHITESPACE@7095..7096 " " + ARG@7096..7097 + EXPR_VAR@7096..7097 + NAME@7096..7097 + IDENT@7096..7097 "b" + COMMA@7097..7098 "," + WHITESPACE@7098..7099 " " + ARG@7099..7104 + EXPR_BINARY@7099..7104 + LHS_EXPR@7099..7100 + EXPR_VAR@7099..7100 + NAME@7099..7100 + IDENT@7099..7100 "i" + WHITESPACE@7100..7101 " " + PLUS@7101..7102 "+" + WHITESPACE@7102..7103 " " + EXPR_NUMBER@7103..7104 + FLOAT@7103..7104 "1" + COMMA@7104..7105 "," + WHITESPACE@7105..7106 " " + ARG@7106..7111 + EXPR_BINARY@7106..7111 + LHS_EXPR@7106..7107 + EXPR_VAR@7106..7107 + NAME@7106..7107 + IDENT@7106..7107 "j" + WHITESPACE@7107..7108 " " + PLUS@7108..7109 "+" + WHITESPACE@7109..7110 " " + EXPR_NUMBER@7110..7111 + FLOAT@7110..7111 "1" + COMMA@7111..7112 "," + WHITESPACE@7112..7113 " " + ARG@7113..7125 + EXPR_BINARY@7113..7125 + LHS_EXPR@7113..7116 + EXPR_VAR@7113..7116 + NAME@7113..7116 + IDENT@7113..7116 "acc" + WHITESPACE@7116..7117 " " + PLUS@7117..7118 "+" + WHITESPACE@7118..7119 " " + EXPR_ARRAY@7119..7125 + L_BRACK@7119..7120 "[" + EXPR_INDEX_EXPR@7120..7124 + LHS_EXPR@7120..7121 + EXPR_VAR@7120..7121 + NAME@7120..7121 + IDENT@7120..7121 "a" + L_BRACK@7121..7122 "[" + EXPR_VAR@7122..7123 + NAME@7122..7123 + IDENT@7122..7123 "i" + R_BRACK@7123..7124 "]" + R_BRACK@7124..7125 "]" + R_PAREN@7125..7126 ")" + WHITESPACE@7126..7127 " " + TAILSTRICT_KW@7127..7137 "tailstrict" + WHITESPACE@7137..7146 "\n " + ELSE_KW@7146..7150 "else" + WHITESPACE@7150..7151 " " + FALSE_EXPR@7151..7289 + EXPR_IF_THEN_ELSE@7151..7289 + IF_KW@7151..7153 "if" + WHITESPACE@7153..7154 " " + EXPR_BINARY@7154..7161 + LHS_EXPR@7154..7156 + EXPR_VAR@7154..7156 + NAME@7154..7156 + IDENT@7154..7156 "ak" + WHITESPACE@7156..7157 " " + LT@7157..7158 "<" + WHITESPACE@7158..7159 " " + EXPR_VAR@7159..7161 + NAME@7159..7161 + IDENT@7159..7161 "bk" + WHITESPACE@7161..7162 " " + THEN_KW@7162..7166 "then" + WHITESPACE@7166..7177 "\n " + TRUE_EXPR@7177..7221 + EXPR_APPLY@7177..7221 + EXPR_VAR@7177..7180 + NAME@7177..7180 + IDENT@7177..7180 "aux" + ARGS_DESC@7180..7221 + L_PAREN@7180..7181 "(" + ARG@7181..7182 + EXPR_VAR@7181..7182 + NAME@7181..7182 + IDENT@7181..7182 "a" + COMMA@7182..7183 "," + WHITESPACE@7183..7184 " " + ARG@7184..7185 + EXPR_VAR@7184..7185 + NAME@7184..7185 + IDENT@7184..7185 "b" + COMMA@7185..7186 "," + WHITESPACE@7186..7187 " " + ARG@7187..7192 + EXPR_BINARY@7187..7192 + LHS_EXPR@7187..7188 + EXPR_VAR@7187..7188 + NAME@7187..7188 + IDENT@7187..7188 "i" + WHITESPACE@7188..7189 " " + PLUS@7189..7190 "+" + WHITESPACE@7190..7191 " " + EXPR_NUMBER@7191..7192 + FLOAT@7191..7192 "1" + COMMA@7192..7193 "," + WHITESPACE@7193..7194 " " + ARG@7194..7195 + EXPR_VAR@7194..7195 + NAME@7194..7195 + IDENT@7194..7195 "j" + COMMA@7195..7196 "," + WHITESPACE@7196..7197 " " + ARG@7197..7209 + EXPR_BINARY@7197..7209 + LHS_EXPR@7197..7200 + EXPR_VAR@7197..7200 + NAME@7197..7200 + IDENT@7197..7200 "acc" + WHITESPACE@7200..7201 " " + PLUS@7201..7202 "+" + WHITESPACE@7202..7203 " " + EXPR_ARRAY@7203..7209 + L_BRACK@7203..7204 "[" + EXPR_INDEX_EXPR@7204..7208 + LHS_EXPR@7204..7205 + EXPR_VAR@7204..7205 + NAME@7204..7205 + IDENT@7204..7205 "a" + L_BRACK@7205..7206 "[" + EXPR_VAR@7206..7207 + NAME@7206..7207 + IDENT@7206..7207 "i" + R_BRACK@7207..7208 "]" + R_BRACK@7208..7209 "]" + R_PAREN@7209..7210 ")" + WHITESPACE@7210..7211 " " + TAILSTRICT_KW@7211..7221 "tailstrict" + WHITESPACE@7221..7230 "\n " + ELSE_KW@7230..7234 "else" + WHITESPACE@7234..7245 "\n " + FALSE_EXPR@7245..7289 + EXPR_APPLY@7245..7289 + EXPR_VAR@7245..7248 + NAME@7245..7248 + IDENT@7245..7248 "aux" + ARGS_DESC@7248..7289 + L_PAREN@7248..7249 "(" + ARG@7249..7250 + EXPR_VAR@7249..7250 + NAME@7249..7250 + IDENT@7249..7250 "a" + COMMA@7250..7251 "," + WHITESPACE@7251..7252 " " + ARG@7252..7253 + EXPR_VAR@7252..7253 + NAME@7252..7253 + IDENT@7252..7253 "b" + COMMA@7253..7254 "," + WHITESPACE@7254..7255 " " + ARG@7255..7256 + EXPR_VAR@7255..7256 + NAME@7255..7256 + IDENT@7255..7256 "i" + COMMA@7256..7257 "," + WHITESPACE@7257..7258 " " + ARG@7258..7263 + EXPR_BINARY@7258..7263 + LHS_EXPR@7258..7259 + EXPR_VAR@7258..7259 + NAME@7258..7259 + IDENT@7258..7259 "j" + WHITESPACE@7259..7260 " " + PLUS@7260..7261 "+" + WHITESPACE@7261..7262 " " + EXPR_NUMBER@7262..7263 + FLOAT@7262..7263 "1" + COMMA@7263..7264 "," + WHITESPACE@7264..7265 " " + ARG@7265..7277 + EXPR_BINARY@7265..7277 + LHS_EXPR@7265..7268 + EXPR_VAR@7265..7268 + NAME@7265..7268 + IDENT@7265..7268 "acc" + WHITESPACE@7268..7269 " " + PLUS@7269..7270 "+" + WHITESPACE@7270..7271 " " + EXPR_ARRAY@7271..7277 + L_BRACK@7271..7272 "[" + EXPR_INDEX_EXPR@7272..7276 + LHS_EXPR@7272..7273 + EXPR_VAR@7272..7273 + NAME@7272..7273 + IDENT@7272..7273 "b" + L_BRACK@7273..7274 "[" + EXPR_VAR@7274..7275 + NAME@7274..7275 + IDENT@7274..7275 "j" + R_BRACK@7275..7276 "]" + R_BRACK@7276..7277 "]" + R_PAREN@7277..7278 ")" + WHITESPACE@7278..7279 " " + TAILSTRICT_KW@7279..7289 "tailstrict" + SEMI@7289..7290 ";" + WHITESPACE@7290..7295 "\n " + EXPR_APPLY@7295..7314 + EXPR_VAR@7295..7298 + NAME@7295..7298 + IDENT@7295..7298 "aux" + ARGS_DESC@7298..7314 + L_PAREN@7298..7299 "(" + ARG@7299..7300 + EXPR_VAR@7299..7300 + NAME@7299..7300 + IDENT@7299..7300 "a" + COMMA@7300..7301 "," + WHITESPACE@7301..7302 " " + ARG@7302..7303 + EXPR_VAR@7302..7303 + NAME@7302..7303 + IDENT@7302..7303 "b" + COMMA@7303..7304 "," + WHITESPACE@7304..7305 " " + ARG@7305..7306 + EXPR_NUMBER@7305..7306 + FLOAT@7305..7306 "0" + COMMA@7306..7307 "," + WHITESPACE@7307..7308 " " + ARG@7308..7309 + EXPR_NUMBER@7308..7309 + FLOAT@7308..7309 "0" + COMMA@7309..7310 "," + WHITESPACE@7310..7311 " " + ARG@7311..7313 + EXPR_ARRAY@7311..7313 + L_BRACK@7311..7312 "[" + R_BRACK@7312..7313 "]" + R_PAREN@7313..7314 ")" + COMMA@7314..7315 "," + WHITESPACE@7315..7319 "\n\n " + MEMBER_FIELD@7319..7741 + FIELD_METHOD@7319..7741 + FIELD_NAME_FIXED@7319..7327 + NAME@7319..7327 + IDENT@7319..7327 "setInter" + PARAMS_DESC@7327..7342 + L_PAREN@7327..7328 "(" + PARAM@7328..7329 + DESTRUCT_FULL@7328..7329 + NAME@7328..7329 + IDENT@7328..7329 "a" + COMMA@7329..7330 "," + WHITESPACE@7330..7331 " " + PARAM@7331..7332 + DESTRUCT_FULL@7331..7332 + NAME@7331..7332 + IDENT@7331..7332 "b" + COMMA@7332..7333 "," + WHITESPACE@7333..7334 " " + PARAM@7334..7341 + DESTRUCT_FULL@7334..7338 + NAME@7334..7338 + IDENT@7334..7338 "keyF" + ASSIGN@7338..7339 "=" + EXPR_VAR@7339..7341 + NAME@7339..7341 + IDENT@7339..7341 "id" + R_PAREN@7341..7342 ")" + COLONCOLON@7342..7344 "::" + WHITESPACE@7344..7349 "\n " + EXPR_LOCAL@7349..7741 + LOCAL_KW@7349..7354 "local" + WHITESPACE@7354..7355 " " + BIND_FUNCTION@7355..7705 + NAME@7355..7358 + IDENT@7355..7358 "aux" + PARAMS_DESC@7358..7375 + L_PAREN@7358..7359 "(" + PARAM@7359..7360 + DESTRUCT_FULL@7359..7360 + NAME@7359..7360 + IDENT@7359..7360 "a" + COMMA@7360..7361 "," + WHITESPACE@7361..7362 " " + PARAM@7362..7363 + DESTRUCT_FULL@7362..7363 + NAME@7362..7363 + IDENT@7362..7363 "b" + COMMA@7363..7364 "," + WHITESPACE@7364..7365 " " + PARAM@7365..7366 + DESTRUCT_FULL@7365..7366 + NAME@7365..7366 + IDENT@7365..7366 "i" + COMMA@7366..7367 "," + WHITESPACE@7367..7368 " " + PARAM@7368..7369 + DESTRUCT_FULL@7368..7369 + NAME@7368..7369 + IDENT@7368..7369 "j" + COMMA@7369..7370 "," + WHITESPACE@7370..7371 " " + PARAM@7371..7374 + DESTRUCT_FULL@7371..7374 + NAME@7371..7374 + IDENT@7371..7374 "acc" + R_PAREN@7374..7375 ")" + WHITESPACE@7375..7376 " " + ASSIGN@7376..7377 "=" + WHITESPACE@7377..7384 "\n " + EXPR_IF_THEN_ELSE@7384..7705 + IF_KW@7384..7386 "if" + WHITESPACE@7386..7387 " " + EXPR_BINARY@7387..7427 + LHS_EXPR@7387..7405 + EXPR_BINARY@7387..7405 + LHS_EXPR@7387..7388 + EXPR_VAR@7387..7388 + NAME@7387..7388 + IDENT@7387..7388 "i" + WHITESPACE@7388..7389 " " + GE@7389..7391 ">=" + WHITESPACE@7391..7392 " " + EXPR_APPLY@7392..7405 + EXPR_INDEX@7392..7402 + EXPR_VAR@7392..7395 + NAME@7392..7395 + IDENT@7392..7395 "std" + DOT@7395..7396 "." + NAME@7396..7402 + IDENT@7396..7402 "length" + ARGS_DESC@7402..7405 + L_PAREN@7402..7403 "(" + ARG@7403..7404 + EXPR_VAR@7403..7404 + NAME@7403..7404 + IDENT@7403..7404 "a" + R_PAREN@7404..7405 ")" + WHITESPACE@7405..7406 " " + OR@7406..7408 "||" + WHITESPACE@7408..7409 " " + EXPR_BINARY@7409..7427 + LHS_EXPR@7409..7410 + EXPR_VAR@7409..7410 + NAME@7409..7410 + IDENT@7409..7410 "j" + WHITESPACE@7410..7411 " " + GE@7411..7413 ">=" + WHITESPACE@7413..7414 " " + EXPR_APPLY@7414..7427 + EXPR_INDEX@7414..7424 + EXPR_VAR@7414..7417 + NAME@7414..7417 + IDENT@7414..7417 "std" + DOT@7417..7418 "." + NAME@7418..7424 + IDENT@7418..7424 "length" + ARGS_DESC@7424..7427 + L_PAREN@7424..7425 "(" + ARG@7425..7426 + EXPR_VAR@7425..7426 + NAME@7425..7426 + IDENT@7425..7426 "b" + R_PAREN@7426..7427 ")" + WHITESPACE@7427..7428 " " + THEN_KW@7428..7432 "then" + WHITESPACE@7432..7441 "\n " + TRUE_EXPR@7441..7444 + EXPR_VAR@7441..7444 + NAME@7441..7444 + IDENT@7441..7444 "acc" + WHITESPACE@7444..7451 "\n " + ELSE_KW@7451..7455 "else" + WHITESPACE@7455..7464 "\n " + FALSE_EXPR@7464..7705 + EXPR_IF_THEN_ELSE@7464..7705 + IF_KW@7464..7466 "if" + WHITESPACE@7466..7467 " " + EXPR_BINARY@7467..7491 + LHS_EXPR@7467..7477 + EXPR_APPLY@7467..7477 + EXPR_VAR@7467..7471 + NAME@7467..7471 + IDENT@7467..7471 "keyF" + ARGS_DESC@7471..7477 + L_PAREN@7471..7472 "(" + ARG@7472..7476 + EXPR_INDEX_EXPR@7472..7476 + LHS_EXPR@7472..7473 + EXPR_VAR@7472..7473 + NAME@7472..7473 + IDENT@7472..7473 "a" + L_BRACK@7473..7474 "[" + EXPR_VAR@7474..7475 + NAME@7474..7475 + IDENT@7474..7475 "i" + R_BRACK@7475..7476 "]" + R_PAREN@7476..7477 ")" + WHITESPACE@7477..7478 " " + EQ@7478..7480 "==" + WHITESPACE@7480..7481 " " + EXPR_APPLY@7481..7491 + EXPR_VAR@7481..7485 + NAME@7481..7485 + IDENT@7481..7485 "keyF" + ARGS_DESC@7485..7491 + L_PAREN@7485..7486 "(" + ARG@7486..7490 + EXPR_INDEX_EXPR@7486..7490 + LHS_EXPR@7486..7487 + EXPR_VAR@7486..7487 + NAME@7486..7487 + IDENT@7486..7487 "b" + L_BRACK@7487..7488 "[" + EXPR_VAR@7488..7489 + NAME@7488..7489 + IDENT@7488..7489 "j" + R_BRACK@7489..7490 "]" + R_PAREN@7490..7491 ")" + WHITESPACE@7491..7492 " " + THEN_KW@7492..7496 "then" + WHITESPACE@7496..7507 "\n " + TRUE_EXPR@7507..7555 + EXPR_APPLY@7507..7555 + EXPR_VAR@7507..7510 + NAME@7507..7510 + IDENT@7507..7510 "aux" + ARGS_DESC@7510..7555 + L_PAREN@7510..7511 "(" + ARG@7511..7512 + EXPR_VAR@7511..7512 + NAME@7511..7512 + IDENT@7511..7512 "a" + COMMA@7512..7513 "," + WHITESPACE@7513..7514 " " + ARG@7514..7515 + EXPR_VAR@7514..7515 + NAME@7514..7515 + IDENT@7514..7515 "b" + COMMA@7515..7516 "," + WHITESPACE@7516..7517 " " + ARG@7517..7522 + EXPR_BINARY@7517..7522 + LHS_EXPR@7517..7518 + EXPR_VAR@7517..7518 + NAME@7517..7518 + IDENT@7517..7518 "i" + WHITESPACE@7518..7519 " " + PLUS@7519..7520 "+" + WHITESPACE@7520..7521 " " + EXPR_NUMBER@7521..7522 + FLOAT@7521..7522 "1" + COMMA@7522..7523 "," + WHITESPACE@7523..7524 " " + ARG@7524..7529 + EXPR_BINARY@7524..7529 + LHS_EXPR@7524..7525 + EXPR_VAR@7524..7525 + NAME@7524..7525 + IDENT@7524..7525 "j" + WHITESPACE@7525..7526 " " + PLUS@7526..7527 "+" + WHITESPACE@7527..7528 " " + EXPR_NUMBER@7528..7529 + FLOAT@7528..7529 "1" + COMMA@7529..7530 "," + WHITESPACE@7530..7531 " " + ARG@7531..7543 + EXPR_BINARY@7531..7543 + LHS_EXPR@7531..7534 + EXPR_VAR@7531..7534 + NAME@7531..7534 + IDENT@7531..7534 "acc" + WHITESPACE@7534..7535 " " + PLUS@7535..7536 "+" + WHITESPACE@7536..7537 " " + EXPR_ARRAY@7537..7543 + L_BRACK@7537..7538 "[" + EXPR_INDEX_EXPR@7538..7542 + LHS_EXPR@7538..7539 + EXPR_VAR@7538..7539 + NAME@7538..7539 + IDENT@7538..7539 "a" + L_BRACK@7539..7540 "[" + EXPR_VAR@7540..7541 + NAME@7540..7541 + IDENT@7540..7541 "i" + R_BRACK@7541..7542 "]" + R_BRACK@7542..7543 "]" + R_PAREN@7543..7544 ")" + WHITESPACE@7544..7545 " " + TAILSTRICT_KW@7545..7555 "tailstrict" + WHITESPACE@7555..7564 "\n " + ELSE_KW@7564..7568 "else" + WHITESPACE@7568..7569 " " + FALSE_EXPR@7569..7705 + EXPR_IF_THEN_ELSE@7569..7705 + IF_KW@7569..7571 "if" + WHITESPACE@7571..7572 " " + EXPR_BINARY@7572..7595 + LHS_EXPR@7572..7582 + EXPR_APPLY@7572..7582 + EXPR_VAR@7572..7576 + NAME@7572..7576 + IDENT@7572..7576 "keyF" + ARGS_DESC@7576..7582 + L_PAREN@7576..7577 "(" + ARG@7577..7581 + EXPR_INDEX_EXPR@7577..7581 + LHS_EXPR@7577..7578 + EXPR_VAR@7577..7578 + NAME@7577..7578 + IDENT@7577..7578 "a" + L_BRACK@7578..7579 "[" + EXPR_VAR@7579..7580 + NAME@7579..7580 + IDENT@7579..7580 "i" + R_BRACK@7580..7581 "]" + R_PAREN@7581..7582 ")" + WHITESPACE@7582..7583 " " + LT@7583..7584 "<" + WHITESPACE@7584..7585 " " + EXPR_APPLY@7585..7595 + EXPR_VAR@7585..7589 + NAME@7585..7589 + IDENT@7585..7589 "keyF" + ARGS_DESC@7589..7595 + L_PAREN@7589..7590 "(" + ARG@7590..7594 + EXPR_INDEX_EXPR@7590..7594 + LHS_EXPR@7590..7591 + EXPR_VAR@7590..7591 + NAME@7590..7591 + IDENT@7590..7591 "b" + L_BRACK@7591..7592 "[" + EXPR_VAR@7592..7593 + NAME@7592..7593 + IDENT@7592..7593 "j" + R_BRACK@7593..7594 "]" + R_PAREN@7594..7595 ")" + WHITESPACE@7595..7596 " " + THEN_KW@7596..7600 "then" + WHITESPACE@7600..7611 "\n " + TRUE_EXPR@7611..7646 + EXPR_APPLY@7611..7646 + EXPR_VAR@7611..7614 + NAME@7611..7614 + IDENT@7611..7614 "aux" + ARGS_DESC@7614..7646 + L_PAREN@7614..7615 "(" + ARG@7615..7616 + EXPR_VAR@7615..7616 + NAME@7615..7616 + IDENT@7615..7616 "a" + COMMA@7616..7617 "," + WHITESPACE@7617..7618 " " + ARG@7618..7619 + EXPR_VAR@7618..7619 + NAME@7618..7619 + IDENT@7618..7619 "b" + COMMA@7619..7620 "," + WHITESPACE@7620..7621 " " + ARG@7621..7626 + EXPR_BINARY@7621..7626 + LHS_EXPR@7621..7622 + EXPR_VAR@7621..7622 + NAME@7621..7622 + IDENT@7621..7622 "i" + WHITESPACE@7622..7623 " " + PLUS@7623..7624 "+" + WHITESPACE@7624..7625 " " + EXPR_NUMBER@7625..7626 + FLOAT@7625..7626 "1" + COMMA@7626..7627 "," + WHITESPACE@7627..7628 " " + ARG@7628..7629 + EXPR_VAR@7628..7629 + NAME@7628..7629 + IDENT@7628..7629 "j" + COMMA@7629..7630 "," + WHITESPACE@7630..7631 " " + ARG@7631..7634 + EXPR_VAR@7631..7634 + NAME@7631..7634 + IDENT@7631..7634 "acc" + R_PAREN@7634..7635 ")" + WHITESPACE@7635..7636 " " + TAILSTRICT_KW@7636..7646 "tailstrict" + WHITESPACE@7646..7655 "\n " + ELSE_KW@7655..7659 "else" + WHITESPACE@7659..7670 "\n " + FALSE_EXPR@7670..7705 + EXPR_APPLY@7670..7705 + EXPR_VAR@7670..7673 + NAME@7670..7673 + IDENT@7670..7673 "aux" + ARGS_DESC@7673..7705 + L_PAREN@7673..7674 "(" + ARG@7674..7675 + EXPR_VAR@7674..7675 + NAME@7674..7675 + IDENT@7674..7675 "a" + COMMA@7675..7676 "," + WHITESPACE@7676..7677 " " + ARG@7677..7678 + EXPR_VAR@7677..7678 + NAME@7677..7678 + IDENT@7677..7678 "b" + COMMA@7678..7679 "," + WHITESPACE@7679..7680 " " + ARG@7680..7681 + EXPR_VAR@7680..7681 + NAME@7680..7681 + IDENT@7680..7681 "i" + COMMA@7681..7682 "," + WHITESPACE@7682..7683 " " + ARG@7683..7688 + EXPR_BINARY@7683..7688 + LHS_EXPR@7683..7684 + EXPR_VAR@7683..7684 + NAME@7683..7684 + IDENT@7683..7684 "j" + WHITESPACE@7684..7685 " " + PLUS@7685..7686 "+" + WHITESPACE@7686..7687 " " + EXPR_NUMBER@7687..7688 + FLOAT@7687..7688 "1" + COMMA@7688..7689 "," + WHITESPACE@7689..7690 " " + ARG@7690..7693 + EXPR_VAR@7690..7693 + NAME@7690..7693 + IDENT@7690..7693 "acc" + R_PAREN@7693..7694 ")" + WHITESPACE@7694..7695 " " + TAILSTRICT_KW@7695..7705 "tailstrict" + SEMI@7705..7706 ";" + WHITESPACE@7706..7711 "\n " + EXPR_APPLY@7711..7741 + EXPR_VAR@7711..7714 + NAME@7711..7714 + IDENT@7711..7714 "aux" + ARGS_DESC@7714..7741 + L_PAREN@7714..7715 "(" + ARG@7715..7716 + EXPR_VAR@7715..7716 + NAME@7715..7716 + IDENT@7715..7716 "a" + COMMA@7716..7717 "," + WHITESPACE@7717..7718 " " + ARG@7718..7719 + EXPR_VAR@7718..7719 + NAME@7718..7719 + IDENT@7718..7719 "b" + COMMA@7719..7720 "," + WHITESPACE@7720..7721 " " + ARG@7721..7722 + EXPR_NUMBER@7721..7722 + FLOAT@7721..7722 "0" + COMMA@7722..7723 "," + WHITESPACE@7723..7724 " " + ARG@7724..7725 + EXPR_NUMBER@7724..7725 + FLOAT@7724..7725 "0" + COMMA@7725..7726 "," + WHITESPACE@7726..7727 " " + ARG@7727..7729 + EXPR_ARRAY@7727..7729 + L_BRACK@7727..7728 "[" + R_BRACK@7728..7729 "]" + R_PAREN@7729..7730 ")" + WHITESPACE@7730..7731 " " + TAILSTRICT_KW@7731..7741 "tailstrict" + COMMA@7741..7742 "," + WHITESPACE@7742..7746 "\n\n " + MEMBER_FIELD@7746..8203 + FIELD_METHOD@7746..8203 + FIELD_NAME_FIXED@7746..7753 + NAME@7746..7753 + IDENT@7746..7753 "setDiff" + PARAMS_DESC@7753..7768 + L_PAREN@7753..7754 "(" + PARAM@7754..7755 + DESTRUCT_FULL@7754..7755 + NAME@7754..7755 + IDENT@7754..7755 "a" + COMMA@7755..7756 "," + WHITESPACE@7756..7757 " " + PARAM@7757..7758 + DESTRUCT_FULL@7757..7758 + NAME@7757..7758 + IDENT@7757..7758 "b" + COMMA@7758..7759 "," + WHITESPACE@7759..7760 " " + PARAM@7760..7767 + DESTRUCT_FULL@7760..7764 + NAME@7760..7764 + IDENT@7760..7764 "keyF" + ASSIGN@7764..7765 "=" + EXPR_VAR@7765..7767 + NAME@7765..7767 + IDENT@7765..7767 "id" + R_PAREN@7767..7768 ")" + COLONCOLON@7768..7770 "::" + WHITESPACE@7770..7775 "\n " + EXPR_LOCAL@7775..8203 + LOCAL_KW@7775..7780 "local" + WHITESPACE@7780..7781 " " + BIND_FUNCTION@7781..8167 + NAME@7781..7784 + IDENT@7781..7784 "aux" + PARAMS_DESC@7784..7801 + L_PAREN@7784..7785 "(" + PARAM@7785..7786 + DESTRUCT_FULL@7785..7786 + NAME@7785..7786 + IDENT@7785..7786 "a" + COMMA@7786..7787 "," + WHITESPACE@7787..7788 " " + PARAM@7788..7789 + DESTRUCT_FULL@7788..7789 + NAME@7788..7789 + IDENT@7788..7789 "b" + COMMA@7789..7790 "," + WHITESPACE@7790..7791 " " + PARAM@7791..7792 + DESTRUCT_FULL@7791..7792 + NAME@7791..7792 + IDENT@7791..7792 "i" + COMMA@7792..7793 "," + WHITESPACE@7793..7794 " " + PARAM@7794..7795 + DESTRUCT_FULL@7794..7795 + NAME@7794..7795 + IDENT@7794..7795 "j" + COMMA@7795..7796 "," + WHITESPACE@7796..7797 " " + PARAM@7797..7800 + DESTRUCT_FULL@7797..7800 + NAME@7797..7800 + IDENT@7797..7800 "acc" + R_PAREN@7800..7801 ")" + WHITESPACE@7801..7802 " " + ASSIGN@7802..7803 "=" + WHITESPACE@7803..7810 "\n " + EXPR_IF_THEN_ELSE@7810..8167 + IF_KW@7810..7812 "if" + WHITESPACE@7812..7813 " " + EXPR_BINARY@7813..7831 + LHS_EXPR@7813..7814 + EXPR_VAR@7813..7814 + NAME@7813..7814 + IDENT@7813..7814 "i" + WHITESPACE@7814..7815 " " + GE@7815..7817 ">=" + WHITESPACE@7817..7818 " " + EXPR_APPLY@7818..7831 + EXPR_INDEX@7818..7828 + EXPR_VAR@7818..7821 + NAME@7818..7821 + IDENT@7818..7821 "std" + DOT@7821..7822 "." + NAME@7822..7828 + IDENT@7822..7828 "length" + ARGS_DESC@7828..7831 + L_PAREN@7828..7829 "(" + ARG@7829..7830 + EXPR_VAR@7829..7830 + NAME@7829..7830 + IDENT@7829..7830 "a" + R_PAREN@7830..7831 ")" + WHITESPACE@7831..7832 " " + THEN_KW@7832..7836 "then" + WHITESPACE@7836..7845 "\n " + TRUE_EXPR@7845..7848 + EXPR_VAR@7845..7848 + NAME@7845..7848 + IDENT@7845..7848 "acc" + WHITESPACE@7848..7855 "\n " + ELSE_KW@7855..7859 "else" + WHITESPACE@7859..7860 " " + FALSE_EXPR@7860..8167 + EXPR_IF_THEN_ELSE@7860..8167 + IF_KW@7860..7862 "if" + WHITESPACE@7862..7863 " " + EXPR_BINARY@7863..7881 + LHS_EXPR@7863..7864 + EXPR_VAR@7863..7864 + NAME@7863..7864 + IDENT@7863..7864 "j" + WHITESPACE@7864..7865 " " + GE@7865..7867 ">=" + WHITESPACE@7867..7868 " " + EXPR_APPLY@7868..7881 + EXPR_INDEX@7868..7878 + EXPR_VAR@7868..7871 + NAME@7868..7871 + IDENT@7868..7871 "std" + DOT@7871..7872 "." + NAME@7872..7878 + IDENT@7872..7878 "length" + ARGS_DESC@7878..7881 + L_PAREN@7878..7879 "(" + ARG@7879..7880 + EXPR_VAR@7879..7880 + NAME@7879..7880 + IDENT@7879..7880 "b" + R_PAREN@7880..7881 ")" + WHITESPACE@7881..7882 " " + THEN_KW@7882..7886 "then" + WHITESPACE@7886..7895 "\n " + TRUE_EXPR@7895..7906 + EXPR_BINARY@7895..7906 + LHS_EXPR@7895..7898 + EXPR_VAR@7895..7898 + NAME@7895..7898 + IDENT@7895..7898 "acc" + WHITESPACE@7898..7899 " " + PLUS@7899..7900 "+" + WHITESPACE@7900..7901 " " + EXPR_SLICE@7901..7906 + EXPR_VAR@7901..7902 + NAME@7901..7902 + IDENT@7901..7902 "a" + SLICE_DESC@7902..7906 + L_BRACK@7902..7903 "[" + EXPR_VAR@7903..7904 + NAME@7903..7904 + IDENT@7903..7904 "i" + COLON@7904..7905 ":" + R_BRACK@7905..7906 "]" + WHITESPACE@7906..7913 "\n " + ELSE_KW@7913..7917 "else" + WHITESPACE@7917..7926 "\n " + FALSE_EXPR@7926..8167 + EXPR_IF_THEN_ELSE@7926..8167 + IF_KW@7926..7928 "if" + WHITESPACE@7928..7929 " " + EXPR_BINARY@7929..7953 + LHS_EXPR@7929..7939 + EXPR_APPLY@7929..7939 + EXPR_VAR@7929..7933 + NAME@7929..7933 + IDENT@7929..7933 "keyF" + ARGS_DESC@7933..7939 + L_PAREN@7933..7934 "(" + ARG@7934..7938 + EXPR_INDEX_EXPR@7934..7938 + LHS_EXPR@7934..7935 + EXPR_VAR@7934..7935 + NAME@7934..7935 + IDENT@7934..7935 "a" + L_BRACK@7935..7936 "[" + EXPR_VAR@7936..7937 + NAME@7936..7937 + IDENT@7936..7937 "i" + R_BRACK@7937..7938 "]" + R_PAREN@7938..7939 ")" + WHITESPACE@7939..7940 " " + EQ@7940..7942 "==" + WHITESPACE@7942..7943 " " + EXPR_APPLY@7943..7953 + EXPR_VAR@7943..7947 + NAME@7943..7947 + IDENT@7943..7947 "keyF" + ARGS_DESC@7947..7953 + L_PAREN@7947..7948 "(" + ARG@7948..7952 + EXPR_INDEX_EXPR@7948..7952 + LHS_EXPR@7948..7949 + EXPR_VAR@7948..7949 + NAME@7948..7949 + IDENT@7948..7949 "b" + L_BRACK@7949..7950 "[" + EXPR_VAR@7950..7951 + NAME@7950..7951 + IDENT@7950..7951 "j" + R_BRACK@7951..7952 "]" + R_PAREN@7952..7953 ")" + WHITESPACE@7953..7954 " " + THEN_KW@7954..7958 "then" + WHITESPACE@7958..7969 "\n " + TRUE_EXPR@7969..8008 + EXPR_APPLY@7969..8008 + EXPR_VAR@7969..7972 + NAME@7969..7972 + IDENT@7969..7972 "aux" + ARGS_DESC@7972..8008 + L_PAREN@7972..7973 "(" + ARG@7973..7974 + EXPR_VAR@7973..7974 + NAME@7973..7974 + IDENT@7973..7974 "a" + COMMA@7974..7975 "," + WHITESPACE@7975..7976 " " + ARG@7976..7977 + EXPR_VAR@7976..7977 + NAME@7976..7977 + IDENT@7976..7977 "b" + COMMA@7977..7978 "," + WHITESPACE@7978..7979 " " + ARG@7979..7984 + EXPR_BINARY@7979..7984 + LHS_EXPR@7979..7980 + EXPR_VAR@7979..7980 + NAME@7979..7980 + IDENT@7979..7980 "i" + WHITESPACE@7980..7981 " " + PLUS@7981..7982 "+" + WHITESPACE@7982..7983 " " + EXPR_NUMBER@7983..7984 + FLOAT@7983..7984 "1" + COMMA@7984..7985 "," + WHITESPACE@7985..7986 " " + ARG@7986..7991 + EXPR_BINARY@7986..7991 + LHS_EXPR@7986..7987 + EXPR_VAR@7986..7987 + NAME@7986..7987 + IDENT@7986..7987 "j" + WHITESPACE@7987..7988 " " + PLUS@7988..7989 "+" + WHITESPACE@7989..7990 " " + EXPR_NUMBER@7990..7991 + FLOAT@7990..7991 "1" + COMMA@7991..7992 "," + WHITESPACE@7992..7993 " " + ARG@7993..7996 + EXPR_VAR@7993..7996 + NAME@7993..7996 + IDENT@7993..7996 "acc" + R_PAREN@7996..7997 ")" + WHITESPACE@7997..7998 " " + TAILSTRICT_KW@7998..8008 "tailstrict" + WHITESPACE@8008..8017 "\n " + ELSE_KW@8017..8021 "else" + WHITESPACE@8021..8022 " " + FALSE_EXPR@8022..8167 + EXPR_IF_THEN_ELSE@8022..8167 + IF_KW@8022..8024 "if" + WHITESPACE@8024..8025 " " + EXPR_BINARY@8025..8048 + LHS_EXPR@8025..8035 + EXPR_APPLY@8025..8035 + EXPR_VAR@8025..8029 + NAME@8025..8029 + IDENT@8025..8029 "keyF" + ARGS_DESC@8029..8035 + L_PAREN@8029..8030 "(" + ARG@8030..8034 + EXPR_INDEX_EXPR@8030..8034 + LHS_EXPR@8030..8031 + EXPR_VAR@8030..8031 + NAME@8030..8031 + IDENT@8030..8031 "a" + L_BRACK@8031..8032 "[" + EXPR_VAR@8032..8033 + NAME@8032..8033 + IDENT@8032..8033 "i" + R_BRACK@8033..8034 "]" + R_PAREN@8034..8035 ")" + WHITESPACE@8035..8036 " " + LT@8036..8037 "<" + WHITESPACE@8037..8038 " " + EXPR_APPLY@8038..8048 + EXPR_VAR@8038..8042 + NAME@8038..8042 + IDENT@8038..8042 "keyF" + ARGS_DESC@8042..8048 + L_PAREN@8042..8043 "(" + ARG@8043..8047 + EXPR_INDEX_EXPR@8043..8047 + LHS_EXPR@8043..8044 + EXPR_VAR@8043..8044 + NAME@8043..8044 + IDENT@8043..8044 "b" + L_BRACK@8044..8045 "[" + EXPR_VAR@8045..8046 + NAME@8045..8046 + IDENT@8045..8046 "j" + R_BRACK@8046..8047 "]" + R_PAREN@8047..8048 ")" + WHITESPACE@8048..8049 " " + THEN_KW@8049..8053 "then" + WHITESPACE@8053..8064 "\n " + TRUE_EXPR@8064..8108 + EXPR_APPLY@8064..8108 + EXPR_VAR@8064..8067 + NAME@8064..8067 + IDENT@8064..8067 "aux" + ARGS_DESC@8067..8108 + L_PAREN@8067..8068 "(" + ARG@8068..8069 + EXPR_VAR@8068..8069 + NAME@8068..8069 + IDENT@8068..8069 "a" + COMMA@8069..8070 "," + WHITESPACE@8070..8071 " " + ARG@8071..8072 + EXPR_VAR@8071..8072 + NAME@8071..8072 + IDENT@8071..8072 "b" + COMMA@8072..8073 "," + WHITESPACE@8073..8074 " " + ARG@8074..8079 + EXPR_BINARY@8074..8079 + LHS_EXPR@8074..8075 + EXPR_VAR@8074..8075 + NAME@8074..8075 + IDENT@8074..8075 "i" + WHITESPACE@8075..8076 " " + PLUS@8076..8077 "+" + WHITESPACE@8077..8078 " " + EXPR_NUMBER@8078..8079 + FLOAT@8078..8079 "1" + COMMA@8079..8080 "," + WHITESPACE@8080..8081 " " + ARG@8081..8082 + EXPR_VAR@8081..8082 + NAME@8081..8082 + IDENT@8081..8082 "j" + COMMA@8082..8083 "," + WHITESPACE@8083..8084 " " + ARG@8084..8096 + EXPR_BINARY@8084..8096 + LHS_EXPR@8084..8087 + EXPR_VAR@8084..8087 + NAME@8084..8087 + IDENT@8084..8087 "acc" + WHITESPACE@8087..8088 " " + PLUS@8088..8089 "+" + WHITESPACE@8089..8090 " " + EXPR_ARRAY@8090..8096 + L_BRACK@8090..8091 "[" + EXPR_INDEX_EXPR@8091..8095 + LHS_EXPR@8091..8092 + EXPR_VAR@8091..8092 + NAME@8091..8092 + IDENT@8091..8092 "a" + L_BRACK@8092..8093 "[" + EXPR_VAR@8093..8094 + NAME@8093..8094 + IDENT@8093..8094 "i" + R_BRACK@8094..8095 "]" + R_BRACK@8095..8096 "]" + R_PAREN@8096..8097 ")" + WHITESPACE@8097..8098 " " + TAILSTRICT_KW@8098..8108 "tailstrict" + WHITESPACE@8108..8117 "\n " + ELSE_KW@8117..8121 "else" + WHITESPACE@8121..8132 "\n " + FALSE_EXPR@8132..8167 + EXPR_APPLY@8132..8167 + EXPR_VAR@8132..8135 + NAME@8132..8135 + IDENT@8132..8135 "aux" + ARGS_DESC@8135..8167 + L_PAREN@8135..8136 "(" + ARG@8136..8137 + EXPR_VAR@8136..8137 + NAME@8136..8137 + IDENT@8136..8137 "a" + COMMA@8137..8138 "," + WHITESPACE@8138..8139 " " + ARG@8139..8140 + EXPR_VAR@8139..8140 + NAME@8139..8140 + IDENT@8139..8140 "b" + COMMA@8140..8141 "," + WHITESPACE@8141..8142 " " + ARG@8142..8143 + EXPR_VAR@8142..8143 + NAME@8142..8143 + IDENT@8142..8143 "i" + COMMA@8143..8144 "," + WHITESPACE@8144..8145 " " + ARG@8145..8150 + EXPR_BINARY@8145..8150 + LHS_EXPR@8145..8146 + EXPR_VAR@8145..8146 + NAME@8145..8146 + IDENT@8145..8146 "j" + WHITESPACE@8146..8147 " " + PLUS@8147..8148 "+" + WHITESPACE@8148..8149 " " + EXPR_NUMBER@8149..8150 + FLOAT@8149..8150 "1" + COMMA@8150..8151 "," + WHITESPACE@8151..8152 " " + ARG@8152..8155 + EXPR_VAR@8152..8155 + NAME@8152..8155 + IDENT@8152..8155 "acc" + R_PAREN@8155..8156 ")" + WHITESPACE@8156..8157 " " + TAILSTRICT_KW@8157..8167 "tailstrict" + SEMI@8167..8168 ";" + WHITESPACE@8168..8173 "\n " + EXPR_APPLY@8173..8203 + EXPR_VAR@8173..8176 + NAME@8173..8176 + IDENT@8173..8176 "aux" + ARGS_DESC@8176..8203 + L_PAREN@8176..8177 "(" + ARG@8177..8178 + EXPR_VAR@8177..8178 + NAME@8177..8178 + IDENT@8177..8178 "a" + COMMA@8178..8179 "," + WHITESPACE@8179..8180 " " + ARG@8180..8181 + EXPR_VAR@8180..8181 + NAME@8180..8181 + IDENT@8180..8181 "b" + COMMA@8181..8182 "," + WHITESPACE@8182..8183 " " + ARG@8183..8184 + EXPR_NUMBER@8183..8184 + FLOAT@8183..8184 "0" + COMMA@8184..8185 "," + WHITESPACE@8185..8186 " " + ARG@8186..8187 + EXPR_NUMBER@8186..8187 + FLOAT@8186..8187 "0" + COMMA@8187..8188 "," + WHITESPACE@8188..8189 " " + ARG@8189..8191 + EXPR_ARRAY@8189..8191 + L_BRACK@8189..8190 "[" + R_BRACK@8190..8191 "]" + R_PAREN@8191..8192 ")" + WHITESPACE@8192..8193 " " + TAILSTRICT_KW@8193..8203 "tailstrict" + COMMA@8203..8204 "," + WHITESPACE@8204..8208 "\n\n " + MEMBER_FIELD@8208..8996 + FIELD_METHOD@8208..8996 + FIELD_NAME_FIXED@8208..8218 + NAME@8208..8218 + IDENT@8208..8218 "mergePatch" + PARAMS_DESC@8218..8233 + L_PAREN@8218..8219 "(" + PARAM@8219..8225 + DESTRUCT_FULL@8219..8225 + NAME@8219..8225 + IDENT@8219..8225 "target" + COMMA@8225..8226 "," + WHITESPACE@8226..8227 " " + PARAM@8227..8232 + DESTRUCT_FULL@8227..8232 + NAME@8227..8232 + IDENT@8227..8232 "patch" + R_PAREN@8232..8233 ")" + COLONCOLON@8233..8235 "::" + WHITESPACE@8235..8240 "\n " + EXPR_IF_THEN_ELSE@8240..8996 + IF_KW@8240..8242 "if" + WHITESPACE@8242..8243 " " + EXPR_APPLY@8243..8262 + EXPR_INDEX@8243..8255 + EXPR_VAR@8243..8246 + NAME@8243..8246 + IDENT@8243..8246 "std" + DOT@8246..8247 "." + NAME@8247..8255 + IDENT@8247..8255 "isObject" + ARGS_DESC@8255..8262 + L_PAREN@8255..8256 "(" + ARG@8256..8261 + EXPR_VAR@8256..8261 + NAME@8256..8261 + IDENT@8256..8261 "patch" + R_PAREN@8261..8262 ")" + WHITESPACE@8262..8263 " " + THEN_KW@8263..8267 "then" + WHITESPACE@8267..8274 "\n " + TRUE_EXPR@8274..8975 + EXPR_LOCAL@8274..8975 + LOCAL_KW@8274..8279 "local" + WHITESPACE@8279..8280 " " + BIND_DESTRUCT@8280..8347 + DESTRUCT_FULL@8280..8293 + NAME@8280..8293 + IDENT@8280..8293 "target_object" + WHITESPACE@8293..8294 " " + ASSIGN@8294..8295 "=" + WHITESPACE@8295..8304 "\n " + EXPR_IF_THEN_ELSE@8304..8347 + IF_KW@8304..8306 "if" + WHITESPACE@8306..8307 " " + EXPR_APPLY@8307..8327 + EXPR_INDEX@8307..8319 + EXPR_VAR@8307..8310 + NAME@8307..8310 + IDENT@8307..8310 "std" + DOT@8310..8311 "." + NAME@8311..8319 + IDENT@8311..8319 "isObject" + ARGS_DESC@8319..8327 + L_PAREN@8319..8320 "(" + ARG@8320..8326 + EXPR_VAR@8320..8326 + NAME@8320..8326 + IDENT@8320..8326 "target" + R_PAREN@8326..8327 ")" + WHITESPACE@8327..8328 " " + THEN_KW@8328..8332 "then" + WHITESPACE@8332..8333 " " + TRUE_EXPR@8333..8339 + EXPR_VAR@8333..8339 + NAME@8333..8339 + IDENT@8333..8339 "target" + WHITESPACE@8339..8340 " " + ELSE_KW@8340..8344 "else" + WHITESPACE@8344..8345 " " + FALSE_EXPR@8345..8347 + EXPR_OBJECT@8345..8347 + OBJ_BODY_MEMBER_LIST@8345..8347 + L_BRACE@8345..8346 "{" + R_BRACE@8346..8347 "}" + SEMI@8347..8348 ";" + WHITESPACE@8348..8356 "\n\n " + EXPR_LOCAL@8356..8975 + LOCAL_KW@8356..8361 "local" + WHITESPACE@8361..8362 " " + BIND_DESTRUCT@8362..8461 + DESTRUCT_FULL@8362..8375 + NAME@8362..8375 + IDENT@8362..8375 "target_fields" + WHITESPACE@8375..8376 " " + ASSIGN@8376..8377 "=" + WHITESPACE@8377..8386 "\n " + EXPR_IF_THEN_ELSE@8386..8461 + IF_KW@8386..8388 "if" + WHITESPACE@8388..8389 " " + EXPR_APPLY@8389..8416 + EXPR_INDEX@8389..8401 + EXPR_VAR@8389..8392 + NAME@8389..8392 + IDENT@8389..8392 "std" + DOT@8392..8393 "." + NAME@8393..8401 + IDENT@8393..8401 "isObject" + ARGS_DESC@8401..8416 + L_PAREN@8401..8402 "(" + ARG@8402..8415 + EXPR_VAR@8402..8415 + NAME@8402..8415 + IDENT@8402..8415 "target_object" + R_PAREN@8415..8416 ")" + WHITESPACE@8416..8417 " " + THEN_KW@8417..8421 "then" + WHITESPACE@8421..8422 " " + TRUE_EXPR@8422..8453 + EXPR_APPLY@8422..8453 + EXPR_INDEX@8422..8438 + EXPR_VAR@8422..8425 + NAME@8422..8425 + IDENT@8422..8425 "std" + DOT@8425..8426 "." + NAME@8426..8438 + IDENT@8426..8438 "objectFields" + ARGS_DESC@8438..8453 + L_PAREN@8438..8439 "(" + ARG@8439..8452 + EXPR_VAR@8439..8452 + NAME@8439..8452 + IDENT@8439..8452 "target_object" + R_PAREN@8452..8453 ")" + WHITESPACE@8453..8454 " " + ELSE_KW@8454..8458 "else" + WHITESPACE@8458..8459 " " + FALSE_EXPR@8459..8461 + EXPR_ARRAY@8459..8461 + L_BRACK@8459..8460 "[" + R_BRACK@8460..8461 "]" + SEMI@8461..8462 ";" + WHITESPACE@8462..8470 "\n\n " + EXPR_LOCAL@8470..8975 + LOCAL_KW@8470..8475 "local" + WHITESPACE@8475..8476 " " + BIND_DESTRUCT@8476..8546 + DESTRUCT_FULL@8476..8487 + NAME@8476..8487 + IDENT@8476..8487 "null_fields" + WHITESPACE@8487..8488 " " + ASSIGN@8488..8489 "=" + WHITESPACE@8489..8490 " " + EXPR_ARRAY_COMP@8490..8546 + L_BRACK@8490..8491 "[" + EXPR_VAR@8491..8492 + NAME@8491..8492 + IDENT@8491..8492 "k" + WHITESPACE@8492..8493 " " + FOR_SPEC@8493..8525 + FOR_KW@8493..8496 "for" + WHITESPACE@8496..8497 " " + NAME@8497..8498 + IDENT@8497..8498 "k" + WHITESPACE@8498..8499 " " + IN_KW@8499..8501 "in" + WHITESPACE@8501..8502 " " + EXPR_APPLY@8502..8525 + EXPR_INDEX@8502..8518 + EXPR_VAR@8502..8505 + NAME@8502..8505 + IDENT@8502..8505 "std" + DOT@8505..8506 "." + NAME@8506..8518 + IDENT@8506..8518 "objectFields" + ARGS_DESC@8518..8525 + L_PAREN@8518..8519 "(" + ARG@8519..8524 + EXPR_VAR@8519..8524 + NAME@8519..8524 + IDENT@8519..8524 "patch" + R_PAREN@8524..8525 ")" + WHITESPACE@8525..8526 " " + IF_SPEC@8526..8545 + IF_KW@8526..8528 "if" + WHITESPACE@8528..8529 " " + EXPR_BINARY@8529..8545 + LHS_EXPR@8529..8537 + EXPR_INDEX_EXPR@8529..8537 + LHS_EXPR@8529..8534 + EXPR_VAR@8529..8534 + NAME@8529..8534 + IDENT@8529..8534 "patch" + L_BRACK@8534..8535 "[" + EXPR_VAR@8535..8536 + NAME@8535..8536 + IDENT@8535..8536 "k" + R_BRACK@8536..8537 "]" + WHITESPACE@8537..8538 " " + EQ@8538..8540 "==" + WHITESPACE@8540..8541 " " + EXPR_LITERAL@8541..8545 + NULL_KW@8541..8545 "null" + R_BRACK@8545..8546 "]" + SEMI@8546..8547 ";" + WHITESPACE@8547..8554 "\n " + EXPR_LOCAL@8554..8975 + LOCAL_KW@8554..8559 "local" + WHITESPACE@8559..8560 " " + BIND_DESTRUCT@8560..8626 + DESTRUCT_FULL@8560..8571 + NAME@8560..8571 + IDENT@8560..8571 "both_fields" + WHITESPACE@8571..8572 " " + ASSIGN@8572..8573 "=" + WHITESPACE@8573..8574 " " + EXPR_APPLY@8574..8626 + EXPR_INDEX@8574..8586 + EXPR_VAR@8574..8577 + NAME@8574..8577 + IDENT@8574..8577 "std" + DOT@8577..8578 "." + NAME@8578..8586 + IDENT@8578..8586 "setUnion" + ARGS_DESC@8586..8626 + L_PAREN@8586..8587 "(" + ARG@8587..8600 + EXPR_VAR@8587..8600 + NAME@8587..8600 + IDENT@8587..8600 "target_fields" + COMMA@8600..8601 "," + WHITESPACE@8601..8602 " " + ARG@8602..8625 + EXPR_APPLY@8602..8625 + EXPR_INDEX@8602..8618 + EXPR_VAR@8602..8605 + NAME@8602..8605 + IDENT@8602..8605 "std" + DOT@8605..8606 "." + NAME@8606..8618 + IDENT@8606..8618 "objectFields" + ARGS_DESC@8618..8625 + L_PAREN@8618..8619 "(" + ARG@8619..8624 + EXPR_VAR@8619..8624 + NAME@8619..8624 + IDENT@8619..8624 "patch" + R_PAREN@8624..8625 ")" + R_PAREN@8625..8626 ")" + SEMI@8626..8627 ";" + WHITESPACE@8627..8635 "\n\n " + EXPR_OBJECT@8635..8975 + OBJ_BODY_MEMBER_LIST@8635..8975 + L_BRACE@8635..8636 "{" + WHITESPACE@8636..8645 "\n " + MEMBER_FIELD@8645..8967 + FIELD_NORMAL@8645..8912 + FIELD_NAME_DYNAMIC@8645..8648 + L_BRACK@8645..8646 "[" + EXPR_VAR@8646..8647 + NAME@8646..8647 + IDENT@8646..8647 "k" + R_BRACK@8647..8648 "]" + COLON@8648..8649 ":" + WHITESPACE@8649..8660 "\n " + EXPR_IF_THEN_ELSE@8660..8912 + IF_KW@8660..8662 "if" + WHITESPACE@8662..8663 " " + EXPR_UNARY@8663..8687 + NOT@8663..8664 "!" + EXPR_APPLY@8664..8687 + EXPR_INDEX@8664..8677 + EXPR_VAR@8664..8667 + NAME@8664..8667 + IDENT@8664..8667 "std" + DOT@8667..8668 "." + NAME@8668..8677 + IDENT@8668..8677 "objectHas" + ARGS_DESC@8677..8687 + L_PAREN@8677..8678 "(" + ARG@8678..8683 + EXPR_VAR@8678..8683 + NAME@8678..8683 + IDENT@8678..8683 "patch" + COMMA@8683..8684 "," + WHITESPACE@8684..8685 " " + ARG@8685..8686 + EXPR_VAR@8685..8686 + NAME@8685..8686 + IDENT@8685..8686 "k" + R_PAREN@8686..8687 ")" + WHITESPACE@8687..8688 " " + THEN_KW@8688..8692 "then" + WHITESPACE@8692..8705 "\n " + TRUE_EXPR@8705..8721 + EXPR_INDEX_EXPR@8705..8721 + LHS_EXPR@8705..8718 + EXPR_VAR@8705..8718 + NAME@8705..8718 + IDENT@8705..8718 "target_object" + L_BRACK@8718..8719 "[" + EXPR_VAR@8719..8720 + NAME@8719..8720 + IDENT@8719..8720 "k" + R_BRACK@8720..8721 "]" + WHITESPACE@8721..8732 "\n " + ELSE_KW@8732..8736 "else" + WHITESPACE@8736..8737 " " + FALSE_EXPR@8737..8912 + EXPR_IF_THEN_ELSE@8737..8912 + IF_KW@8737..8739 "if" + WHITESPACE@8739..8740 " " + EXPR_UNARY@8740..8772 + NOT@8740..8741 "!" + EXPR_APPLY@8741..8772 + EXPR_INDEX@8741..8754 + EXPR_VAR@8741..8744 + NAME@8741..8744 + IDENT@8741..8744 "std" + DOT@8744..8745 "." + NAME@8745..8754 + IDENT@8745..8754 "objectHas" + ARGS_DESC@8754..8772 + L_PAREN@8754..8755 "(" + ARG@8755..8768 + EXPR_VAR@8755..8768 + NAME@8755..8768 + IDENT@8755..8768 "target_object" + COMMA@8768..8769 "," + WHITESPACE@8769..8770 " " + ARG@8770..8771 + EXPR_VAR@8770..8771 + NAME@8770..8771 + IDENT@8770..8771 "k" + R_PAREN@8771..8772 ")" + WHITESPACE@8772..8773 " " + THEN_KW@8773..8777 "then" + WHITESPACE@8777..8790 "\n " + TRUE_EXPR@8790..8831 + EXPR_APPLY@8790..8831 + EXPR_INDEX@8790..8804 + EXPR_VAR@8790..8793 + NAME@8790..8793 + IDENT@8790..8793 "std" + DOT@8793..8794 "." + NAME@8794..8804 + IDENT@8794..8804 "mergePatch" + ARGS_DESC@8804..8831 + L_PAREN@8804..8805 "(" + ARG@8805..8809 + EXPR_LITERAL@8805..8809 + NULL_KW@8805..8809 "null" + COMMA@8809..8810 "," + WHITESPACE@8810..8811 " " + ARG@8811..8819 + EXPR_INDEX_EXPR@8811..8819 + LHS_EXPR@8811..8816 + EXPR_VAR@8811..8816 + NAME@8811..8816 + IDENT@8811..8816 "patch" + L_BRACK@8816..8817 "[" + EXPR_VAR@8817..8818 + NAME@8817..8818 + IDENT@8817..8818 "k" + R_BRACK@8818..8819 "]" + R_PAREN@8819..8820 ")" + WHITESPACE@8820..8821 " " + TAILSTRICT_KW@8821..8831 "tailstrict" + WHITESPACE@8831..8842 "\n " + ELSE_KW@8842..8846 "else" + WHITESPACE@8846..8859 "\n " + FALSE_EXPR@8859..8912 + EXPR_APPLY@8859..8912 + EXPR_INDEX@8859..8873 + EXPR_VAR@8859..8862 + NAME@8859..8862 + IDENT@8859..8862 "std" + DOT@8862..8863 "." + NAME@8863..8873 + IDENT@8863..8873 "mergePatch" + ARGS_DESC@8873..8912 + L_PAREN@8873..8874 "(" + ARG@8874..8890 + EXPR_INDEX_EXPR@8874..8890 + LHS_EXPR@8874..8887 + EXPR_VAR@8874..8887 + NAME@8874..8887 + IDENT@8874..8887 "target_object" + L_BRACK@8887..8888 "[" + EXPR_VAR@8888..8889 + NAME@8888..8889 + IDENT@8888..8889 "k" + R_BRACK@8889..8890 "]" + COMMA@8890..8891 "," + WHITESPACE@8891..8892 " " + ARG@8892..8900 + EXPR_INDEX_EXPR@8892..8900 + LHS_EXPR@8892..8897 + EXPR_VAR@8892..8897 + NAME@8892..8897 + IDENT@8892..8897 "patch" + L_BRACK@8897..8898 "[" + EXPR_VAR@8898..8899 + NAME@8898..8899 + IDENT@8898..8899 "k" + R_BRACK@8899..8900 "]" + R_PAREN@8900..8901 ")" + WHITESPACE@8901..8902 " " + TAILSTRICT_KW@8902..8912 "tailstrict" + WHITESPACE@8912..8921 "\n " + FOR_SPEC@8921..8967 + FOR_KW@8921..8924 "for" + WHITESPACE@8924..8925 " " + NAME@8925..8926 + IDENT@8925..8926 "k" + WHITESPACE@8926..8927 " " + IN_KW@8927..8929 "in" + WHITESPACE@8929..8930 " " + EXPR_APPLY@8930..8967 + EXPR_INDEX@8930..8941 + EXPR_VAR@8930..8933 + NAME@8930..8933 + IDENT@8930..8933 "std" + DOT@8933..8934 "." + NAME@8934..8941 + IDENT@8934..8941 "setDiff" + ARGS_DESC@8941..8967 + L_PAREN@8941..8942 "(" + ARG@8942..8953 + EXPR_VAR@8942..8953 + NAME@8942..8953 + IDENT@8942..8953 "both_fields" + COMMA@8953..8954 "," + WHITESPACE@8954..8955 " " + ARG@8955..8966 + EXPR_VAR@8955..8966 + NAME@8955..8966 + IDENT@8955..8966 "null_fields" + R_PAREN@8966..8967 ")" + WHITESPACE@8967..8974 "\n " + R_BRACE@8974..8975 "}" + WHITESPACE@8975..8980 "\n " + ELSE_KW@8980..8984 "else" + WHITESPACE@8984..8991 "\n " + FALSE_EXPR@8991..8996 + EXPR_VAR@8991..8996 + NAME@8991..8996 + IDENT@8991..8996 "patch" + COMMA@8996..8997 "," + WHITESPACE@8997..9001 "\n\n " + MEMBER_FIELD@9001..9107 + FIELD_METHOD@9001..9107 + FIELD_NAME_FIXED@9001..9004 + NAME@9001..9004 + IDENT@9001..9004 "get" + PARAMS_DESC@9004..9041 + L_PAREN@9004..9005 "(" + PARAM@9005..9006 + DESTRUCT_FULL@9005..9006 + NAME@9005..9006 + IDENT@9005..9006 "o" + COMMA@9006..9007 "," + WHITESPACE@9007..9008 " " + PARAM@9008..9009 + DESTRUCT_FULL@9008..9009 + NAME@9008..9009 + IDENT@9008..9009 "f" + COMMA@9009..9010 "," + WHITESPACE@9010..9011 " " + PARAM@9011..9023 + DESTRUCT_FULL@9011..9018 + NAME@9011..9018 + IDENT@9011..9018 "default" + ASSIGN@9018..9019 "=" + EXPR_LITERAL@9019..9023 + NULL_KW@9019..9023 "null" + COMMA@9023..9024 "," + WHITESPACE@9024..9025 " " + PARAM@9025..9040 + DESTRUCT_FULL@9025..9035 + NAME@9025..9035 + IDENT@9025..9035 "inc_hidden" + ASSIGN@9035..9036 "=" + EXPR_LITERAL@9036..9040 + TRUE_KW@9036..9040 "true" + R_PAREN@9040..9041 ")" + COLONCOLON@9041..9043 "::" + WHITESPACE@9043..9048 "\n " + EXPR_IF_THEN_ELSE@9048..9107 + IF_KW@9048..9050 "if" + WHITESPACE@9050..9051 " " + EXPR_APPLY@9051..9084 + EXPR_INDEX@9051..9066 + EXPR_VAR@9051..9054 + NAME@9051..9054 + IDENT@9051..9054 "std" + DOT@9054..9055 "." + NAME@9055..9066 + IDENT@9055..9066 "objectHasEx" + ARGS_DESC@9066..9084 + L_PAREN@9066..9067 "(" + ARG@9067..9068 + EXPR_VAR@9067..9068 + NAME@9067..9068 + IDENT@9067..9068 "o" + COMMA@9068..9069 "," + WHITESPACE@9069..9070 " " + ARG@9070..9071 + EXPR_VAR@9070..9071 + NAME@9070..9071 + IDENT@9070..9071 "f" + COMMA@9071..9072 "," + WHITESPACE@9072..9073 " " + ARG@9073..9083 + EXPR_VAR@9073..9083 + NAME@9073..9083 + IDENT@9073..9083 "inc_hidden" + R_PAREN@9083..9084 ")" + WHITESPACE@9084..9085 " " + THEN_KW@9085..9089 "then" + WHITESPACE@9089..9090 " " + TRUE_EXPR@9090..9094 + EXPR_INDEX_EXPR@9090..9094 + LHS_EXPR@9090..9091 + EXPR_VAR@9090..9091 + NAME@9090..9091 + IDENT@9090..9091 "o" + L_BRACK@9091..9092 "[" + EXPR_VAR@9092..9093 + NAME@9092..9093 + IDENT@9092..9093 "f" + R_BRACK@9093..9094 "]" + WHITESPACE@9094..9095 " " + ELSE_KW@9095..9099 "else" + WHITESPACE@9099..9100 " " + FALSE_EXPR@9100..9107 + EXPR_VAR@9100..9107 + NAME@9100..9107 + IDENT@9100..9107 "default" + COMMA@9107..9108 "," + WHITESPACE@9108..9112 "\n\n " + MEMBER_FIELD@9112..9162 + FIELD_METHOD@9112..9162 + FIELD_NAME_FIXED@9112..9124 + NAME@9112..9124 + IDENT@9112..9124 "objectFields" + PARAMS_DESC@9124..9127 + L_PAREN@9124..9125 "(" + PARAM@9125..9126 + DESTRUCT_FULL@9125..9126 + NAME@9125..9126 + IDENT@9125..9126 "o" + R_PAREN@9126..9127 ")" + COLONCOLON@9127..9129 "::" + WHITESPACE@9129..9134 "\n " + EXPR_APPLY@9134..9162 + EXPR_INDEX@9134..9152 + EXPR_VAR@9134..9137 + NAME@9134..9137 + IDENT@9134..9137 "std" + DOT@9137..9138 "." + NAME@9138..9152 + IDENT@9138..9152 "objectFieldsEx" + ARGS_DESC@9152..9162 + L_PAREN@9152..9153 "(" + ARG@9153..9154 + EXPR_VAR@9153..9154 + NAME@9153..9154 + IDENT@9153..9154 "o" + COMMA@9154..9155 "," + WHITESPACE@9155..9156 " " + ARG@9156..9161 + EXPR_LITERAL@9156..9161 + FALSE_KW@9156..9161 "false" + R_PAREN@9161..9162 ")" + COMMA@9162..9163 "," + WHITESPACE@9163..9167 "\n\n " + MEMBER_FIELD@9167..9219 + FIELD_METHOD@9167..9219 + FIELD_NAME_FIXED@9167..9182 + NAME@9167..9182 + IDENT@9167..9182 "objectFieldsAll" + PARAMS_DESC@9182..9185 + L_PAREN@9182..9183 "(" + PARAM@9183..9184 + DESTRUCT_FULL@9183..9184 + NAME@9183..9184 + IDENT@9183..9184 "o" + R_PAREN@9184..9185 ")" + COLONCOLON@9185..9187 "::" + WHITESPACE@9187..9192 "\n " + EXPR_APPLY@9192..9219 + EXPR_INDEX@9192..9210 + EXPR_VAR@9192..9195 + NAME@9192..9195 + IDENT@9192..9195 "std" + DOT@9195..9196 "." + NAME@9196..9210 + IDENT@9196..9210 "objectFieldsEx" + ARGS_DESC@9210..9219 + L_PAREN@9210..9211 "(" + ARG@9211..9212 + EXPR_VAR@9211..9212 + NAME@9211..9212 + IDENT@9211..9212 "o" + COMMA@9212..9213 "," + WHITESPACE@9213..9214 " " + ARG@9214..9218 + EXPR_LITERAL@9214..9218 + TRUE_KW@9214..9218 "true" + R_PAREN@9218..9219 ")" + COMMA@9219..9220 "," + WHITESPACE@9220..9224 "\n\n " + MEMBER_FIELD@9224..9274 + FIELD_METHOD@9224..9274 + FIELD_NAME_FIXED@9224..9233 + NAME@9224..9233 + IDENT@9224..9233 "objectHas" + PARAMS_DESC@9233..9239 + L_PAREN@9233..9234 "(" + PARAM@9234..9235 + DESTRUCT_FULL@9234..9235 + NAME@9234..9235 + IDENT@9234..9235 "o" + COMMA@9235..9236 "," + WHITESPACE@9236..9237 " " + PARAM@9237..9238 + DESTRUCT_FULL@9237..9238 + NAME@9237..9238 + IDENT@9237..9238 "f" + R_PAREN@9238..9239 ")" + COLONCOLON@9239..9241 "::" + WHITESPACE@9241..9246 "\n " + EXPR_APPLY@9246..9274 + EXPR_INDEX@9246..9261 + EXPR_VAR@9246..9249 + NAME@9246..9249 + IDENT@9246..9249 "std" + DOT@9249..9250 "." + NAME@9250..9261 + IDENT@9250..9261 "objectHasEx" + ARGS_DESC@9261..9274 + L_PAREN@9261..9262 "(" + ARG@9262..9263 + EXPR_VAR@9262..9263 + NAME@9262..9263 + IDENT@9262..9263 "o" + COMMA@9263..9264 "," + WHITESPACE@9264..9265 " " + ARG@9265..9266 + EXPR_VAR@9265..9266 + NAME@9265..9266 + IDENT@9265..9266 "f" + COMMA@9266..9267 "," + WHITESPACE@9267..9268 " " + ARG@9268..9273 + EXPR_LITERAL@9268..9273 + FALSE_KW@9268..9273 "false" + R_PAREN@9273..9274 ")" + COMMA@9274..9275 "," + WHITESPACE@9275..9279 "\n\n " + MEMBER_FIELD@9279..9331 + FIELD_METHOD@9279..9331 + FIELD_NAME_FIXED@9279..9291 + NAME@9279..9291 + IDENT@9279..9291 "objectHasAll" + PARAMS_DESC@9291..9297 + L_PAREN@9291..9292 "(" + PARAM@9292..9293 + DESTRUCT_FULL@9292..9293 + NAME@9292..9293 + IDENT@9292..9293 "o" + COMMA@9293..9294 "," + WHITESPACE@9294..9295 " " + PARAM@9295..9296 + DESTRUCT_FULL@9295..9296 + NAME@9295..9296 + IDENT@9295..9296 "f" + R_PAREN@9296..9297 ")" + COLONCOLON@9297..9299 "::" + WHITESPACE@9299..9304 "\n " + EXPR_APPLY@9304..9331 + EXPR_INDEX@9304..9319 + EXPR_VAR@9304..9307 + NAME@9304..9307 + IDENT@9304..9307 "std" + DOT@9307..9308 "." + NAME@9308..9319 + IDENT@9308..9319 "objectHasEx" + ARGS_DESC@9319..9331 + L_PAREN@9319..9320 "(" + ARG@9320..9321 + EXPR_VAR@9320..9321 + NAME@9320..9321 + IDENT@9320..9321 "o" + COMMA@9321..9322 "," + WHITESPACE@9322..9323 " " + ARG@9323..9324 + EXPR_VAR@9323..9324 + NAME@9323..9324 + IDENT@9323..9324 "f" + COMMA@9324..9325 "," + WHITESPACE@9325..9326 " " + ARG@9326..9330 + EXPR_LITERAL@9326..9330 + TRUE_KW@9326..9330 "true" + R_PAREN@9330..9331 ")" + COMMA@9331..9332 "," + WHITESPACE@9332..9336 "\n\n " + MEMBER_FIELD@9336..9393 + FIELD_METHOD@9336..9393 + FIELD_NAME_FIXED@9336..9348 + NAME@9336..9348 + IDENT@9336..9348 "objectValues" + PARAMS_DESC@9348..9351 + L_PAREN@9348..9349 "(" + PARAM@9349..9350 + DESTRUCT_FULL@9349..9350 + NAME@9349..9350 + IDENT@9349..9350 "o" + R_PAREN@9350..9351 ")" + COLONCOLON@9351..9353 "::" + WHITESPACE@9353..9358 "\n " + EXPR_ARRAY_COMP@9358..9393 + L_BRACK@9358..9359 "[" + EXPR_INDEX_EXPR@9359..9363 + LHS_EXPR@9359..9360 + EXPR_VAR@9359..9360 + NAME@9359..9360 + IDENT@9359..9360 "o" + L_BRACK@9360..9361 "[" + EXPR_VAR@9361..9362 + NAME@9361..9362 + IDENT@9361..9362 "k" + R_BRACK@9362..9363 "]" + WHITESPACE@9363..9364 " " + FOR_SPEC@9364..9392 + FOR_KW@9364..9367 "for" + WHITESPACE@9367..9368 " " + NAME@9368..9369 + IDENT@9368..9369 "k" + WHITESPACE@9369..9370 " " + IN_KW@9370..9372 "in" + WHITESPACE@9372..9373 " " + EXPR_APPLY@9373..9392 + EXPR_INDEX@9373..9389 + EXPR_VAR@9373..9376 + NAME@9373..9376 + IDENT@9373..9376 "std" + DOT@9376..9377 "." + NAME@9377..9389 + IDENT@9377..9389 "objectFields" + ARGS_DESC@9389..9392 + L_PAREN@9389..9390 "(" + ARG@9390..9391 + EXPR_VAR@9390..9391 + NAME@9390..9391 + IDENT@9390..9391 "o" + R_PAREN@9391..9392 ")" + R_BRACK@9392..9393 "]" + COMMA@9393..9394 "," + WHITESPACE@9394..9398 "\n\n " + MEMBER_FIELD@9398..9461 + FIELD_METHOD@9398..9461 + FIELD_NAME_FIXED@9398..9413 + NAME@9398..9413 + IDENT@9398..9413 "objectValuesAll" + PARAMS_DESC@9413..9416 + L_PAREN@9413..9414 "(" + PARAM@9414..9415 + DESTRUCT_FULL@9414..9415 + NAME@9414..9415 + IDENT@9414..9415 "o" + R_PAREN@9415..9416 ")" + COLONCOLON@9416..9418 "::" + WHITESPACE@9418..9423 "\n " + EXPR_ARRAY_COMP@9423..9461 + L_BRACK@9423..9424 "[" + EXPR_INDEX_EXPR@9424..9428 + LHS_EXPR@9424..9425 + EXPR_VAR@9424..9425 + NAME@9424..9425 + IDENT@9424..9425 "o" + L_BRACK@9425..9426 "[" + EXPR_VAR@9426..9427 + NAME@9426..9427 + IDENT@9426..9427 "k" + R_BRACK@9427..9428 "]" + WHITESPACE@9428..9429 " " + FOR_SPEC@9429..9460 + FOR_KW@9429..9432 "for" + WHITESPACE@9432..9433 " " + NAME@9433..9434 + IDENT@9433..9434 "k" + WHITESPACE@9434..9435 " " + IN_KW@9435..9437 "in" + WHITESPACE@9437..9438 " " + EXPR_APPLY@9438..9460 + EXPR_INDEX@9438..9457 + EXPR_VAR@9438..9441 + NAME@9438..9441 + IDENT@9438..9441 "std" + DOT@9441..9442 "." + NAME@9442..9457 + IDENT@9442..9457 "objectFieldsAll" + ARGS_DESC@9457..9460 + L_PAREN@9457..9458 "(" + ARG@9458..9459 + EXPR_VAR@9458..9459 + NAME@9458..9459 + IDENT@9458..9459 "o" + R_PAREN@9459..9460 ")" + R_BRACK@9460..9461 "]" + COMMA@9461..9462 "," + WHITESPACE@9462..9466 "\n\n " + MEMBER_FIELD@9466..9600 + FIELD_METHOD@9466..9600 + FIELD_NAME_FIXED@9466..9477 + NAME@9466..9477 + IDENT@9466..9477 "resolvePath" + PARAMS_DESC@9477..9483 + L_PAREN@9477..9478 "(" + PARAM@9478..9479 + DESTRUCT_FULL@9478..9479 + NAME@9478..9479 + IDENT@9478..9479 "f" + COMMA@9479..9480 "," + WHITESPACE@9480..9481 " " + PARAM@9481..9482 + DESTRUCT_FULL@9481..9482 + NAME@9481..9482 + IDENT@9481..9482 "r" + R_PAREN@9482..9483 ")" + COLONCOLON@9483..9485 "::" + WHITESPACE@9485..9490 "\n " + EXPR_LOCAL@9490..9600 + LOCAL_KW@9490..9495 "local" + WHITESPACE@9495..9496 " " + BIND_DESTRUCT@9496..9519 + DESTRUCT_FULL@9496..9499 + NAME@9496..9499 + IDENT@9496..9499 "arr" + WHITESPACE@9499..9500 " " + ASSIGN@9500..9501 "=" + WHITESPACE@9501..9502 " " + EXPR_APPLY@9502..9519 + EXPR_INDEX@9502..9511 + EXPR_VAR@9502..9505 + NAME@9502..9505 + IDENT@9502..9505 "std" + DOT@9505..9506 "." + NAME@9506..9511 + IDENT@9506..9511 "split" + ARGS_DESC@9511..9519 + L_PAREN@9511..9512 "(" + ARG@9512..9513 + EXPR_VAR@9512..9513 + NAME@9512..9513 + IDENT@9512..9513 "f" + COMMA@9513..9514 "," + WHITESPACE@9514..9515 " " + ARG@9515..9518 + EXPR_STRING@9515..9518 + STRING_SINGLE@9515..9518 "'/'" + R_PAREN@9518..9519 ")" + SEMI@9519..9520 ";" + WHITESPACE@9520..9525 "\n " + EXPR_APPLY@9525..9600 + EXPR_INDEX@9525..9533 + EXPR_VAR@9525..9528 + NAME@9525..9528 + IDENT@9525..9528 "std" + DOT@9528..9529 "." + NAME@9529..9533 + IDENT@9529..9533 "join" + ARGS_DESC@9533..9600 + L_PAREN@9533..9534 "(" + ARG@9534..9537 + EXPR_STRING@9534..9537 + STRING_SINGLE@9534..9537 "'/'" + COMMA@9537..9538 "," + WHITESPACE@9538..9539 " " + ARG@9539..9599 + EXPR_BINARY@9539..9599 + LHS_EXPR@9539..9593 + EXPR_APPLY@9539..9593 + EXPR_INDEX@9539..9552 + EXPR_VAR@9539..9542 + NAME@9539..9542 + IDENT@9539..9542 "std" + DOT@9542..9543 "." + NAME@9543..9552 + IDENT@9543..9552 "makeArray" + ARGS_DESC@9552..9593 + L_PAREN@9552..9553 "(" + ARG@9553..9572 + EXPR_BINARY@9553..9572 + LHS_EXPR@9553..9568 + EXPR_APPLY@9553..9568 + EXPR_INDEX@9553..9563 + EXPR_VAR@9553..9556 + NAME@9553..9556 + IDENT@9553..9556 "std" + DOT@9556..9557 "." + NAME@9557..9563 + IDENT@9557..9563 "length" + ARGS_DESC@9563..9568 + L_PAREN@9563..9564 "(" + ARG@9564..9567 + EXPR_VAR@9564..9567 + NAME@9564..9567 + IDENT@9564..9567 "arr" + R_PAREN@9567..9568 ")" + WHITESPACE@9568..9569 " " + MINUS@9569..9570 "-" + WHITESPACE@9570..9571 " " + EXPR_NUMBER@9571..9572 + FLOAT@9571..9572 "1" + COMMA@9572..9573 "," + WHITESPACE@9573..9574 " " + ARG@9574..9592 + EXPR_FUNCTION@9574..9592 + FUNCTION_KW@9574..9582 "function" + PARAMS_DESC@9582..9585 + L_PAREN@9582..9583 "(" + PARAM@9583..9584 + DESTRUCT_FULL@9583..9584 + NAME@9583..9584 + IDENT@9583..9584 "i" + R_PAREN@9584..9585 ")" + WHITESPACE@9585..9586 " " + EXPR_INDEX_EXPR@9586..9592 + LHS_EXPR@9586..9589 + EXPR_VAR@9586..9589 + NAME@9586..9589 + IDENT@9586..9589 "arr" + L_BRACK@9589..9590 "[" + EXPR_VAR@9590..9591 + NAME@9590..9591 + IDENT@9590..9591 "i" + R_BRACK@9591..9592 "]" + R_PAREN@9592..9593 ")" + WHITESPACE@9593..9594 " " + PLUS@9594..9595 "+" + WHITESPACE@9595..9596 " " + EXPR_ARRAY@9596..9599 + L_BRACK@9596..9597 "[" + EXPR_VAR@9597..9598 + NAME@9597..9598 + IDENT@9597..9598 "r" + R_BRACK@9598..9599 "]" + R_PAREN@9599..9600 ")" + COMMA@9600..9601 "," + WHITESPACE@9601..9605 "\n\n " + MEMBER_FIELD@9605..10058 + FIELD_METHOD@9605..10058 + FIELD_NAME_FIXED@9605..9610 + NAME@9605..9610 + IDENT@9605..9610 "prune" + PARAMS_DESC@9610..9613 + L_PAREN@9610..9611 "(" + PARAM@9611..9612 + DESTRUCT_FULL@9611..9612 + NAME@9611..9612 + IDENT@9611..9612 "a" + R_PAREN@9612..9613 ")" + COLONCOLON@9613..9615 "::" + WHITESPACE@9615..9620 "\n " + EXPR_LOCAL@9620..10058 + LOCAL_KW@9620..9625 "local" + WHITESPACE@9625..9626 " " + BIND_FUNCTION@9626..9823 + NAME@9626..9635 + IDENT@9626..9635 "isContent" + PARAMS_DESC@9635..9638 + L_PAREN@9635..9636 "(" + PARAM@9636..9637 + DESTRUCT_FULL@9636..9637 + NAME@9636..9637 + IDENT@9636..9637 "b" + R_PAREN@9637..9638 ")" + WHITESPACE@9638..9639 " " + ASSIGN@9639..9640 "=" + WHITESPACE@9640..9647 "\n " + EXPR_IF_THEN_ELSE@9647..9823 + IF_KW@9647..9649 "if" + WHITESPACE@9649..9650 " " + EXPR_BINARY@9650..9659 + LHS_EXPR@9650..9651 + EXPR_VAR@9650..9651 + NAME@9650..9651 + IDENT@9650..9651 "b" + WHITESPACE@9651..9652 " " + EQ@9652..9654 "==" + WHITESPACE@9654..9655 " " + EXPR_LITERAL@9655..9659 + NULL_KW@9655..9659 "null" + WHITESPACE@9659..9660 " " + THEN_KW@9660..9664 "then" + WHITESPACE@9664..9673 "\n " + TRUE_EXPR@9673..9678 + EXPR_LITERAL@9673..9678 + FALSE_KW@9673..9678 "false" + WHITESPACE@9678..9685 "\n " + ELSE_KW@9685..9689 "else" + WHITESPACE@9689..9690 " " + FALSE_EXPR@9690..9823 + EXPR_IF_THEN_ELSE@9690..9823 + IF_KW@9690..9692 "if" + WHITESPACE@9692..9693 " " + EXPR_APPLY@9693..9707 + EXPR_INDEX@9693..9704 + EXPR_VAR@9693..9696 + NAME@9693..9696 + IDENT@9693..9696 "std" + DOT@9696..9697 "." + NAME@9697..9704 + IDENT@9697..9704 "isArray" + ARGS_DESC@9704..9707 + L_PAREN@9704..9705 "(" + ARG@9705..9706 + EXPR_VAR@9705..9706 + NAME@9705..9706 + IDENT@9705..9706 "b" + R_PAREN@9706..9707 ")" + WHITESPACE@9707..9708 " " + THEN_KW@9708..9712 "then" + WHITESPACE@9712..9721 "\n " + TRUE_EXPR@9721..9738 + EXPR_BINARY@9721..9738 + LHS_EXPR@9721..9734 + EXPR_APPLY@9721..9734 + EXPR_INDEX@9721..9731 + EXPR_VAR@9721..9724 + NAME@9721..9724 + IDENT@9721..9724 "std" + DOT@9724..9725 "." + NAME@9725..9731 + IDENT@9725..9731 "length" + ARGS_DESC@9731..9734 + L_PAREN@9731..9732 "(" + ARG@9732..9733 + EXPR_VAR@9732..9733 + NAME@9732..9733 + IDENT@9732..9733 "b" + R_PAREN@9733..9734 ")" + WHITESPACE@9734..9735 " " + GT@9735..9736 ">" + WHITESPACE@9736..9737 " " + EXPR_NUMBER@9737..9738 + FLOAT@9737..9738 "0" + WHITESPACE@9738..9745 "\n " + ELSE_KW@9745..9749 "else" + WHITESPACE@9749..9750 " " + FALSE_EXPR@9750..9823 + EXPR_IF_THEN_ELSE@9750..9823 + IF_KW@9750..9752 "if" + WHITESPACE@9752..9753 " " + EXPR_APPLY@9753..9768 + EXPR_INDEX@9753..9765 + EXPR_VAR@9753..9756 + NAME@9753..9756 + IDENT@9753..9756 "std" + DOT@9756..9757 "." + NAME@9757..9765 + IDENT@9757..9765 "isObject" + ARGS_DESC@9765..9768 + L_PAREN@9765..9766 "(" + ARG@9766..9767 + EXPR_VAR@9766..9767 + NAME@9766..9767 + IDENT@9766..9767 "b" + R_PAREN@9767..9768 ")" + WHITESPACE@9768..9769 " " + THEN_KW@9769..9773 "then" + WHITESPACE@9773..9782 "\n " + TRUE_EXPR@9782..9799 + EXPR_BINARY@9782..9799 + LHS_EXPR@9782..9795 + EXPR_APPLY@9782..9795 + EXPR_INDEX@9782..9792 + EXPR_VAR@9782..9785 + NAME@9782..9785 + IDENT@9782..9785 "std" + DOT@9785..9786 "." + NAME@9786..9792 + IDENT@9786..9792 "length" + ARGS_DESC@9792..9795 + L_PAREN@9792..9793 "(" + ARG@9793..9794 + EXPR_VAR@9793..9794 + NAME@9793..9794 + IDENT@9793..9794 "b" + R_PAREN@9794..9795 ")" + WHITESPACE@9795..9796 " " + GT@9796..9797 ">" + WHITESPACE@9797..9798 " " + EXPR_NUMBER@9798..9799 + FLOAT@9798..9799 "0" + WHITESPACE@9799..9806 "\n " + ELSE_KW@9806..9810 "else" + WHITESPACE@9810..9819 "\n " + FALSE_EXPR@9819..9823 + EXPR_LITERAL@9819..9823 + TRUE_KW@9819..9823 "true" + SEMI@9823..9824 ";" + WHITESPACE@9824..9829 "\n " + EXPR_IF_THEN_ELSE@9829..10058 + IF_KW@9829..9831 "if" + WHITESPACE@9831..9832 " " + EXPR_APPLY@9832..9846 + EXPR_INDEX@9832..9843 + EXPR_VAR@9832..9835 + NAME@9832..9835 + IDENT@9832..9835 "std" + DOT@9835..9836 "." + NAME@9836..9843 + IDENT@9836..9843 "isArray" + ARGS_DESC@9843..9846 + L_PAREN@9843..9844 "(" + ARG@9844..9845 + EXPR_VAR@9844..9845 + NAME@9844..9845 + IDENT@9844..9845 "a" + R_PAREN@9845..9846 ")" + WHITESPACE@9846..9847 " " + THEN_KW@9847..9851 "then" + WHITESPACE@9851..9858 "\n " + TRUE_EXPR@9858..9908 + EXPR_ARRAY_COMP@9858..9908 + L_BRACK@9858..9859 "[" + EXPR_APPLY@9859..9871 + EXPR_INDEX@9859..9868 + EXPR_VAR@9859..9862 + NAME@9859..9862 + IDENT@9859..9862 "std" + DOT@9862..9863 "." + NAME@9863..9868 + IDENT@9863..9868 "prune" + ARGS_DESC@9868..9871 + L_PAREN@9868..9869 "(" + ARG@9869..9870 + EXPR_VAR@9869..9870 + NAME@9869..9870 + IDENT@9869..9870 "x" + R_PAREN@9870..9871 ")" + WHITESPACE@9871..9872 " " + FOR_SPEC@9872..9882 + FOR_KW@9872..9875 "for" + WHITESPACE@9875..9876 " " + NAME@9876..9877 + IDENT@9876..9877 "x" + WHITESPACE@9877..9878 " " + IN_KW@9878..9880 "in" + WHITESPACE@9880..9881 " " + EXPR_VAR@9881..9882 + NAME@9881..9882 + IDENT@9881..9882 "a" + WHITESPACE@9882..9883 " " + IF_SPEC@9883..9907 + IF_KW@9883..9885 "if" + WHITESPACE@9885..9886 " " + EXPR_APPLY@9886..9907 + EXPR_VAR@9886..9895 + NAME@9886..9895 + IDENT@9886..9895 "isContent" + ARGS_DESC@9895..9907 + L_PAREN@9895..9896 "(" + ARG@9896..9906 + EXPR_APPLY@9896..9906 + EXPR_INDEX@9896..9903 + EXPR_LITERAL@9896..9897 + DOLLAR@9896..9897 "$" + DOT@9897..9898 "." + NAME@9898..9903 + IDENT@9898..9903 "prune" + ARGS_DESC@9903..9906 + L_PAREN@9903..9904 "(" + ARG@9904..9905 + EXPR_VAR@9904..9905 + NAME@9904..9905 + IDENT@9904..9905 "x" + R_PAREN@9905..9906 ")" + R_PAREN@9906..9907 ")" + R_BRACK@9907..9908 "]" + WHITESPACE@9908..9913 "\n " + ELSE_KW@9913..9917 "else" + WHITESPACE@9917..9918 " " + FALSE_EXPR@9918..10058 + EXPR_IF_THEN_ELSE@9918..10058 + IF_KW@9918..9920 "if" + WHITESPACE@9920..9921 " " + EXPR_APPLY@9921..9936 + EXPR_INDEX@9921..9933 + EXPR_VAR@9921..9924 + NAME@9921..9924 + IDENT@9921..9924 "std" + DOT@9924..9925 "." + NAME@9925..9933 + IDENT@9925..9933 "isObject" + ARGS_DESC@9933..9936 + L_PAREN@9933..9934 "(" + ARG@9934..9935 + EXPR_VAR@9934..9935 + NAME@9934..9935 + IDENT@9934..9935 "a" + R_PAREN@9935..9936 ")" + WHITESPACE@9936..9937 " " + THEN_KW@9937..9941 "then" + WHITESPACE@9941..9942 " " + TRUE_EXPR@9942..10045 + EXPR_OBJECT@9942..10045 + OBJ_BODY_MEMBER_LIST@9942..10045 + L_BRACE@9942..9943 "{" + WHITESPACE@9943..9950 "\n " + MEMBER_FIELD@9950..10039 + FIELD_NORMAL@9950..9968 + FIELD_NAME_DYNAMIC@9950..9953 + L_BRACK@9950..9951 "[" + EXPR_VAR@9951..9952 + NAME@9951..9952 + IDENT@9951..9952 "x" + R_BRACK@9952..9953 "]" + COLON@9953..9954 ":" + WHITESPACE@9954..9955 " " + EXPR_APPLY@9955..9968 + EXPR_INDEX@9955..9962 + EXPR_LITERAL@9955..9956 + DOLLAR@9955..9956 "$" + DOT@9956..9957 "." + NAME@9957..9962 + IDENT@9957..9962 "prune" + ARGS_DESC@9962..9968 + L_PAREN@9962..9963 "(" + ARG@9963..9967 + EXPR_INDEX_EXPR@9963..9967 + LHS_EXPR@9963..9964 + EXPR_VAR@9963..9964 + NAME@9963..9964 + IDENT@9963..9964 "a" + L_BRACK@9964..9965 "[" + EXPR_VAR@9965..9966 + NAME@9965..9966 + IDENT@9965..9966 "x" + R_BRACK@9966..9967 "]" + R_PAREN@9967..9968 ")" + WHITESPACE@9968..9975 "\n " + FOR_SPEC@9975..10003 + FOR_KW@9975..9978 "for" + WHITESPACE@9978..9979 " " + NAME@9979..9980 + IDENT@9979..9980 "x" + WHITESPACE@9980..9981 " " + IN_KW@9981..9983 "in" + WHITESPACE@9983..9984 " " + EXPR_APPLY@9984..10003 + EXPR_INDEX@9984..10000 + EXPR_VAR@9984..9987 + NAME@9984..9987 + IDENT@9984..9987 "std" + DOT@9987..9988 "." + NAME@9988..10000 + IDENT@9988..10000 "objectFields" + ARGS_DESC@10000..10003 + L_PAREN@10000..10001 "(" + ARG@10001..10002 + EXPR_VAR@10001..10002 + NAME@10001..10002 + IDENT@10001..10002 "a" + R_PAREN@10002..10003 ")" + WHITESPACE@10003..10010 "\n " + IF_SPEC@10010..10039 + IF_KW@10010..10012 "if" + WHITESPACE@10012..10013 " " + EXPR_APPLY@10013..10039 + EXPR_VAR@10013..10022 + NAME@10013..10022 + IDENT@10013..10022 "isContent" + ARGS_DESC@10022..10039 + L_PAREN@10022..10023 "(" + ARG@10023..10038 + EXPR_APPLY@10023..10038 + EXPR_INDEX@10023..10032 + EXPR_VAR@10023..10026 + NAME@10023..10026 + IDENT@10023..10026 "std" + DOT@10026..10027 "." + NAME@10027..10032 + IDENT@10027..10032 "prune" + ARGS_DESC@10032..10038 + L_PAREN@10032..10033 "(" + ARG@10033..10037 + EXPR_INDEX_EXPR@10033..10037 + LHS_EXPR@10033..10034 + EXPR_VAR@10033..10034 + NAME@10033..10034 + IDENT@10033..10034 "a" + L_BRACK@10034..10035 "[" + EXPR_VAR@10035..10036 + NAME@10035..10036 + IDENT@10035..10036 "x" + R_BRACK@10036..10037 "]" + R_PAREN@10037..10038 ")" + R_PAREN@10038..10039 ")" + WHITESPACE@10039..10044 "\n " + R_BRACE@10044..10045 "}" + WHITESPACE@10045..10046 " " + ELSE_KW@10046..10050 "else" + WHITESPACE@10050..10057 "\n " + FALSE_EXPR@10057..10058 + EXPR_VAR@10057..10058 + NAME@10057..10058 + IDENT@10057..10058 "a" + COMMA@10058..10059 "," + WHITESPACE@10059..10063 "\n\n " + MEMBER_FIELD@10063..10278 + FIELD_METHOD@10063..10278 + FIELD_NAME_FIXED@10063..10067 + NAME@10063..10067 + IDENT@10063..10067 "find" + PARAMS_DESC@10067..10079 + L_PAREN@10067..10068 "(" + PARAM@10068..10073 + DESTRUCT_FULL@10068..10073 + NAME@10068..10073 + IDENT@10068..10073 "value" + COMMA@10073..10074 "," + WHITESPACE@10074..10075 " " + PARAM@10075..10078 + DESTRUCT_FULL@10075..10078 + NAME@10075..10078 + IDENT@10075..10078 "arr" + R_PAREN@10078..10079 ")" + COLONCOLON@10079..10081 "::" + WHITESPACE@10081..10086 "\n " + EXPR_IF_THEN_ELSE@10086..10278 + IF_KW@10086..10088 "if" + WHITESPACE@10088..10089 " " + EXPR_UNARY@10089..10106 + NOT@10089..10090 "!" + EXPR_APPLY@10090..10106 + EXPR_INDEX@10090..10101 + EXPR_VAR@10090..10093 + NAME@10090..10093 + IDENT@10090..10093 "std" + DOT@10093..10094 "." + NAME@10094..10101 + IDENT@10094..10101 "isArray" + ARGS_DESC@10101..10106 + L_PAREN@10101..10102 "(" + ARG@10102..10105 + EXPR_VAR@10102..10105 + NAME@10102..10105 + IDENT@10102..10105 "arr" + R_PAREN@10105..10106 ")" + WHITESPACE@10106..10107 " " + THEN_KW@10107..10111 "then" + WHITESPACE@10111..10118 "\n " + TRUE_EXPR@10118..10188 + EXPR_ERROR@10118..10188 + ERROR_KW@10118..10123 "error" + WHITESPACE@10123..10124 " " + EXPR_BINARY@10124..10188 + LHS_EXPR@10124..10172 + EXPR_STRING@10124..10172 + STRING_SINGLE@10124..10172 "'find second paramete ..." + WHITESPACE@10172..10173 " " + PLUS@10173..10174 "+" + WHITESPACE@10174..10175 " " + EXPR_APPLY@10175..10188 + EXPR_INDEX@10175..10183 + EXPR_VAR@10175..10178 + NAME@10175..10178 + IDENT@10175..10178 "std" + DOT@10178..10179 "." + NAME@10179..10183 + IDENT@10179..10183 "type" + ARGS_DESC@10183..10188 + L_PAREN@10183..10184 "(" + ARG@10184..10187 + EXPR_VAR@10184..10187 + NAME@10184..10187 + IDENT@10184..10187 "arr" + R_PAREN@10187..10188 ")" + WHITESPACE@10188..10193 "\n " + ELSE_KW@10193..10197 "else" + WHITESPACE@10197..10204 "\n " + FALSE_EXPR@10204..10278 + EXPR_APPLY@10204..10278 + EXPR_INDEX@10204..10214 + EXPR_VAR@10204..10207 + NAME@10204..10207 + IDENT@10204..10207 "std" + DOT@10207..10208 "." + NAME@10208..10214 + IDENT@10208..10214 "filter" + ARGS_DESC@10214..10278 + L_PAREN@10214..10215 "(" + ARG@10215..10242 + EXPR_FUNCTION@10215..10242 + FUNCTION_KW@10215..10223 "function" + PARAMS_DESC@10223..10226 + L_PAREN@10223..10224 "(" + PARAM@10224..10225 + DESTRUCT_FULL@10224..10225 + NAME@10224..10225 + IDENT@10224..10225 "i" + R_PAREN@10225..10226 ")" + WHITESPACE@10226..10227 " " + EXPR_BINARY@10227..10242 + LHS_EXPR@10227..10233 + EXPR_INDEX_EXPR@10227..10233 + LHS_EXPR@10227..10230 + EXPR_VAR@10227..10230 + NAME@10227..10230 + IDENT@10227..10230 "arr" + L_BRACK@10230..10231 "[" + EXPR_VAR@10231..10232 + NAME@10231..10232 + IDENT@10231..10232 "i" + R_BRACK@10232..10233 "]" + WHITESPACE@10233..10234 " " + EQ@10234..10236 "==" + WHITESPACE@10236..10237 " " + EXPR_VAR@10237..10242 + NAME@10237..10242 + IDENT@10237..10242 "value" + COMMA@10242..10243 "," + WHITESPACE@10243..10244 " " + ARG@10244..10277 + EXPR_APPLY@10244..10277 + EXPR_INDEX@10244..10253 + EXPR_VAR@10244..10247 + NAME@10244..10247 + IDENT@10244..10247 "std" + DOT@10247..10248 "." + NAME@10248..10253 + IDENT@10248..10253 "range" + ARGS_DESC@10253..10277 + L_PAREN@10253..10254 "(" + ARG@10254..10255 + EXPR_NUMBER@10254..10255 + FLOAT@10254..10255 "0" + COMMA@10255..10256 "," + WHITESPACE@10256..10257 " " + ARG@10257..10276 + EXPR_BINARY@10257..10276 + LHS_EXPR@10257..10272 + EXPR_APPLY@10257..10272 + EXPR_INDEX@10257..10267 + EXPR_VAR@10257..10260 + NAME@10257..10260 + IDENT@10257..10260 "std" + DOT@10260..10261 "." + NAME@10261..10267 + IDENT@10261..10267 "length" + ARGS_DESC@10267..10272 + L_PAREN@10267..10268 "(" + ARG@10268..10271 + EXPR_VAR@10268..10271 + NAME@10268..10271 + IDENT@10268..10271 "arr" + R_PAREN@10271..10272 ")" + WHITESPACE@10272..10273 " " + MINUS@10273..10274 "-" + WHITESPACE@10274..10275 " " + EXPR_NUMBER@10275..10276 + FLOAT@10275..10276 "1" + R_PAREN@10276..10277 ")" + R_PAREN@10277..10278 ")" + COMMA@10278..10279 "," + WHITESPACE@10279..10280 "\n" + R_BRACE@10280..10281 "}" + WHITESPACE@10281..10282 "\n" --- /dev/null +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__unexpected_destruct.snap @@ -0,0 +1,32 @@ +--- +source: crates/jrsonnet-rowan-parser/src/tests.rs +expression: "local * = 1;\na\n" +--- +SOURCE_FILE@0..15 + EXPR_LOCAL@0..14 + LOCAL_KW@0..5 "local" + WHITESPACE@5..6 " " + BIND_DESTRUCT@6..11 + ERROR_UNEXPECTED_TOKEN@6..7 + MUL@6..7 "*" + WHITESPACE@7..8 " " + ASSIGN@8..9 "=" + WHITESPACE@9..10 " " + EXPR_NUMBER@10..11 + FLOAT@10..11 "1" + SEMI@11..12 ";" + WHITESPACE@12..13 "\n" + EXPR_VAR@13..14 + NAME@13..14 + IDENT@13..14 "a" + WHITESPACE@14..15 "\n" +=== +LocatedSyntaxError { error: Unexpected { expected: Named("destruction specifier"), found: MUL }, range: 6..7 } +=== + x syntax error + ,-[1:1] + 1 | local * = 1; + : | + : `-- expected destruction specifier, found MUL + 2 | a + `---- --- a/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snap +++ b/crates/jrsonnet-rowan-parser/src/snapshots/jrsonnet_rowan_parser__tests__wrong_field_end.snap @@ -2,29 +2,37 @@ source: crates/jrsonnet-rowan-parser/src/tests.rs expression: "{\n\ta: 1;\n\tb: 2;\n}\n" --- -SOURCE_FILE@0..10 - OBJ_BODY@0..7 - L_BRACE@0..1 "{" - WHITESPACE@1..3 "\n\t" - MEMBER@3..7 - IDENT@3..4 "a" - COLON@4..5 ":" - WHITESPACE@5..6 " " - EXPR_NUMBER@6..7 - NUMBER@6..7 "1" - SEMI@7..8 ";" +SOURCE_FILE@0..11 + EXPR_OBJECT@0..8 + OBJ_BODY_MEMBER_LIST@0..8 + L_BRACE@0..1 "{" + WHITESPACE@1..3 "\n\t" + MEMBER_FIELD@3..7 + FIELD_NORMAL@3..7 + FIELD_NAME_FIXED@3..4 + NAME@3..4 + IDENT@3..4 "a" + COLON@4..5 ":" + WHITESPACE@5..6 " " + EXPR_NUMBER@6..7 + FLOAT@6..7 "1" + ERROR_UNEXPECTED_TOKEN@7..8 + SEMI@7..8 ";" WHITESPACE@8..10 "\n\t" + ERROR_UNEXPECTED_TOKEN@10..11 + IDENT@10..11 "b" === -Missing { expected: Unnamed(R_BRACE), offset: 7 } -Custom { error: "unexpected input after expression", range: 7..8 } +LocatedSyntaxError { error: Unexpected { expected: Unnamed(R_BRACE), found: SEMI }, range: 7..8 } +LocatedSyntaxError { error: Unexpected { expected: Unnamed(EOF), found: IDENT }, range: 10..11 } === x syntax error ,-[1:1] 1 | { - 2 | a: 1; - : ^ - : |`-- unexpected input after expression - : `-- missing R_BRACE - 3 | b: 2; + 2 | a: 1; + : | + : `-- expected R_BRACE, found SEMI + 3 | b: 2; + : | + : `-- expected EOF, found IDENT + 4 | } `---- - --- a/crates/jrsonnet-rowan-parser/src/tests.rs +++ b/crates/jrsonnet-rowan-parser/src/tests.rs @@ -53,8 +53,17 @@ for err in &errors { writeln!(out, "{:?}", err).unwrap(); } + let mut code = text.to_string(); + + // Prettier errors at EOF position + if code.ends_with('\n') { + code.truncate(code.len() - 1); + code += " "; + } + code += " "; + let diag = MyDiagnostic { - code: text.to_string(), + code, spans: errors.into_iter().map(|e| e.into()).collect(), }; @@ -64,9 +73,16 @@ }); write!(out, "===").unwrap(); - handler.render_report(&mut out, &diag).unwrap(); + handler + .render_report(&mut out, &diag) + .expect("fmt error?.."); } - out + out.split('\n') + .map(|s| s.trim_end().to_string()) + .collect::>() + .join("\n") + .trim_end() + .to_string() } macro_rules! mk_test { ($($name:ident => $test:expr)+) => {$( @@ -165,11 +181,16 @@ ||| hello " + + unexpected_destruct => " + local * = 1; + a + " ); #[test] fn stdlib() { - let src = jrsonnet_stdlib::STDLIB_STR; + let src = include_str!("../../jrsonnet-stdlib/src/std.jsonnet"); let result = process(src); insta::assert_snapshot!("stdlib", result, src); } --- a/crates/jrsonnet-rowan-parser/src/token_set.rs +++ b/crates/jrsonnet-rowan-parser/src/token_set.rs @@ -45,7 +45,7 @@ #[test] fn sanity() { assert!( - (SyntaxKind::ERROR as u32) < 127, + (SyntaxKind::LEXING_ERROR as u32) < 127, "can't keep KindSet as bitset" ); } --- a/flake.nix +++ b/flake.nix @@ -131,6 +131,7 @@ cargo-edit cargo-asm cargo-outdated + cargo-watch lld hyperfine graphviz --- a/xtask/src/sourcegen/mod.rs +++ b/xtask/src/sourcegen/mod.rs @@ -149,8 +149,9 @@ #[doc(hidden)] EOF, #(#token_kinds,)* + /// Also acts as __LAST_TOKEN #[error] - ERROR, + LEXING_ERROR, #(#nodes,)* #[doc(hidden)] __LAST,