jseption 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -6
- package/dist/atoms.d.ts +1 -0
- package/dist/atoms.js +2 -1
- package/dist/atoms.js.map +1 -1
- package/dist/builtins/base64.d.ts +14 -0
- package/dist/builtins/base64.js +219 -0
- package/dist/builtins/base64.js.map +1 -0
- package/dist/builtins/bigint.js +3 -3
- package/dist/builtins/bigint.js.map +1 -1
- package/dist/builtins/date.d.ts +1 -0
- package/dist/builtins/date.js +26 -12
- package/dist/builtins/date.js.map +1 -1
- package/dist/builtins/error.js +9 -0
- package/dist/builtins/error.js.map +1 -1
- package/dist/builtins/float16.d.ts +3 -0
- package/dist/builtins/float16.js +69 -0
- package/dist/builtins/float16.js.map +1 -0
- package/dist/builtins/function.js +2 -2
- package/dist/builtins/index.js +9 -6
- package/dist/builtins/index.js.map +1 -1
- package/dist/builtins/iterator.d.ts +2 -0
- package/dist/builtins/iterator.js +624 -0
- package/dist/builtins/iterator.js.map +1 -0
- package/dist/builtins/json.d.ts +13 -1
- package/dist/builtins/json.js +283 -211
- package/dist/builtins/json.js.map +1 -1
- package/dist/builtins/mapset.js +365 -6
- package/dist/builtins/mapset.js.map +1 -1
- package/dist/builtins/math.js +203 -3
- package/dist/builtins/math.js.map +1 -1
- package/dist/builtins/native.js +6 -6
- package/dist/builtins/object.js +9 -2
- package/dist/builtins/object.js.map +1 -1
- package/dist/builtins/promise.js +31 -11
- package/dist/builtins/promise.js.map +1 -1
- package/dist/builtins/proxy.js +2 -2
- package/dist/builtins/reflect.js +6 -2
- package/dist/builtins/reflect.js.map +1 -1
- package/dist/builtins/regexp.js +74 -3
- package/dist/builtins/regexp.js.map +1 -1
- package/dist/builtins/string.js +1 -1
- package/dist/builtins/symbol.js +1 -1
- package/dist/builtins/symbol.js.map +1 -1
- package/dist/builtins/typedarray.d.ts +4 -1
- package/dist/builtins/typedarray.js +325 -37
- package/dist/builtins/typedarray.js.map +1 -1
- package/dist/builtins/weakref.js +7 -7
- package/dist/embed.d.ts +5 -0
- package/dist/embed.js +36 -11
- package/dist/embed.js.map +1 -1
- package/dist/interpreter.js +15 -14
- package/dist/interpreter.js.map +1 -1
- package/dist/jit.d.ts +1 -0
- package/dist/jit.js +51 -13
- package/dist/jit.js.map +1 -1
- package/dist/jit_hook.d.ts +1 -0
- package/dist/jit_hook.js.map +1 -1
- package/dist/jit_runtime.d.ts +1 -1
- package/dist/jit_runtime.js +6 -6
- package/dist/jit_runtime.js.map +1 -1
- package/dist/jit_stack.d.ts +1 -0
- package/dist/jit_stack.js +2 -1
- package/dist/jit_stack.js.map +1 -1
- package/dist/jseption.d.ts +2 -0
- package/dist/jseption.js +1 -0
- package/dist/jseption.js.map +1 -1
- package/dist/membrane.d.ts +6 -0
- package/dist/membrane.js +7 -3
- package/dist/membrane.js.map +1 -1
- package/dist/module.js +5 -3
- package/dist/module.js.map +1 -1
- package/dist/parser.js +26 -9
- package/dist/parser.js.map +1 -1
- package/dist/print.d.ts +12 -0
- package/dist/print.js +494 -0
- package/dist/print.js.map +1 -0
- package/dist/qjs.js +13 -10
- package/dist/qjs.js.map +1 -1
- package/dist/quickjs.d.ts +8 -0
- package/dist/quickjs.js +132 -53
- package/dist/quickjs.js.map +1 -1
- package/dist/std.d.ts +4 -2
- package/dist/std.js +42 -8
- package/dist/std.js.map +1 -1
- package/dist/values.d.ts +31 -27
- package/dist/values.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/builtins/json.ts"],"names":[],"mappings":"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","sourcesContent":["/*\n * JSON object (port of the JSON part of quickjs.c: json_next_token,\n * json_parse_value, JS_ParseJSON, internalize_json_property,\n * js_json_check, js_json_to_str, JS_JSONStringify)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JSErrorEnum, JSAtom, JS_EXCEPTION, JS_IsException, JS_IsUndefined,\n JS_IsObject, JS_IsFunction, JS_IsArray, JS_NewObject, JS_NewArray, JS_NewErrorNative, JS_Throw, JS_ThrowTypeError,\n JS_ThrowStackOverflow, JS_DefinePropertyValue, JS_DefinePropertyValueUint32, JS_DefinePropertyValueStr,\n JS_GetProperty, JS_GetPropertyInt64, JS_GetPropertyValue, JS_DeleteProperty, JS_GetOwnPropertyNamesInternal,\n JS_PROP_C_W_E, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_GPN_STRING_MASK, JS_GPN_ENUM_ONLY, JS_ATOM_NULL,\n JS_ATOM_empty_string, JS_ATOM_toJSON, JS_ATOM_fileName, JS_ATOM_lineNumber, JS_ATOM_columnNumber,\n JS_ATOM_Symbol_toStringTag, JS_ATOM_true, JS_ATOM_false, JS_ATOM_null, JS_ValueToAtom, JS_NewAtomUInt32,\n JS_AtomToValue, JS_Call, JS_ToString, JS_ToNumber, JS_ToInt32Clamp, JS_ToBoolFree, JS_ToQuotedString,\n js_get_length64, build_backtrace, JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_PROP_STRING_DEF, JS_OBJECT_DEF,\n JS_NewAtom,\n} from '../quickjs.ts';\nimport { fix_deep_json } from './native.ts';\n\n/* ---------------------------------------------------------------------\n JSON parser (port of json_next_token / json_parse_value)\n --------------------------------------------------------------------- */\n\nexport const JS_PARSE_JSON_EXT = 1 << 0; /* allow extended JSON (comments, trailing commas, ...) */\n\nconst enum JSONTok {\n EOF = -1,\n STRING = -2,\n NUMBER = -3,\n IDENT = -4,\n ERROR = -5,\n}\n\nclass JSONParseState {\n ctx: JSContext;\n buf: string;\n buf_end: number;\n buf_ptr = 0;\n last_ptr = 0;\n filename: string;\n ext_json = false;\n /* current token */\n tok: number = JSONTok.EOF;\n tok_ptr = 0; /* start position of the token */\n tok_str = ''; /* TOK_STRING value */\n tok_num: JSValue = 0; /* TOK_NUMBER value */\n tok_atom: JSAtom = JS_ATOM_NULL; /* TOK_IDENT atom */\n constructor(ctx: JSContext, buf: string, filename: string) {\n this.ctx = ctx;\n this.buf = buf;\n this.buf_end = buf.length;\n this.filename = filename;\n }\n /* character code at position p, 0 past the end (like the NUL terminated C buffer) */\n at(p: number): number {\n return p < this.buf_end ? this.buf.charCodeAt(p) : 0;\n }\n}\n\nconst CP_LS = 0x2028;\nconst CP_PS = 0x2029;\n\nfunction get_line_col(buf: string, pos: number): [number, number] {\n let line = 1, col = 1;\n const n = Math.min(pos, buf.length);\n for (let i = 0; i < n; i++) {\n const c = buf.charCodeAt(i);\n if (c === 10) { line++; col = 1; }\n else if (c === 13) { if (buf.charCodeAt(i + 1) !== 10) { line++; col = 1; } }\n else if (c === CP_LS || c === CP_PS) { line++; col = 1; }\n else col++;\n }\n return [line, col];\n}\n\n/* port of js_parse_error_pos / js_parse_error_v: throw a SyntaxError\n with the position of 'pos' in the input */\nfunction json_parse_error_pos(s: JSONParseState, pos: number, msg: string): number {\n const ctx = s.ctx;\n const [line, col] = get_line_col(s.buf, pos);\n const obj = JS_NewErrorNative(ctx, JSErrorEnum.SYNTAX_ERROR, msg);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_fileName, s.filename, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_lineNumber, line, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_columnNumber, col, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n build_backtrace(ctx, obj, s.filename, line, col, 0);\n JS_Throw(ctx, obj);\n return -1;\n}\n\nfunction json_parse_error(s: JSONParseState, msg: string): number {\n return json_parse_error_pos(s, s.tok_ptr, msg);\n}\n\nfunction is_digit(c: number): boolean { return c >= 48 && c <= 57; }\n\nfunction from_hex(c: number): number {\n if (c >= 48 && c <= 57) return c - 48;\n if (c >= 65 && c <= 70) return c - 55;\n if (c >= 97 && c <= 102) return c - 87;\n return -1;\n}\n\n/* ASCII identifier start / continue (lre_is_id_start / lre_is_id_continue restricted to ASCII) */\nfunction is_ident_start_ascii(c: number): boolean {\n return (c >= 97 && c <= 122) || (c >= 65 && c <= 90) || c === 95 /* _ */ || c === 36 /* $ */;\n}\nfunction is_ident_continue_ascii(c: number): boolean {\n return is_ident_start_ascii(c) || is_digit(c);\n}\n\n/* port of lre_parse_escape(&p, TRUE): returns the code point, -1 if\n malformed, -2 if unknown escape; pp.p is updated */\nfunction lre_parse_escape(s: JSONParseState, pp: { p: number }): number {\n let p = pp.p;\n let c = s.at(p++);\n switch (c) {\n case 98: c = 8; break; /* \\b */\n case 102: c = 12; break; /* \\f */\n case 110: c = 10; break; /* \\n */\n case 114: c = 13; break; /* \\r */\n case 116: c = 9; break; /* \\t */\n case 118: c = 11; break; /* \\v */\n case 120: /* x */\n case 117: /* u */\n {\n if (s.at(p) === 123 /* { */) {\n p++;\n c = 0;\n for (;;) {\n const h = from_hex(s.at(p++));\n if (h < 0) return -1;\n c = (c << 4) | h;\n if (c > 0x10ffff) return -1;\n if (s.at(p) === 125 /* } */) break;\n }\n p++;\n } else {\n const n = (c === 120) ? 2 : 4;\n c = 0;\n for (let i = 0; i < n; i++) {\n const h = from_hex(s.at(p++));\n if (h < 0) return -1;\n c = (c << 4) | h;\n }\n }\n }\n break;\n default:\n return -2;\n }\n pp.p = p;\n return c;\n}\n\n/* port of js_parse_string() in JSON mode (s->cur_func == NULL) */\nfunction json_parse_string(s: JSONParseState, sep: number, p: number): number {\n let out = '';\n for (;;) {\n if (p >= s.buf_end) return json_parse_error(s, 'unexpected end of string');\n let c = s.at(p);\n if (c < 0x20) {\n return json_parse_error_pos(s, p, 'invalid character in a JSON string');\n }\n p++;\n if (c === sep) break;\n if (c === 92 /* \\ */) {\n const p_escape = p - 1;\n c = s.at(p);\n switch (c) {\n case 0:\n if (p >= s.buf_end) return json_parse_error(s, 'unexpected end of string');\n p++;\n break;\n case 39: /* ' */\n case 34: /* \" */\n case 92: /* \\ */\n p++;\n break;\n case 13: /* \\r: accept DOS and MAC newline sequences */\n if (s.at(p + 1) === 10) p++;\n /* fall through */\n case 10:\n /* ignore escaped newline sequence */\n p++;\n continue;\n default:\n if (c >= 48 && c <= 57) {\n /* JSON case: no octal escapes */\n return json_parse_error_pos(s, p_escape, 'malformed escape sequence in string literal');\n } else if (c >= 0x80) {\n p++;\n /* LS or PS are skipped */\n if (c === CP_LS || c === CP_PS) continue;\n } else {\n const pp = { p };\n const ret = lre_parse_escape(s, pp);\n if (ret === -1) {\n return json_parse_error_pos(s, p_escape, 'malformed escape sequence in string literal');\n } else if (ret < 0) {\n /* ignore the '\\' (could output a warning) */\n p++;\n } else {\n p = pp.p;\n c = ret;\n }\n }\n break;\n }\n }\n out += (c > 0xffff) ? String.fromCodePoint(c) : String.fromCharCode(c);\n }\n s.tok = JSONTok.STRING;\n s.tok_str = out;\n s.buf_ptr = p;\n return 0;\n}\n\n/* port of json_parse_ident: only pure ascii identifiers are accepted */\nfunction json_parse_ident(s: JSONParseState, pp: { p: number }, c: number): JSAtom {\n let p = pp.p;\n let ident = String.fromCharCode(c);\n for (;;) {\n c = s.at(p);\n if (c >= 128 || !is_ident_continue_ascii(c)) break;\n ident += String.fromCharCode(c);\n p++;\n }\n pp.p = p;\n return JS_NewAtom(s.ctx, ident);\n}\n\n/* port of js_atof() with radix 10 and no flags (JSON) or\n ATOD_ACCEPT_BIN_OCT with radix 0 (extended JSON). Returns -1 on error. */\nfunction json_parse_number(s: JSONParseState, p: number): number {\n const ext = s.ext_json;\n let is_neg = false;\n let radix = 10;\n let p_start: number;\n if (s.at(p) === 43 /* + */) {\n p++;\n } else if (s.at(p) === 45 /* - */) {\n p++;\n is_neg = true;\n }\n if (ext && s.at(p) === 48 /* 0 */) {\n const c1 = s.at(p + 1);\n if (c1 === 120 || c1 === 88) { p += 2; radix = 16; }\n else if (c1 === 111 || c1 === 79) { p += 2; radix = 8; }\n else if (c1 === 98 || c1 === 66) { p += 2; radix = 2; }\n if (radix !== 10) {\n /* there must be a digit after the prefix */\n if (to_digit(s.at(p)) >= radix) return json_parse_error_pos(s, p, 'invalid number literal');\n }\n }\n let is_float = false;\n p_start = p;\n while (to_digit(s.at(p)) < radix) p++;\n if (s.at(p) === 46 /* . */ && (p > p_start || to_digit(s.at(p + 1)) < radix)) {\n is_float = true;\n p++;\n while (to_digit(s.at(p)) < radix) p++;\n }\n if (p > p_start) {\n const c = s.at(p);\n if (((c === 101 || c === 69) && radix === 10) ||\n ((c === 112 || c === 80) && (radix === 2 || radix === 8 || radix === 16))) {\n let p1 = p + 1;\n is_float = true;\n if (s.at(p1) === 43 || s.at(p1) === 45) p1++;\n if (is_digit(s.at(p1))) {\n p = p1 + 1;\n while (is_digit(s.at(p))) p++;\n }\n }\n }\n if (p === p_start) return json_parse_error_pos(s, p, 'invalid number literal');\n const text = s.buf.substring(p_start, p);\n let d: number;\n if (radix === 10) {\n d = Number(text);\n } else if (is_float) {\n return json_parse_error_pos(s, p_start, 'invalid number literal');\n } else {\n d = parseInt(text, radix);\n }\n if (is_neg) d = -d;\n s.tok = JSONTok.NUMBER;\n s.tok_num = d;\n s.buf_ptr = p;\n return 0;\n}\n\nfunction to_digit(c: number): number {\n if (c >= 48 && c <= 57) return c - 48;\n if (c >= 65 && c <= 90) return c - 65 + 10;\n if (c >= 97 && c <= 122) return c - 97 + 10;\n return 36;\n}\n\nfunction json_next_token(s: JSONParseState): number {\n let p = s.last_ptr = s.buf_ptr;\n for (;;) {\n s.tok_ptr = p;\n const c = s.at(p);\n switch (c) {\n case 0:\n if (p >= s.buf_end) {\n s.tok = JSONTok.EOF;\n s.buf_ptr = p;\n return 0;\n }\n break; /* def_token */\n case 39: /* ' */\n if (!s.ext_json) break; /* JSON does not accept single quoted strings */\n /* fall through */\n case 34: /* \" */\n if (json_parse_string(s, c, p + 1)) { s.tok = JSONTok.ERROR; return -1; }\n return 0;\n case 13: /* \\r: accept DOS and MAC newline sequences */\n if (s.at(p + 1) === 10) p++;\n /* fall through */\n case 10:\n p++;\n continue;\n case 12: /* \\f */\n case 11: /* \\v */\n if (!s.ext_json) break; /* JSONWhitespace does not match <VT>, nor <FF> */\n /* fall through */\n case 32:\n case 9:\n p++;\n continue;\n case 47: /* / */\n if (!s.ext_json) break; /* JSON does not accept comments */\n if (s.at(p + 1) === 42 /* * */) {\n p += 2;\n for (;;) {\n if (p >= s.buf_end) {\n json_parse_error(s, 'unexpected end of comment');\n s.tok = JSONTok.ERROR;\n return -1;\n }\n if (s.at(p) === 42 && s.at(p + 1) === 47) { p += 2; break; }\n p++;\n }\n continue;\n } else if (s.at(p + 1) === 47) {\n p += 2;\n for (;;) {\n if (p >= s.buf_end) break;\n const c1 = s.at(p);\n if (c1 === 13 || c1 === 10 || c1 === CP_LS || c1 === CP_PS) break;\n p++;\n }\n continue;\n }\n break; /* def_token */\n case 43: /* + */\n if (!s.ext_json || !is_digit(s.at(p + 1))) break;\n return json_parse_number(s, p);\n case 48: /* 0 */\n if (is_digit(s.at(p + 1))) break;\n return json_parse_number(s, p);\n case 45: /* - */\n if (!is_digit(s.at(p + 1))) break;\n return json_parse_number(s, p);\n default:\n if (is_digit(c)) return json_parse_number(s, p);\n if (is_ident_start_ascii(c)) {\n /* identifier: only pure ascii characters are accepted */\n const pp = { p: p + 1 };\n const atom = json_parse_ident(s, pp, c);\n if (atom === JS_ATOM_NULL) { s.tok = JSONTok.ERROR; return -1; }\n s.tok_atom = atom;\n s.tok = JSONTok.IDENT;\n s.buf_ptr = pp.p;\n return 0;\n }\n if (c >= 128) {\n json_parse_error(s, 'unexpected character');\n s.tok = JSONTok.ERROR;\n return -1;\n }\n break;\n }\n /* def_token */\n s.tok = c;\n p++;\n s.buf_ptr = p;\n return 0;\n }\n}\n\nfunction json_parse_expect(s: JSONParseState, tok: number): number {\n if (s.tok !== tok) {\n /* XXX: dump token correctly in all cases */\n return json_parse_error(s, `expecting '${String.fromCharCode(tok)}'`);\n }\n return json_next_token(s);\n}\n\n/* current token (through a function so that TypeScript does not narrow s.tok) */\nfunction cur_tok(s: JSONParseState): number { return s.tok; }\n\nfunction json_parse_value(s: JSONParseState, depth: number): JSValue {\n const ctx = s.ctx;\n let val: JSValue = null;\n if (depth > ctx.rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n const tok: number = s.tok;\n switch (tok) {\n case 123: /* { */\n {\n if (json_next_token(s)) return JS_EXCEPTION;\n val = JS_NewObject(ctx);\n if (JS_IsException(val)) return val;\n if (cur_tok(s) !== 125 /* } */) {\n for (;;) {\n let prop_name: JSAtom;\n if (cur_tok(s) === JSONTok.STRING) {\n prop_name = JS_ValueToAtom(ctx, s.tok_str);\n if (prop_name === JS_ATOM_NULL) return JS_EXCEPTION;\n } else if (s.ext_json && cur_tok(s) === JSONTok.IDENT) {\n prop_name = s.tok_atom;\n } else {\n json_parse_error(s, 'expecting property name');\n return JS_EXCEPTION;\n }\n if (json_next_token(s)) return JS_EXCEPTION;\n if (json_parse_expect(s, 58 /* : */)) return JS_EXCEPTION;\n const prop_val = json_parse_value(s, depth + 1);\n if (JS_IsException(prop_val)) return JS_EXCEPTION;\n const ret = JS_DefinePropertyValue(ctx, val, prop_name, prop_val, JS_PROP_C_W_E);\n if (ret < 0) return JS_EXCEPTION;\n if (cur_tok(s) !== 44 /* , */) break;\n if (json_next_token(s)) return JS_EXCEPTION;\n if (s.ext_json && cur_tok(s) === 125) break;\n }\n }\n if (json_parse_expect(s, 125 /* } */)) return JS_EXCEPTION;\n }\n break;\n case 91: /* [ */\n {\n if (json_next_token(s)) return JS_EXCEPTION;\n val = JS_NewArray(ctx);\n if (JS_IsException(val)) return val;\n if (cur_tok(s) !== 93 /* ] */) {\n let idx = 0;\n for (;;) {\n const el = json_parse_value(s, depth + 1);\n if (JS_IsException(el)) return JS_EXCEPTION;\n const ret = JS_DefinePropertyValueUint32(ctx, val, idx, el, JS_PROP_C_W_E);\n if (ret < 0) return JS_EXCEPTION;\n if (cur_tok(s) !== 44 /* , */) break;\n if (json_next_token(s)) return JS_EXCEPTION;\n idx++;\n if (s.ext_json && cur_tok(s) === 93) break;\n }\n }\n if (json_parse_expect(s, 93 /* ] */)) return JS_EXCEPTION;\n }\n break;\n case JSONTok.STRING:\n val = s.tok_str;\n if (json_next_token(s)) return JS_EXCEPTION;\n break;\n case JSONTok.NUMBER:\n val = s.tok_num;\n if (json_next_token(s)) return JS_EXCEPTION;\n break;\n case JSONTok.IDENT:\n if (s.tok_atom === JS_ATOM_false || s.tok_atom === JS_ATOM_true) {\n val = (s.tok_atom === JS_ATOM_true);\n } else if (s.tok_atom === JS_ATOM_null) {\n val = null;\n } else {\n return json_unexpected_token(s);\n }\n if (json_next_token(s)) return JS_EXCEPTION;\n break;\n default:\n return json_unexpected_token(s);\n }\n return val;\n}\n\nfunction json_unexpected_token(s: JSONParseState): JSValue {\n if (s.tok === JSONTok.EOF) {\n json_parse_error(s, 'Unexpected end of JSON input');\n } else {\n json_parse_error(s, `unexpected token: '${s.buf.substring(s.tok_ptr, s.buf_ptr)}'`);\n }\n return JS_EXCEPTION;\n}\n\nexport function JS_ParseJSON2(ctx: JSContext, buf: string, filename: string, flags: number): JSValue {\n const s = new JSONParseState(ctx, buf, filename);\n s.ext_json = (flags & JS_PARSE_JSON_EXT) !== 0;\n if (json_next_token(s)) return JS_EXCEPTION;\n const val = json_parse_value(s, 0);\n if (JS_IsException(val)) return val;\n if (s.tok !== JSONTok.EOF) {\n json_parse_error(s, 'unexpected data at the end');\n return JS_EXCEPTION;\n }\n return val;\n}\n\nexport function JS_ParseJSON(ctx: JSContext, buf: string, filename: string): JSValue {\n return JS_ParseJSON2(ctx, buf, filename, 0);\n}\n\n/* ---------------------------------------------------------------------\n JSON.parse\n --------------------------------------------------------------------- */\n\nfunction internalize_json_property(ctx: JSContext, holder: JSValue, name: JSAtom, reviver: JSValue, depth: number): JSValue {\n if (depth > ctx.rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n const val = JS_GetProperty(ctx, holder, name);\n if (JS_IsException(val)) return val;\n if (JS_IsObject(val)) {\n const is_array = JS_IsArray(ctx, val);\n if (is_array < 0) return JS_EXCEPTION;\n let len: number;\n let atoms: { atom: JSAtom }[] | null = null;\n if (is_array) {\n len = js_get_length64(ctx, val);\n if (len < 0) return JS_EXCEPTION;\n } else {\n atoms = JS_GetOwnPropertyNamesInternal(ctx, val, JS_GPN_ENUM_ONLY | JS_GPN_STRING_MASK);\n if (!atoms) return JS_EXCEPTION;\n len = atoms.length;\n }\n for (let i = 0; i < len; i++) {\n let prop: JSAtom;\n if (is_array) {\n prop = JS_NewAtomUInt32(ctx, i);\n } else {\n prop = atoms![i].atom;\n }\n const new_el = internalize_json_property(ctx, val, prop, reviver, depth + 1);\n if (JS_IsException(new_el)) return JS_EXCEPTION;\n let ret: number;\n if (JS_IsUndefined(new_el)) {\n ret = JS_DeleteProperty(ctx, val, prop, 0);\n } else {\n ret = JS_DefinePropertyValue(ctx, val, prop, new_el, JS_PROP_C_W_E);\n }\n if (ret < 0) return JS_EXCEPTION;\n }\n }\n const name_val = JS_AtomToValue(ctx, name);\n if (JS_IsException(name_val)) return JS_EXCEPTION;\n return JS_Call(ctx, reviver, holder, [name_val, val]);\n}\n\nfunction js_json_parse(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const str = JS_ToString(ctx, argv[0]);\n if (JS_IsException(str)) return JS_EXCEPTION;\n /* fast path: the host parser, with the tree re-prototyped to the guest\n intrinsics. On a syntax error the ported parser runs to produce the\n QuickJS error (message, line and column). */\n let obj: JSValue;\n try {\n obj = fix_deep_json(ctx, JSON.parse(str as string));\n } catch {\n obj = JS_ParseJSON(ctx, str as string, '<input>');\n }\n if (JS_IsException(obj)) return obj;\n if (argv.length > 1 && JS_IsFunction(ctx, argv[1])) {\n const reviver = argv[1];\n const root = JS_NewObject(ctx);\n if (JS_IsException(root)) return JS_EXCEPTION;\n if (JS_DefinePropertyValue(ctx, root, JS_ATOM_empty_string, obj, JS_PROP_C_W_E) < 0) return JS_EXCEPTION;\n obj = internalize_json_property(ctx, root, JS_ATOM_empty_string, reviver, 0);\n }\n return obj;\n}\n\n/* ---------------------------------------------------------------------\n JSON.stringify\n --------------------------------------------------------------------- */\n\ninterface JSONStringifyContext {\n replacer_func: JSValue;\n stack: JSObject[];\n property_list: string[] | null;\n gap: string;\n empty: string;\n b: string[];\n}\n\nfunction js_json_check(ctx: JSContext, jsc: JSONStringifyContext, holder: JSValue, val: JSValue, key: JSValue): JSValue {\n /* check for object.toJSON method */\n /* ECMA specifies this is done only for Object and BigInt */\n if (JS_IsObject(val) || typeof val === 'bigint') {\n const f = JS_GetProperty(ctx, val, JS_ATOM_toJSON);\n if (JS_IsException(f)) return JS_EXCEPTION;\n if (JS_IsFunction(ctx, f)) {\n val = JS_Call(ctx, f, val, [key]);\n if (JS_IsException(val)) return JS_EXCEPTION;\n }\n }\n if (!JS_IsUndefined(jsc.replacer_func)) {\n val = JS_Call(ctx, jsc.replacer_func, holder, [key, val]);\n if (JS_IsException(val)) return JS_EXCEPTION;\n }\n switch (typeof val) {\n case 'object':\n if (val === null) return val;\n if (Q.JS_IsObject(val)) {\n if (JS_IsFunction(ctx, val)) break;\n return val;\n }\n if (JS_IsException(val)) return val;\n break; /* symbol */\n case 'string':\n case 'number':\n case 'boolean':\n case 'bigint':\n return val;\n default:\n break;\n }\n return undefined;\n}\n\nfunction js_json_to_str(ctx: JSContext, jsc: JSONStringifyContext, holder: JSValue, val: JSValue, indent: string, depth: number): number {\n if (depth > ctx.rt.max_stack_depth) { JS_ThrowStackOverflow(ctx); return -1; }\n\n if (Q.JS_IsObject(val)) {\n const p = val;\n const cl = Q.JS_GetClassID(p);\n if (cl === JSClassID.STRING) {\n val = JS_ToString(ctx, val);\n if (JS_IsException(val)) return -1;\n } else if (cl === JSClassID.NUMBER) {\n val = JS_ToNumber(ctx, val);\n if (JS_IsException(val)) return -1;\n } else if (cl === JSClassID.BOOLEAN || cl === JSClassID.BIG_INT) {\n /* This will throw the same error as for the primitive object */\n val = Q.JS_GetAnyOpaque(p) as JSValue;\n } else {\n if (jsc.stack.includes(p)) {\n JS_ThrowTypeError(ctx, 'circular reference');\n return -1;\n }\n const indent1 = indent + jsc.gap;\n let sep: string, sep1: string;\n if (jsc.gap !== '') {\n sep = '\\n' + indent1;\n sep1 = ' ';\n } else {\n sep = jsc.empty;\n sep1 = jsc.empty;\n }\n jsc.stack.push(p);\n const ret = JS_IsArray(ctx, val);\n if (ret < 0) return -1;\n if (ret) {\n const len = js_get_length64(ctx, val);\n if (len < 0) return -1;\n jsc.b.push('[');\n for (let i = 0; i < len; i++) {\n if (i > 0) jsc.b.push(',');\n jsc.b.push(sep);\n let v = JS_GetPropertyInt64(ctx, val, i);\n if (JS_IsException(v)) return -1;\n /* XXX: could do this string conversion only when needed */\n const prop = String(i);\n v = js_json_check(ctx, jsc, val, v, prop);\n if (JS_IsException(v)) return -1;\n if (JS_IsUndefined(v)) v = null;\n if (js_json_to_str(ctx, jsc, val, v, indent1, depth + 1)) return -1;\n }\n if (len > 0 && jsc.gap !== '') {\n jsc.b.push('\\n');\n jsc.b.push(indent);\n }\n jsc.b.push(']');\n } else {\n let tab: JSValue[];\n if (jsc.property_list !== null) {\n tab = jsc.property_list;\n } else {\n const keys = js_object_keys(ctx, val);\n if (!keys) return -1;\n tab = keys;\n }\n const len = tab.length;\n jsc.b.push('{');\n let has_content = false;\n for (let i = 0; i < len; i++) {\n let prop = tab[i];\n let v = JS_GetPropertyValue(ctx, val, prop);\n if (JS_IsException(v)) return -1;\n v = js_json_check(ctx, jsc, val, v, prop);\n if (JS_IsException(v)) return -1;\n if (!JS_IsUndefined(v)) {\n if (has_content) jsc.b.push(',');\n prop = JS_ToQuotedString(ctx, prop);\n if (JS_IsException(prop)) return -1;\n jsc.b.push(sep);\n jsc.b.push(prop as string);\n jsc.b.push(':');\n jsc.b.push(sep1);\n if (js_json_to_str(ctx, jsc, val, v, indent1, depth + 1)) return -1;\n has_content = true;\n }\n }\n if (has_content && jsc.gap !== '') {\n jsc.b.push('\\n');\n jsc.b.push(indent);\n }\n jsc.b.push('}');\n }\n jsc.stack.pop();\n return 0;\n }\n }\n /* concat_primitive */\n switch (typeof val) {\n case 'string': {\n const q = JS_ToQuotedString(ctx, val);\n if (JS_IsException(q)) return -1;\n jsc.b.push(q as string);\n return 0;\n }\n case 'number':\n if (!Number.isFinite(val)) {\n jsc.b.push('null');\n } else {\n jsc.b.push(String(val));\n }\n return 0;\n case 'boolean':\n jsc.b.push(val ? 'true' : 'false');\n return 0;\n case 'object':\n if (val === null) { jsc.b.push('null'); return 0; }\n return 0;\n case 'bigint':\n /* reject big numbers: use toJSON method to override */\n JS_ThrowTypeError(ctx, 'Do not know how to serialize a BigInt');\n return -1;\n default:\n return 0;\n }\n}\n\n/* own enumerable string keys of an object (js_object_keys with JS_ITERATOR_KIND_KEY) */\nfunction js_object_keys(ctx: JSContext, obj: JSValue): string[] | null {\n const tab = JS_GetOwnPropertyNamesInternal(ctx, obj as JSObject, JS_GPN_STRING_MASK | JS_GPN_ENUM_ONLY);\n if (!tab) return null;\n const res: string[] = [];\n for (const e of tab) {\n const v = JS_AtomToValue(ctx, e.atom);\n if (JS_IsException(v)) return null;\n res.push(v as string);\n }\n return res;\n}\n\nexport function JS_JSONStringify(ctx: JSContext, obj: JSValue, replacer: JSValue, space0: JSValue): JSValue {\n const jsc: JSONStringifyContext = {\n replacer_func: undefined,\n stack: [],\n property_list: null,\n gap: '',\n empty: '',\n b: [],\n };\n if (JS_IsFunction(ctx, replacer)) {\n jsc.replacer_func = replacer;\n } else {\n const res = JS_IsArray(ctx, replacer);\n if (res < 0) return JS_EXCEPTION;\n if (res) {\n /* XXX: enumeration is not fully correct */\n jsc.property_list = [];\n const n = js_get_length64(ctx, replacer);\n if (n < 0) return JS_EXCEPTION;\n for (let i = 0; i < n; i++) {\n let v = JS_GetPropertyInt64(ctx, replacer, i);\n if (JS_IsException(v)) return JS_EXCEPTION;\n if (Q.JS_IsObject(v)) {\n if (Q.JS_GetClassID(v) === JSClassID.STRING || Q.JS_GetClassID(v) === JSClassID.NUMBER) {\n v = JS_ToString(ctx, v);\n if (JS_IsException(v)) return JS_EXCEPTION;\n } else {\n continue;\n }\n } else if (typeof v === 'number') {\n v = JS_ToString(ctx, v);\n if (JS_IsException(v)) return JS_EXCEPTION;\n } else if (typeof v !== 'string') {\n continue;\n }\n if (!jsc.property_list.includes(v as string)) {\n jsc.property_list.push(v as string);\n }\n }\n }\n }\n let space = space0;\n if (Q.JS_IsObject(space)) {\n if (Q.JS_GetClassID(space) === JSClassID.NUMBER) {\n space = JS_ToNumber(ctx, space);\n } else if (Q.JS_GetClassID(space) === JSClassID.STRING) {\n space = JS_ToString(ctx, space);\n }\n if (JS_IsException(space)) return JS_EXCEPTION;\n }\n if (typeof space === 'number') {\n const n = JS_ToInt32Clamp(ctx, space, 0, 10, 0);\n if (JS_IsException(n)) return JS_EXCEPTION;\n jsc.gap = ' '.substring(0, n as number);\n } else if (typeof space === 'string') {\n jsc.gap = space.substring(0, Math.min(space.length, 10));\n } else {\n jsc.gap = jsc.empty;\n }\n const wrapper = JS_NewObject(ctx);\n if (JS_IsException(wrapper)) return JS_EXCEPTION;\n if (JS_DefinePropertyValue(ctx, wrapper, JS_ATOM_empty_string, obj, JS_PROP_C_W_E) < 0) return JS_EXCEPTION;\n let val = js_json_check(ctx, jsc, wrapper, obj, jsc.empty);\n if (JS_IsException(val)) return JS_EXCEPTION;\n if (JS_IsUndefined(val)) return undefined;\n if (js_json_to_str(ctx, jsc, wrapper, val, jsc.empty, 0)) return JS_EXCEPTION;\n return jsc.b.join('');\n}\n\nfunction js_json_stringify(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // stringify(val, replacer, space)\n /* fast path: the host serializer (toJSON/replacer are guest functions,\n called natively). A host TypeError (BigInt, cycle) is reported by the\n ported serializer with the QuickJS message; guest exceptions thrown by\n toJSON/replacer/getters propagate. */\n try {\n return (JSON.stringify as any)(argv[0], argv[1], argv[2]);\n } catch (e) {\n if (!(e instanceof TypeError)) return Q.js_host_exception_to_guest(ctx, e);\n }\n return JS_JSONStringify(ctx, argv[0], argv[1], argv[2]);\n}\n\nconst js_json_funcs = [\n JS_CFUNC_DEF('parse', 2, js_json_parse),\n JS_CFUNC_DEF('stringify', 3, js_json_stringify),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'JSON', JS_PROP_CONFIGURABLE),\n];\n\nconst js_json_obj = [\n JS_OBJECT_DEF('JSON', js_json_funcs, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),\n];\n\nexport function JS_AddIntrinsicJSON(ctx: JSContext): void {\n /* add JSON as autoinit object */\n JS_SetPropertyFunctionList(ctx, ctx.global_obj, js_json_obj);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/builtins/json.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,CAAC,MAAM,eAAe,CAAC;AACnC,OAAO,EACyD,YAAY,EAAE,cAAc,EAAE,cAAc,EAC1G,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,iBAAiB,EACjH,qBAAqB,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,yBAAyB,EACtG,cAAc,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,8BAA8B,EAC3G,aAAa,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY,EACzG,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAChG,0BAA0B,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EACvG,cAAc,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAiB,iBAAiB,EACpG,eAAe,EAAE,eAAe,EAAE,0BAA0B,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAC7G,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,EACjG,oBAAoB,EAAE,iBAAiB,GACxC,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C;;2EAE2E;AAE3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,0DAA0D;AAUnG,MAAM,cAAc;IAClB,GAAG,CAAY;IACf,GAAG,CAAS;IACZ,OAAO,CAAS;IAChB,OAAO,GAAG,CAAC,CAAC;IACZ,QAAQ,GAAG,CAAC,CAAC;IACb,QAAQ,CAAS;IACjB,QAAQ,GAAG,KAAK,CAAC;IACjB,mBAAmB;IACnB,GAAG,wBAAuB;IAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,iCAAiC;IAC9C,OAAO,GAAG,EAAE,CAAC,CAAC,sBAAsB;IACpC,OAAO,GAAY,CAAC,CAAC,CAAC,sBAAsB;IAC5C,QAAQ,GAAW,YAAY,CAAC,CAAC,oBAAoB;IACrD,YAAY,GAAc,EAAE,GAAW,EAAE,QAAgB;QACvD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IACD,qFAAqF;IACrF,EAAE,CAAC,CAAS;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;CACF;AAED,MAAM,KAAK,GAAG,MAAM,CAAC;AACrB,MAAM,KAAK,GAAG,MAAM,CAAC;AAErB,SAAS,YAAY,CAAC,GAAW,EAAE,GAAW;IAC5C,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAAC,IAAI,EAAE,CAAC;YAAC,GAAG,GAAG,CAAC,CAAC;QAAC,CAAC;aAC7B,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBAAC,IAAI,EAAE,CAAC;gBAAC,GAAG,GAAG,CAAC,CAAC;YAAC,CAAC;QAAC,CAAC;aACxE,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;YAAC,IAAI,EAAE,CAAC;YAAC,GAAG,GAAG,CAAC,CAAC;QAAC,CAAC;;YACpD,GAAG,EAAE,CAAC;IACb,CAAC;IACD,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrB,CAAC;AAED;6CAC6C;AAC7C,SAAS,oBAAoB,CAAC,CAAiB,EAAE,GAAW,EAAE,GAAW;IACvE,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;IAClB,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,oCAA4B,GAAG,CAAC,CAAC;IAClE,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC,QAAQ,EAAE,gBAAgB,GAAG,oBAAoB,CAAC,CAAC;IACxG,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,GAAG,oBAAoB,CAAC,CAAC;IACpG,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,gBAAgB,GAAG,oBAAoB,CAAC,CAAC;IACrG,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,SAAS,gBAAgB,CAAC,CAAiB,EAAE,GAAW;IACtD,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS,IAAa,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAEpE,SAAS,QAAQ,CAAC,CAAS;IACzB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG;QAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,kGAAkG;AAClG,SAAS,oBAAoB,CAAC,CAAS;IACrC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC;AAC/F,CAAC;AACD,SAAS,uBAAuB,CAAC,CAAS;IACxC,OAAO,oBAAoB,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,4EAA4E;AAC5E,SAAS,iBAAiB,CAAC,CAAiB,EAAE,GAAW,EAAE,CAAS;IAClE,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,SAAS,CAAC;QACR,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO;YAAE,OAAO,gBAAgB,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAC/E,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG;YAAE,MAAM;QACrB,IAAI,CAAC,GAAG,IAAI;YAAE,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,yCAAyC,CAAC,CAAC;QAC/F,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACd,QAAQ,CAAC,EAAE,CAAC;gBACV,KAAK,EAAE;oBAAE,CAAC,GAAG,CAAC,CAAC;oBAAC,MAAM,CAAC,QAAQ;gBAC/B,KAAK,GAAG;oBAAE,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,CAAC,QAAQ;gBACjC,KAAK,GAAG;oBAAE,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,CAAC,QAAQ;gBACjC,KAAK,GAAG;oBAAE,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,CAAC,QAAQ;gBACjC,KAAK,GAAG;oBAAE,CAAC,GAAG,CAAC,CAAC;oBAAC,MAAM,CAAC,QAAQ;gBAChC,KAAK,EAAE,CAAC,CAAC,OAAO;gBAChB,KAAK,EAAE,EAAE,OAAO;oBACd,MAAM;gBACR,KAAK,GAAG,EAAE,OAAO;oBACf,CAAC,GAAG,CAAC,CAAC;oBACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC9B,IAAI,CAAC,GAAG,CAAC;4BAAE,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,oBAAoB,CAAC,CAAC;wBACvE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnB,CAAC;oBACD,MAAM;gBACR,KAAK,EAAE,EAAE,wCAAwC;oBAC/C,IAAI,CAAC,CAAC,QAAQ;wBAAE,SAAS;oBACzB,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,CAAC;gBACjE,KAAK,GAAG,EAAE,OAAO;oBACf,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;wBAAC,CAAC,GAAG,EAAE,CAAC;wBAAC,MAAM;oBAAC,CAAC;oBAClC,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,CAAC;gBACjE;oBACE,IAAI,CAAC,KAAK,GAAG;wBAAE,MAAM;oBACrB,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO;wBAAE,OAAO,gBAAgB,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC;oBAC9E,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QACD,kFAAkF;QAClF,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,CAAC,CAAC,GAAG,0BAAiB,CAAC;IACvB,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC;IAChB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IACd,OAAO,CAAC,CAAC;AACX,CAAC;AAED,wEAAwE;AACxE,SAAS,gBAAgB,CAAC,CAAiB,EAAE,EAAiB,EAAE,CAAS;IACvE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC,SAAS,CAAC;QACR,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAAE,MAAM;QACnD,KAAK,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,EAAE,CAAC;IACN,CAAC;IACD,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACT,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;iEACiE;AACjE,SAAS,oBAAoB,CAAC,CAAiB,EAAE,CAAS;IACxD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClB,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,qBAAqB,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACrH,CAAC;AAED,+CAA+C;AAC/C,SAAS,aAAa,CAAC,CAAiB,EAAE,CAAS,EAAE,GAAW;IAC9D,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,2EAA2E;AAC3E,SAAS,iBAAiB,CAAC,CAAiB,EAAE,CAAS;IACrD,MAAM,OAAO,GAAG,CAAC,CAAC;IAClB,IAAI,CAAS,CAAC;IACd,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO;QAAE,CAAC,EAAE,CAAC;IAC1D,IAAI,EAAE,CAAC;QACL,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,CAAC,CAAC,QAAQ;gBAAE,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnD,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,CAAC;gBACpC,CAAC,IAAI,CAAC,CAAC;gBACP,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAChD,MAAM,IAAI,CAAC;YACb,CAAC;iBAAM,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACtC,CAAC,IAAI,CAAC,CAAC;gBACP,CAAC,GAAG,GAAG,CAAC;gBACR,MAAM,IAAI,CAAC;YACb,CAAC;iBAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;gBAClC,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;YAC3B,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACf,uDAAuD;gBACvD,IAAI,KAAK,GAAG,EAAE,CAAC;gBACf,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAAC,CAAC,IAAI,CAAC,CAAC;oBAAC,KAAK,GAAG,EAAE,CAAC;gBAAC,CAAC;qBAC/C,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAAC,CAAC,IAAI,CAAC,CAAC;oBAAC,KAAK,GAAG,CAAC,CAAC;gBAAC,CAAC;qBACnD,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBAAC,CAAC,IAAI,CAAC,CAAC;oBAAC,KAAK,GAAG,CAAC,CAAC;gBAAC,CAAC;gBACvD,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;oBACjB,uBAAuB;oBACvB,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK;wBAAE,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAClE,MAAM,QAAQ,GAAG,CAAC,CAAC;oBACnB,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK;wBAAE,CAAC,EAAE,CAAC;oBACtC,mDAAmD;oBACnD,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBAClD,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE;wBAAE,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjC,MAAM,IAAI,CAAC;gBACb,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACpF,CAAC;QACD,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;YAC3B,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,gCAAgC,CAAC,CAAC;YAC5F,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,CAAC,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;YACtD,CAAC,EAAE,CAAC;YACJ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE;gBAAE,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,mCAAmC,CAAC,CAAC;YAC/F,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAAE,CAAC,EAAE,CAAC;QAChC,CAAC;QACD,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,CAAC,CAAC,GAAG,0BAAiB,CAAC;IACvB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IACd,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;IACd,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACzB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IAC3C,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG;QAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;IAC5C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,eAAe,CAAC,CAAiB;IACxC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC;IAC/B,SAAS,CAAC;QACR,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC;YACV,KAAK,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;oBACnB,CAAC,CAAC,GAAG,uBAAc,CAAC;oBACpB,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;oBACd,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,MAAM,CAAC,eAAe;YACxB,KAAK,EAAE,EAAE,OAAO;gBACd,IAAI,CAAC,CAAC,CAAC,QAAQ;oBAAE,MAAM,CAAC,gDAAgD;YACxE,kBAAkB;YACpB,KAAK,EAAE,EAAE,OAAO;gBACd,IAAI,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAAC,CAAC,CAAC,GAAG,yBAAgB,CAAC;oBAAC,OAAO,CAAC,CAAC,CAAC;gBAAC,CAAC;gBACzE,OAAO,CAAC,CAAC;YACX,KAAK,EAAE,EAAE,8CAA8C;gBACrD,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE;oBAAE,CAAC,EAAE,CAAC;YAC5B,kBAAkB;YACpB,KAAK,EAAE;gBACL,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,KAAK,EAAE,CAAC,CAAC,QAAQ;YACjB,KAAK,EAAE,EAAE,QAAQ;gBACf,IAAI,CAAC,CAAC,CAAC,QAAQ;oBAAE,MAAM,CAAC,kDAAkD;YAC1E,kBAAkB;YACpB,KAAK,EAAE,CAAC;YACR,KAAK,CAAC;gBACJ,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,KAAK,EAAE,EAAE,OAAO;gBACd,IAAI,CAAC,CAAC,CAAC,QAAQ;oBAAE,MAAM,CAAC,mCAAmC;gBAC3D,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;oBAC/B,CAAC,IAAI,CAAC,CAAC;oBACP,SAAS,CAAC;wBACR,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;4BACnB,gBAAgB,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC;4BACjD,CAAC,CAAC,GAAG,yBAAgB,CAAC;4BACtB,OAAO,CAAC,CAAC,CAAC;wBACZ,CAAC;wBACD,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;4BAAC,CAAC,IAAI,CAAC,CAAC;4BAAC,MAAM;wBAAC,CAAC;wBAC5D,CAAC,EAAE,CAAC;oBACN,CAAC;oBACD,SAAS;gBACX,CAAC;qBAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;oBAC9B,CAAC,IAAI,CAAC,CAAC;oBACP,SAAS,CAAC;wBACR,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO;4BAAE,MAAM;wBAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;wBACnB,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,KAAK;4BAAE,MAAM;wBAClE,CAAC,EAAE,CAAC;oBACN,CAAC;oBACD,SAAS;gBACX,CAAC;gBACD,MAAM,CAAC,eAAe;YACxB,KAAK,EAAE,EAAE,OAAO;gBACd,IAAI,CAAC,CAAC,CAAC,QAAQ;oBAAE,MAAM;gBACvB,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,KAAK,EAAE,EAAE,OAAO;gBACd,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAAE,MAAM;gBACjD,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,KAAK,EAAE,EAAE,OAAO;gBACd,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC;gBACE,IAAI,QAAQ,CAAC,CAAC,CAAC;oBAAE,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChD,IAAI,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5B,yDAAyD;oBACzD,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACxC,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;wBAAC,CAAC,CAAC,GAAG,yBAAgB,CAAC;wBAAC,OAAO,CAAC,CAAC,CAAC;oBAAC,CAAC;oBAChE,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAClB,CAAC,CAAC,GAAG,yBAAgB,CAAC;oBACtB,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC;oBACjB,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;oBACb,gBAAgB,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;oBAC5C,CAAC,CAAC,GAAG,yBAAgB,CAAC;oBACtB,OAAO,CAAC,CAAC,CAAC;gBACZ,CAAC;gBACD,MAAM;QACV,CAAC;QACD,eAAe;QACf,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QACV,CAAC,EAAE,CAAC;QACJ,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAiB,EAAE,GAAW;IACvD,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;QAClB,4CAA4C;QAC5C,OAAO,gBAAgB,CAAC,CAAC,EAAE,cAAc,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED,iFAAiF;AACjF,SAAS,OAAO,CAAC,CAAiB,IAAY,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAe7D,SAAS,gCAAgC,CAAC,CAAiB,EAAE,EAAmB,EAAE,GAAY;IAC5F,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC;IACf,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC;IAC1B,EAAE,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;AACxC,CAAC;AAED,sBAAsB;AACtB,SAAS,gBAAgB,CAAC,CAAiB,EAAE,KAAa,EAAE,EAA0B;IACpF,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;IAClB,IAAI,GAAG,GAAY,IAAI,CAAC;IACxB,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,eAAe;QAAE,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACtE,MAAM,GAAG,GAAW,CAAC,CAAC,GAAG,CAAC;IAC1B,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,GAAG,EAAE,OAAO;YACf,CAAC;gBACC,IAAI,eAAe,CAAC,CAAC,CAAC;oBAAE,OAAO,YAAY,CAAC;gBAC5C,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,cAAc,CAAC,GAAG,CAAC;oBAAE,OAAO,GAAG,CAAC;gBACpC,IAAI,EAAE,EAAE,CAAC;oBACP,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC;oBACf,EAAE,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;gBACzB,CAAC;gBACD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;oBAC/B,SAAS,CAAC;wBACR,IAAI,SAAiB,CAAC;wBACtB,IAAI,OAAO,CAAC,CAAC,CAAC,4BAAmB,EAAE,CAAC;4BAClC,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;4BAC3C,IAAI,SAAS,KAAK,YAAY;gCAAE,OAAO,YAAY,CAAC;wBACtD,CAAC;6BAAM,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,2BAAkB,EAAE,CAAC;4BACtD,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC;wBACzB,CAAC;6BAAM,CAAC;4BACN,gBAAgB,CAAC,CAAC,EAAE,yBAAyB,CAAC,CAAC;4BAC/C,OAAO,YAAY,CAAC;wBACtB,CAAC;wBACD,IAAI,eAAe,CAAC,CAAC,CAAC;4BAAE,OAAO,YAAY,CAAC;wBAC5C,IAAI,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;4BAAE,OAAO,YAAY,CAAC;wBAC1D,IAAI,GAAG,GAA2B,IAAI,CAAC;wBACvC,IAAI,EAAE,EAAE,CAAC;4BACP,GAAG,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;4BAC3B,EAAE,CAAC,OAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;wBAClC,CAAC;wBACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;wBACrD,IAAI,cAAc,CAAC,QAAQ,CAAC;4BAAE,OAAO,YAAY,CAAC;wBAClD,MAAM,GAAG,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;wBACjF,IAAI,GAAG,GAAG,CAAC;4BAAE,OAAO,YAAY,CAAC;wBACjC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO;4BAAE,MAAM;wBACrC,IAAI,eAAe,CAAC,CAAC,CAAC;4BAAE,OAAO,YAAY,CAAC;wBAC5C,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;4BAAE,MAAM;oBAC9C,CAAC;gBACH,CAAC;gBACD,IAAI,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;oBAAE,OAAO,YAAY,CAAC;YAC7D,CAAC;YACD,MAAM;QACR,KAAK,EAAE,EAAE,OAAO;YACd,CAAC;gBACC,IAAI,eAAe,CAAC,CAAC,CAAC;oBAAE,OAAO,YAAY,CAAC;gBAC5C,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;gBACvB,IAAI,cAAc,CAAC,GAAG,CAAC;oBAAE,OAAO,GAAG,CAAC;gBACpC,IAAI,EAAE,EAAE,CAAC;oBACP,EAAE,CAAC,KAAK,GAAG,GAAG,CAAC;oBACf,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACnB,CAAC;gBACD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;oBAC9B,IAAI,GAAG,GAAG,CAAC,CAAC;oBACZ,SAAS,CAAC;wBACR,IAAI,GAAG,GAA2B,IAAI,CAAC;wBACvC,IAAI,EAAE,EAAE,CAAC;4BACP,GAAG,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;4BAC3B,EAAE,CAAC,QAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACzB,CAAC;wBACD,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;wBAC/C,IAAI,cAAc,CAAC,EAAE,CAAC;4BAAE,OAAO,YAAY,CAAC;wBAC5C,MAAM,GAAG,GAAG,4BAA4B,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC;wBAC3E,IAAI,GAAG,GAAG,CAAC;4BAAE,OAAO,YAAY,CAAC;wBACjC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO;4BAAE,MAAM;wBACrC,IAAI,eAAe,CAAC,CAAC,CAAC;4BAAE,OAAO,YAAY,CAAC;wBAC5C,GAAG,EAAE,CAAC;wBACN,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;4BAAE,MAAM;oBAC7C,CAAC;gBACH,CAAC;gBACD,IAAI,iBAAiB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;oBAAE,OAAO,YAAY,CAAC;YAC5D,CAAC;YACD,MAAM;QACR;YACE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;YAChB,IAAI,EAAE;gBAAE,gCAAgC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrD,IAAI,eAAe,CAAC,CAAC,CAAC;gBAAE,OAAO,YAAY,CAAC;YAC5C,MAAM;QACR;YACE,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;YAChB,IAAI,EAAE;gBAAE,gCAAgC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACrD,IAAI,eAAe,CAAC,CAAC,CAAC;gBAAE,OAAO,YAAY,CAAC;YAC5C,MAAM;QACR;YACE,IAAI,CAAC,CAAC,QAAQ,KAAK,aAAa,IAAI,CAAC,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAChE,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC;gBACpC,IAAI,EAAE;oBAAE,gCAAgC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;gBACvC,GAAG,GAAG,IAAI,CAAC;gBACX,IAAI,EAAE;oBAAE,gCAAgC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACpD;6DAC6C;gBAC7C,GAAG,GAAG,GAAG,CAAC;YACZ,CAAC;iBAAM,IAAI,CAAC,CAAC,QAAQ,KAAK,gBAAgB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACzD,GAAG,GAAG,QAAQ,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;YACD,IAAI,eAAe,CAAC,CAAC,CAAC;gBAAE,OAAO,YAAY,CAAC;YAC5C,MAAM;QACR;YACE,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,qBAAqB,CAAC,CAAiB;IAC9C,IAAI,CAAC,CAAC,GAAG,yBAAgB,EAAE,CAAC;QAC1B,gBAAgB,CAAC,CAAC,EAAE,8BAA8B,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,gBAAgB,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,aAAa,CAAC,GAAc,EAAE,GAAW,EAAE,QAAgB,EAAE,KAAa,EAAE,EAA0B;IACpH,MAAM,CAAC,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,QAAQ,GAAG,CAAC,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,eAAe,CAAC,CAAC,CAAC;QAAE,OAAO,YAAY,CAAC;IAC5C,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACvC,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,IAAI,CAAC,CAAC,GAAG,yBAAgB,EAAE,CAAC;QAC1B,gBAAgB,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAClD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAc,EAAE,GAAW,EAAE,QAAgB,EAAE,KAAa;IACxF,OAAO,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAc,EAAE,GAAW,EAAE,QAAgB;IACxE,OAAO,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED;;2EAE2E;AAE3E,8DAA8D;AAC9D,SAAS,yBAAyB,CAAC,GAAc,EAAE,MAAe,EAAE,IAAY,EAAE,OAAgB,EAC/D,QAAgB,EAAE,EAA0B,EAAE,KAAa;IAC5F,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,eAAe;QAAE,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9C,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,IAAI,EAAE,EAAE,CAAC;QACP,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;YAChB,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1F,CAAC;aAAM,CAAC;YACN,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACrC,CAAC;QACD,2DAA2D;QAC3D,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,EAAE,GAAG,IAAI,CAAC;IAC1D,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,cAAc,CAAC,OAAO,CAAC;QAAE,OAAO,YAAY,CAAC;IACjD,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,QAAQ,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;QACtC,IAAI,GAAW,CAAC;QAChB,IAAI,KAAK,GAA8B,IAAI,CAAC;QAC5C,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAChC,IAAI,GAAG,GAAG,CAAC;gBAAE,OAAO,YAAY,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,8BAA8B,CAAC,GAAG,EAAE,GAAG,EAAE,gBAAgB,GAAG,kBAAkB,CAAC,CAAC;YACxF,IAAI,CAAC,KAAK;gBAAE,OAAO,YAAY,CAAC;YAChC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;QACrB,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,IAAY,CAAC;YACjB,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,KAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACxB,CAAC;YACD,MAAM,MAAM,GAAG,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAC3F,IAAI,cAAc,CAAC,MAAM,CAAC;gBAAE,OAAO,YAAY,CAAC;YAChD,IAAI,GAAW,CAAC;YAChB,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,GAAG,GAAG,CAAC;gBAAE,OAAO,YAAY,CAAC;QACnC,CAAC;IACH,CAAC;SAAM,IAAI,EAAE,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,UAAW,EAAE,EAAE,CAAC,UAAW,GAAG,EAAE,CAAC,UAAW,CAAC,CAAC;QACnF,IAAI,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;IACxG,CAAC;IACD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3C,IAAI,cAAc,CAAC,QAAQ,CAAC;QAAE,OAAO,YAAY,CAAC;IAClD,OAAO,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,aAAa,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe;IACvE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD;oEAC4D;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,cAAc,CAAC,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC;QAC9C,MAAM,GAAG,GAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAClD,MAAM,EAAE,GAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,GAAa,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,cAAc,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;QACpC,IAAI,sBAAsB,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;QACzG,OAAO,yBAAyB,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,GAAa,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;IACD;;mDAE+C;IAC/C,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAa,CAAC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC,GAAG,EAAE,GAAa,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED;;;gEAGgE;AAChE,kEAAkE;AAClE,MAAM,CAAC,MAAM,aAAa,GAA6E;IACrG,OAAO,EAAG,IAAY,CAAC,OAAO;IAC9B,SAAS,EAAG,IAAY,CAAC,SAAS;CACnC,CAAC;AACF,MAAM,cAAc,GAAG,IAAI,OAAO,EAAU,CAAC;AAC7C,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC,SAAS,cAAc,CAAC,CAAU;IAChC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,aAAa,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,OAAO,mBAAmB,IAAI,cAAc,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe;IAC3E,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,sBAAsB,CAAC,CAAS;IACvC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC;AAC/F,CAAC;AAED,SAAS,eAAe,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe;IACzE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,MAAM,CAAC,GAAG,GAAa,CAAC;IACxB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACjH,cAAc,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,mBAAmB,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,aAAa,CAAC,OAAO;QAAE,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,CAAY,CAAC;IACtE,MAAM,GAAG,GAAG,CAAC,CAAC,sBAAsB,CAAC,GAAG,EAAE,IAAI,2BAAmB,CAAC;IAClE,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACpC,IAAI,yBAAyB,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACnG,CAAC,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjC,cAAc,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC;IAClC,mBAAmB,GAAG,IAAI,CAAC;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC;AAeD,SAAS,aAAa,CAAC,GAAc,EAAE,GAAyB,EAAE,MAAe,EAAE,GAAY,EAAE,GAAY;IAC3G,oCAAoC;IACpC,4DAA4D;IAC5D,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;QACnD,IAAI,cAAc,CAAC,CAAC,CAAC;YAAE,OAAO,YAAY,CAAC;QAC3C,IAAI,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;YAC1B,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAClC,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,OAAO,YAAY,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QACvC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1D,IAAI,cAAc,CAAC,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;IAC/C,CAAC;IACD,QAAQ,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,GAAG,CAAC;YAC7B,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC;oBAAE,MAAM;gBACnC,OAAO,GAAG,CAAC;YACb,CAAC;YACD,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,OAAO,GAAG,CAAC;YACpC,MAAM,CAAC,YAAY;QACrB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC;QACb;YACE,MAAM;IACV,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,GAAc,EAAE,GAAyB,EAAE,MAAe,EAAE,GAAY,EAAE,MAAc,EAAE,KAAa;IAC7H,IAAI,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC;QAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC,CAAC;IAAC,CAAC;IAE9E,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAAG,CAAC;QACd,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,EAAE,6BAAqB,EAAE,CAAC;YAC5B,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5B,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,EAAE,6BAAqB,EAAE,CAAC;YACnC,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC5B,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,EAAE,8BAAsB,IAAI,EAAE,+BAAsB,EAAE,CAAC;YAChE,gEAAgE;YAChE,GAAG,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAY,CAAC;QACxC,CAAC;aAAM,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,CAAC,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;YACnD,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;YACnC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,OAAO,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1B,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;gBAC7C,OAAO,CAAC,CAAC,CAAC;YACZ,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC;YACjC,IAAI,GAAW,EAAE,IAAY,CAAC;YAC9B,IAAI,GAAG,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;gBACnB,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC;gBACrB,IAAI,GAAG,GAAG,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;gBAChB,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;YACnB,CAAC;YACD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACjC,IAAI,GAAG,GAAG,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;YACvB,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACtC,IAAI,GAAG,GAAG,CAAC;oBAAE,OAAO,CAAC,CAAC,CAAC;gBACvB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7B,IAAI,CAAC,GAAG,CAAC;wBAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAChB,IAAI,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;oBACzC,IAAI,cAAc,CAAC,CAAC,CAAC;wBAAE,OAAO,CAAC,CAAC,CAAC;oBACjC,2DAA2D;oBAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;oBACvB,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC1C,IAAI,cAAc,CAAC,CAAC,CAAC;wBAAE,OAAO,CAAC,CAAC,CAAC;oBACjC,IAAI,cAAc,CAAC,CAAC,CAAC;wBAAE,CAAC,GAAG,IAAI,CAAC;oBAChC,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC;wBAAE,OAAO,CAAC,CAAC,CAAC;gBACtE,CAAC;gBACD,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;oBAC9B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,CAAC;gBACD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAc,CAAC;gBACnB,IAAI,GAAG,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;oBAC/B,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACtC,IAAI,CAAC,IAAI;wBAAE,OAAO,CAAC,CAAC,CAAC;oBACrB,GAAG,GAAG,IAAI,CAAC;gBACb,CAAC;gBACD,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;gBACvB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,IAAI,WAAW,GAAG,KAAK,CAAC;gBACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7B,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBAClB,IAAI,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,CAAC,CAAC;wBAAE,OAAO,CAAC,CAAC,CAAC;oBACjC,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC1C,IAAI,cAAc,CAAC,CAAC,CAAC;wBAAE,OAAO,CAAC,CAAC,CAAC;oBACjC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;wBACvB,IAAI,WAAW;4BAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACjC,IAAI,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;wBACpC,IAAI,cAAc,CAAC,IAAI,CAAC;4BAAE,OAAO,CAAC,CAAC,CAAC;wBACpC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAChB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;wBAC3B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAChB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACjB,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC;4BAAE,OAAO,CAAC,CAAC,CAAC;wBACpE,WAAW,GAAG,IAAI,CAAC;oBACrB,CAAC;gBACH,CAAC;gBACD,IAAI,WAAW,IAAI,GAAG,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC;oBAClC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACrB,CAAC;gBACD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;YACD,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,sBAAsB;IACtB,QAAQ,OAAO,GAAG,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,CAAC,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACtC,IAAI,cAAc,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC;YACjC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAW,CAAC,CAAC;YACxB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,KAAK,QAAQ;YACX,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO,CAAC,CAAC;QACX,KAAK,SAAS;YACZ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ;YACX,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YACnD,OAAO,CAAC,CAAC;QACX,KAAK,QAAQ;YACX,uDAAuD;YACvD,iBAAiB,CAAC,GAAG,EAAE,uCAAuC,CAAC,CAAC;YAChE,OAAO,CAAC,CAAC,CAAC;QACZ;YACE,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,wFAAwF;AACxF,SAAS,cAAc,CAAC,GAAc,EAAE,GAAY;IAClD,MAAM,GAAG,GAAG,8BAA8B,CAAC,GAAG,EAAE,GAAe,EAAE,kBAAkB,GAAG,gBAAgB,CAAC,CAAC;IACxG,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,cAAc,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,CAAW,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAc,EAAE,GAAY,EAAE,QAAiB,EAAE,MAAe;IAC/F,MAAM,GAAG,GAAyB;QAChC,aAAa,EAAE,SAAS;QACxB,KAAK,EAAE,EAAE;QACT,aAAa,EAAE,IAAI;QACnB,GAAG,EAAE,EAAE;QACP,KAAK,EAAE,EAAE;QACT,CAAC,EAAE,EAAE;KACN,CAAC;IACF,IAAI,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,aAAa,GAAG,QAAQ,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACtC,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,YAAY,CAAC;QACjC,IAAI,GAAG,EAAE,CAAC;YACR,2CAA2C;YAC3C,GAAG,CAAC,aAAa,GAAG,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC;gBAAE,OAAO,YAAY,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC3B,IAAI,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC9C,IAAI,cAAc,CAAC,CAAC,CAAC;oBAAE,OAAO,YAAY,CAAC;gBAC3C,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrB,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,6BAAqB,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,6BAAqB,EAAE,CAAC;wBACvF,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;wBACxB,IAAI,cAAc,CAAC,CAAC,CAAC;4BAAE,OAAO,YAAY,CAAC;oBAC7C,CAAC;yBAAM,CAAC;wBACN,SAAS;oBACX,CAAC;gBACH,CAAC;qBAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACjC,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACxB,IAAI,cAAc,CAAC,CAAC,CAAC;wBAAE,OAAO,YAAY,CAAC;gBAC7C,CAAC;qBAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBACjC,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAW,CAAC,EAAE,CAAC;oBAC7C,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAW,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,IAAI,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,6BAAqB,EAAE,CAAC;YAChD,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,6BAAqB,EAAE,CAAC;YACvD,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,cAAc,CAAC,KAAK,CAAC;YAAE,OAAO,YAAY,CAAC;IACjD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,cAAc,CAAC,CAAC,CAAC;YAAE,OAAO,YAAY,CAAC;QAC3C,GAAG,CAAC,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,CAAW,CAAC,CAAC;IACnD,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACrC,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,cAAc,CAAC,OAAO,CAAC;QAAE,OAAO,YAAY,CAAC;IACjD,IAAI,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC5G,IAAI,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7C,IAAI,cAAc,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAAE,OAAO,YAAY,CAAC;IAC9E,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAc,EAAE,QAAiB,EAAE,IAAe;IAC3E,kCAAkC;IAClC;;;;6EAIyE;IACzE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,OAAQ,IAAI,CAAC,SAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,CAAC,YAAY,SAAS,CAAC;gBAAE,OAAO,CAAC,CAAC,0BAA0B,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IACD,OAAO,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,aAAa,GAAG;IACpB,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,iBAAiB,CAAC;IAC/C,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE,aAAa,CAAC;IACvC,YAAY,CAAC,SAAS,EAAE,CAAC,EAAE,eAAe,CAAC;IAC3C,YAAY,CAAC,WAAW,EAAE,CAAC,EAAE,iBAAiB,CAAC;IAC/C,kBAAkB,CAAC,0BAA0B,EAAE,MAAM,EAAE,oBAAoB,CAAC;CAC7E,CAAC;AAEF,MAAM,WAAW,GAAG;IAClB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,gBAAgB,GAAG,oBAAoB,CAAC;CAC9E,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,GAAc;IAChD,iCAAiC;IACjC,0BAA0B,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAC/D,CAAC","sourcesContent":["/*\n * JSON object (port of the JSON part of quickjs.c: json_next_token,\n * json_parse_value, JS_ParseJSON, internalize_json_property,\n * js_json_check, js_json_to_str, JS_JSONStringify)\n */\nimport * as Q from '../quickjs.ts';\nimport {\n JSContext, JSValue, JSObject, JSClassID, JSErrorEnum, JSAtom, JS_EXCEPTION, JS_IsException, JS_IsUndefined,\n JS_IsObject, JS_IsFunction, JS_IsArray, JS_NewObject, JS_NewArray, JS_NewErrorNative, JS_Throw, JS_ThrowTypeError,\n JS_ThrowStackOverflow, JS_DefinePropertyValue, JS_DefinePropertyValueUint32, JS_DefinePropertyValueStr,\n JS_GetProperty, JS_GetPropertyInt64, JS_GetPropertyValue, JS_DeleteProperty, JS_GetOwnPropertyNamesInternal,\n JS_PROP_C_W_E, JS_PROP_WRITABLE, JS_PROP_CONFIGURABLE, JS_GPN_STRING_MASK, JS_GPN_ENUM_ONLY, JS_ATOM_NULL,\n JS_ATOM_empty_string, JS_ATOM_toJSON, JS_ATOM_fileName, JS_ATOM_lineNumber, JS_ATOM_columnNumber,\n JS_ATOM_Symbol_toStringTag, JS_ATOM_true, JS_ATOM_false, JS_ATOM_null, JS_ValueToAtom, JS_NewAtomUInt32,\n JS_AtomToValue, JS_Call, JS_ToString, JS_ToNumber, JS_ToInt32Clamp, JS_ToBoolFree, JS_ToQuotedString,\n js_get_length64, build_backtrace, JS_SetPropertyFunctionList, JS_CFUNC_DEF, JS_PROP_STRING_DEF, JS_OBJECT_DEF,\n JS_NewAtom, JS_ATOM_NaN, JS_ATOM_Infinity, JS_ThrowSyntaxError, JS_PROP_ENUMERABLE, js_same_value,\n __JS_AtomIsTaggedInt, __JS_AtomToUInt32,\n} from '../quickjs.ts';\nimport { fix_deep_json } from './native.ts';\n\n/* ---------------------------------------------------------------------\n JSON parser (port of json_next_token / json_parse_value)\n --------------------------------------------------------------------- */\n\nexport const JS_PARSE_JSON_EXT = 1 << 0; /* allow extended JSON (comments, trailing commas, ...) */\n\nconst enum JSONTok {\n EOF = -1,\n STRING = -2,\n NUMBER = -3,\n IDENT = -4,\n ERROR = -5,\n}\n\nclass JSONParseState {\n ctx: JSContext;\n buf: string;\n buf_end: number;\n buf_ptr = 0;\n last_ptr = 0;\n filename: string;\n ext_json = false;\n /* current token */\n tok: number = JSONTok.EOF;\n tok_ptr = 0; /* start position of the token */\n tok_str = ''; /* TOK_STRING value */\n tok_num: JSValue = 0; /* TOK_NUMBER value */\n tok_atom: JSAtom = JS_ATOM_NULL; /* TOK_IDENT atom */\n constructor(ctx: JSContext, buf: string, filename: string) {\n this.ctx = ctx;\n this.buf = buf;\n this.buf_end = buf.length;\n this.filename = filename;\n }\n /* character code at position p, 0 past the end (like the NUL terminated C buffer) */\n at(p: number): number {\n return p < this.buf_end ? this.buf.charCodeAt(p) : 0;\n }\n}\n\nconst CP_LS = 0x2028;\nconst CP_PS = 0x2029;\n\nfunction get_line_col(buf: string, pos: number): [number, number] {\n let line = 1, col = 1;\n const n = Math.min(pos, buf.length);\n for (let i = 0; i < n; i++) {\n const c = buf.charCodeAt(i);\n if (c === 10) { line++; col = 1; }\n else if (c === 13) { if (buf.charCodeAt(i + 1) !== 10) { line++; col = 1; } }\n else if (c === CP_LS || c === CP_PS) { line++; col = 1; }\n else col++;\n }\n return [line, col];\n}\n\n/* port of js_parse_error_pos / js_parse_error_v: throw a SyntaxError\n with the position of 'pos' in the input */\nfunction json_parse_error_pos(s: JSONParseState, pos: number, msg: string): number {\n const ctx = s.ctx;\n const [line, col] = get_line_col(s.buf, pos);\n const obj = JS_NewErrorNative(ctx, JSErrorEnum.SYNTAX_ERROR, msg);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_fileName, s.filename, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_lineNumber, line, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n JS_DefinePropertyValue(ctx, obj, JS_ATOM_columnNumber, col, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE);\n build_backtrace(ctx, obj, s.filename, line, col, 0);\n JS_Throw(ctx, obj);\n return -1;\n}\n\nfunction json_parse_error(s: JSONParseState, msg: string): number {\n return json_parse_error_pos(s, s.tok_ptr, msg);\n}\n\nfunction is_digit(c: number): boolean { return c >= 48 && c <= 57; }\n\nfunction from_hex(c: number): number {\n if (c >= 48 && c <= 57) return c - 48;\n if (c >= 65 && c <= 70) return c - 55;\n if (c >= 97 && c <= 102) return c - 87;\n return -1;\n}\n\n/* ASCII identifier start / continue (lre_is_id_start / lre_is_id_continue restricted to ASCII) */\nfunction is_ident_start_ascii(c: number): boolean {\n return (c >= 97 && c <= 122) || (c >= 65 && c <= 90) || c === 95 /* _ */ || c === 36 /* $ */;\n}\nfunction is_ident_continue_ascii(c: number): boolean {\n return is_ident_start_ascii(c) || is_digit(c);\n}\n\n/* port of json_parse_string: 'p' is the position after the opening quote */\nfunction json_parse_string(s: JSONParseState, sep: number, p: number): number {\n let out = '';\n for (;;) {\n if (p >= s.buf_end) return json_parse_error(s, 'Unexpected end of JSON input');\n let c = s.at(p++);\n if (c === sep) break;\n if (c < 0x20) return json_parse_error_pos(s, p - 1, 'Bad control character in string literal');\n if (c === 92 /* \\ */) {\n c = s.at(p++);\n switch (c) {\n case 98: c = 8; break; /* \\b */\n case 102: c = 12; break; /* \\f */\n case 110: c = 10; break; /* \\n */\n case 114: c = 13; break; /* \\r */\n case 116: c = 9; break; /* \\t */\n case 92: /* \\ */\n case 47: /* / */\n break;\n case 117: /* u */\n c = 0;\n for (let i = 0; i < 4; i++) {\n const h = from_hex(s.at(p++));\n if (h < 0) return json_parse_error_pos(s, p - 1, 'Bad Unicode escape');\n c = (c << 4) | h;\n }\n break;\n case 10: /* escaped newline: multi-line string */\n if (s.ext_json) continue;\n return json_parse_error_pos(s, p - 1, 'Bad escaped character');\n case 118: /* v */\n if (s.ext_json) { c = 11; break; }\n return json_parse_error_pos(s, p - 1, 'Bad escaped character');\n default:\n if (c === sep) break;\n if (p > s.buf_end) return json_parse_error(s, 'Unexpected end of JSON input');\n return json_parse_error_pos(s, p - 1, 'Bad escaped character');\n }\n }\n /* the input is UTF-16: other characters (surrogates included) are copied as is */\n out += String.fromCharCode(c);\n }\n s.tok = JSONTok.STRING;\n s.tok_str = out;\n s.buf_ptr = p;\n return 0;\n}\n\n/* port of json_parse_ident: only pure ascii identifiers are accepted */\nfunction json_parse_ident(s: JSONParseState, pp: { p: number }, c: number): JSAtom {\n let p = pp.p;\n let ident = String.fromCharCode(c);\n for (;;) {\n c = s.at(p);\n if (c >= 128 || !is_ident_continue_ascii(c)) break;\n ident += String.fromCharCode(c);\n p++;\n }\n pp.p = p;\n return JS_NewAtom(s.ctx, ident);\n}\n\n/* the message of js_parse_error_pos(s, p, \"Unexpected token '%c'\", *p): the\n NUL past the end of the C buffer ends the formatted message */\nfunction json_unexpected_char(s: JSONParseState, p: number): number {\n const c = s.at(p);\n return json_parse_error_pos(s, p, c === 0 ? \"Unexpected token '\" : `Unexpected token '${String.fromCharCode(c)}'`);\n}\n\n/* the input starts with 'str' at position p */\nfunction json_strstart(s: JSONParseState, p: number, str: string): boolean {\n return s.buf.startsWith(str, p);\n}\n\n/* port of json_parse_number: 'p' is the position of the first character */\nfunction json_parse_number(s: JSONParseState, p: number): number {\n const p_start = p;\n let d: number;\n if (s.at(p) === 43 /* + */ || s.at(p) === 45 /* - */) p++;\n done: {\n if (!is_digit(s.at(p))) {\n if (!s.ext_json) return json_unexpected_char(s, p);\n if (json_strstart(s, p, 'Infinity')) {\n p += 8;\n d = s.at(p_start) === 45 ? -Infinity : Infinity;\n break done;\n } else if (json_strstart(s, p, 'NaN')) {\n p += 3;\n d = NaN;\n break done;\n } else if (s.at(p) !== 46 /* . */) {\n return json_unexpected_char(s, p);\n }\n }\n if (s.at(p) === 48 /* 0 */) {\n if (s.ext_json) {\n /* also accepts base 16, 8 and 2 prefix for integers */\n let radix = 10;\n const c1 = s.at(p + 1);\n if (c1 === 120 || c1 === 88) { p += 2; radix = 16; }\n else if (c1 === 111 || c1 === 79) { p += 2; radix = 8; }\n else if (c1 === 98 || c1 === 66) { p += 2; radix = 2; }\n if (radix !== 10) {\n /* prefix is present */\n if (to_digit(s.at(p)) >= radix) return json_unexpected_char(s, p);\n const p_digits = p;\n while (to_digit(s.at(p)) < radix) p++;\n /* parseInt is exact for the radixes 2, 8 and 16 */\n d = parseInt(s.buf.substring(p_digits, p), radix);\n if (s.at(p_start) === 45) d = -d;\n break done;\n }\n }\n if (is_digit(s.at(p + 1))) return json_parse_error_pos(s, p, 'Unexpected number');\n }\n while (is_digit(s.at(p))) p++;\n if (s.at(p) === 46 /* . */) {\n p++;\n if (!is_digit(s.at(p))) return json_parse_error_pos(s, p, 'Unterminated fractional number');\n while (is_digit(s.at(p))) p++;\n }\n if (s.at(p) === 101 /* e */ || s.at(p) === 69 /* E */) {\n p++;\n if (s.at(p) === 43 || s.at(p) === 45) p++;\n if (!is_digit(s.at(p))) return json_parse_error_pos(s, p, 'Exponent part is missing a number');\n while (is_digit(s.at(p))) p++;\n }\n d = Number(s.buf.substring(p_start, p));\n }\n s.tok = JSONTok.NUMBER;\n s.tok_num = d;\n s.buf_ptr = p;\n return 0;\n}\n\nfunction to_digit(c: number): number {\n if (c >= 48 && c <= 57) return c - 48;\n if (c >= 65 && c <= 90) return c - 65 + 10;\n if (c >= 97 && c <= 122) return c - 97 + 10;\n return 36;\n}\n\nfunction json_next_token(s: JSONParseState): number {\n let p = s.last_ptr = s.buf_ptr;\n for (;;) {\n s.tok_ptr = p;\n const c = s.at(p);\n switch (c) {\n case 0:\n if (p >= s.buf_end) {\n s.tok = JSONTok.EOF;\n s.buf_ptr = p;\n return 0;\n }\n break; /* def_token */\n case 39: /* ' */\n if (!s.ext_json) break; /* JSON does not accept single quoted strings */\n /* fall through */\n case 34: /* \" */\n if (json_parse_string(s, c, p + 1)) { s.tok = JSONTok.ERROR; return -1; }\n return 0;\n case 13: /* \\r: accept DOS and MAC newline sequences */\n if (s.at(p + 1) === 10) p++;\n /* fall through */\n case 10:\n p++;\n continue;\n case 12: /* \\f */\n case 11: /* \\v */\n if (!s.ext_json) break; /* JSONWhitespace does not match <VT>, nor <FF> */\n /* fall through */\n case 32:\n case 9:\n p++;\n continue;\n case 47: /* / */\n if (!s.ext_json) break; /* JSON does not accept comments */\n if (s.at(p + 1) === 42 /* * */) {\n p += 2;\n for (;;) {\n if (p >= s.buf_end) {\n json_parse_error(s, 'unexpected end of comment');\n s.tok = JSONTok.ERROR;\n return -1;\n }\n if (s.at(p) === 42 && s.at(p + 1) === 47) { p += 2; break; }\n p++;\n }\n continue;\n } else if (s.at(p + 1) === 47) {\n p += 2;\n for (;;) {\n if (p >= s.buf_end) break;\n const c1 = s.at(p);\n if (c1 === 13 || c1 === 10 || c1 === CP_LS || c1 === CP_PS) break;\n p++;\n }\n continue;\n }\n break; /* def_token */\n case 43: /* + */\n if (!s.ext_json) break;\n return json_parse_number(s, p);\n case 46: /* . */\n if (!s.ext_json || !is_digit(s.at(p + 1))) break;\n return json_parse_number(s, p);\n case 45: /* - */\n return json_parse_number(s, p);\n default:\n if (is_digit(c)) return json_parse_number(s, p);\n if (is_ident_start_ascii(c)) {\n /* identifier: only pure ascii characters are accepted */\n const pp = { p: p + 1 };\n const atom = json_parse_ident(s, pp, c);\n if (atom === JS_ATOM_NULL) { s.tok = JSONTok.ERROR; return -1; }\n s.tok_atom = atom;\n s.tok = JSONTok.IDENT;\n s.buf_ptr = pp.p;\n return 0;\n }\n if (c >= 128) {\n json_parse_error(s, 'unexpected character');\n s.tok = JSONTok.ERROR;\n return -1;\n }\n break;\n }\n /* def_token */\n s.tok = c;\n p++;\n s.buf_ptr = p;\n return 0;\n }\n}\n\nfunction json_parse_expect(s: JSONParseState, tok: number): number {\n if (s.tok !== tok) {\n /* XXX: dump token correctly in all cases */\n return json_parse_error(s, `expecting '${String.fromCharCode(tok)}'`);\n }\n return json_next_token(s);\n}\n\n/* current token (through a function so that TypeScript does not narrow s.tok) */\nfunction cur_tok(s: JSONParseState): number { return s.tok; }\n\n/* JSON.parse source text access (QuickJS d7ae12a): the parse record of a\n value, kept to give a reviver the source text of the unmodified\n primitives. 'value' is the parsed value; arrays have 'elements', objects\n 'entries' (the last of duplicated keys, as the specification), primitives\n the position and length of their source text. */\nexport interface JSONParseRecord {\n value: JSValue;\n elements?: JSONParseRecord[];\n entries?: Map<JSAtom, JSONParseRecord>;\n source_pos?: number;\n source_len?: number;\n}\n\nfunction json_parse_record_init_primitive(s: JSONParseState, pr: JSONParseRecord, val: JSValue): void {\n pr.value = val;\n pr.source_pos = s.tok_ptr;\n pr.source_len = s.buf_ptr - s.tok_ptr;\n}\n\n/* 'pr' can be null */\nfunction json_parse_value(s: JSONParseState, depth: number, pr: JSONParseRecord | null): JSValue {\n const ctx = s.ctx;\n let val: JSValue = null;\n if (depth > ctx.rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n const tok: number = s.tok;\n switch (tok) {\n case 123: /* { */\n {\n if (json_next_token(s)) return JS_EXCEPTION;\n val = JS_NewObject(ctx);\n if (JS_IsException(val)) return val;\n if (pr) {\n pr.value = val;\n pr.entries = new Map();\n }\n if (cur_tok(s) !== 125 /* } */) {\n for (;;) {\n let prop_name: JSAtom;\n if (cur_tok(s) === JSONTok.STRING) {\n prop_name = JS_ValueToAtom(ctx, s.tok_str);\n if (prop_name === JS_ATOM_NULL) return JS_EXCEPTION;\n } else if (s.ext_json && cur_tok(s) === JSONTok.IDENT) {\n prop_name = s.tok_atom;\n } else {\n json_parse_error(s, 'expecting property name');\n return JS_EXCEPTION;\n }\n if (json_next_token(s)) return JS_EXCEPTION;\n if (json_parse_expect(s, 58 /* : */)) return JS_EXCEPTION;\n let pr1: JSONParseRecord | null = null;\n if (pr) {\n pr1 = { value: undefined };\n pr.entries!.set(prop_name, pr1);\n }\n const prop_val = json_parse_value(s, depth + 1, pr1);\n if (JS_IsException(prop_val)) return JS_EXCEPTION;\n const ret = JS_DefinePropertyValue(ctx, val, prop_name, prop_val, JS_PROP_C_W_E);\n if (ret < 0) return JS_EXCEPTION;\n if (cur_tok(s) !== 44 /* , */) break;\n if (json_next_token(s)) return JS_EXCEPTION;\n if (s.ext_json && cur_tok(s) === 125) break;\n }\n }\n if (json_parse_expect(s, 125 /* } */)) return JS_EXCEPTION;\n }\n break;\n case 91: /* [ */\n {\n if (json_next_token(s)) return JS_EXCEPTION;\n val = JS_NewArray(ctx);\n if (JS_IsException(val)) return val;\n if (pr) {\n pr.value = val;\n pr.elements = [];\n }\n if (cur_tok(s) !== 93 /* ] */) {\n let idx = 0;\n for (;;) {\n let pr1: JSONParseRecord | null = null;\n if (pr) {\n pr1 = { value: undefined };\n pr.elements!.push(pr1);\n }\n const el = json_parse_value(s, depth + 1, pr1);\n if (JS_IsException(el)) return JS_EXCEPTION;\n const ret = JS_DefinePropertyValueUint32(ctx, val, idx, el, JS_PROP_C_W_E);\n if (ret < 0) return JS_EXCEPTION;\n if (cur_tok(s) !== 44 /* , */) break;\n if (json_next_token(s)) return JS_EXCEPTION;\n idx++;\n if (s.ext_json && cur_tok(s) === 93) break;\n }\n }\n if (json_parse_expect(s, 93 /* ] */)) return JS_EXCEPTION;\n }\n break;\n case JSONTok.STRING:\n val = s.tok_str;\n if (pr) json_parse_record_init_primitive(s, pr, val);\n if (json_next_token(s)) return JS_EXCEPTION;\n break;\n case JSONTok.NUMBER:\n val = s.tok_num;\n if (pr) json_parse_record_init_primitive(s, pr, val);\n if (json_next_token(s)) return JS_EXCEPTION;\n break;\n case JSONTok.IDENT:\n if (s.tok_atom === JS_ATOM_false || s.tok_atom === JS_ATOM_true) {\n val = (s.tok_atom === JS_ATOM_true);\n if (pr) json_parse_record_init_primitive(s, pr, val);\n } else if (s.tok_atom === JS_ATOM_null) {\n val = null;\n if (pr) json_parse_record_init_primitive(s, pr, val);\n } else if (s.tok_atom === JS_ATOM_NaN && s.ext_json) {\n /* Note: json5 identifier handling is ambiguous e.g. is\n '{ NaN: 1 }' a valid JSON5 production ? */\n val = NaN;\n } else if (s.tok_atom === JS_ATOM_Infinity && s.ext_json) {\n val = Infinity;\n } else {\n return json_unexpected_token(s);\n }\n if (json_next_token(s)) return JS_EXCEPTION;\n break;\n default:\n return json_unexpected_token(s);\n }\n return val;\n}\n\nfunction json_unexpected_token(s: JSONParseState): JSValue {\n if (s.tok === JSONTok.EOF) {\n json_parse_error(s, 'Unexpected end of JSON input');\n } else {\n json_parse_error(s, `unexpected token: '${s.buf.substring(s.tok_ptr, s.buf_ptr)}'`);\n }\n return JS_EXCEPTION;\n}\n\n/* 'pr' (can be null) receives the parse record of the value */\nexport function JS_ParseJSON3(ctx: JSContext, buf: string, filename: string, flags: number, pr: JSONParseRecord | null): JSValue {\n const s = new JSONParseState(ctx, buf, filename);\n s.ext_json = (flags & JS_PARSE_JSON_EXT) !== 0;\n if (json_next_token(s)) return JS_EXCEPTION;\n const val = json_parse_value(s, 0, pr);\n if (JS_IsException(val)) return val;\n if (s.tok !== JSONTok.EOF) {\n json_parse_error(s, 'unexpected data at the end');\n return JS_EXCEPTION;\n }\n return val;\n}\n\nexport function JS_ParseJSON2(ctx: JSContext, buf: string, filename: string, flags: number): JSValue {\n return JS_ParseJSON3(ctx, buf, filename, flags, null);\n}\n\nexport function JS_ParseJSON(ctx: JSContext, buf: string, filename: string): JSValue {\n return JS_ParseJSON2(ctx, buf, filename, 0);\n}\n\n/* ---------------------------------------------------------------------\n JSON.parse\n --------------------------------------------------------------------- */\n\n/* if pr !== null, then pr.value === holder by construction */\nfunction internalize_json_property(ctx: JSContext, holder: JSValue, name: JSAtom, reviver: JSValue,\n text_str: string, pr: JSONParseRecord | null, depth: number): JSValue {\n if (depth > ctx.rt.max_stack_depth) return JS_ThrowStackOverflow(ctx);\n const val = JS_GetProperty(ctx, holder, name);\n if (JS_IsException(val)) return val;\n if (pr) {\n if (pr.elements) {\n pr = __JS_AtomIsTaggedInt(name) ? (pr.elements[__JS_AtomToUInt32(name)] ?? null) : null;\n } else {\n pr = pr.entries?.get(name) ?? null;\n }\n /* the source text is only given for an unmodified value */\n if (pr && !js_same_value(ctx, pr.value, val)) pr = null;\n }\n const context = JS_NewObject(ctx);\n if (JS_IsException(context)) return JS_EXCEPTION;\n if (JS_IsObject(val)) {\n const is_array = JS_IsArray(ctx, val);\n if (is_array < 0) return JS_EXCEPTION;\n let len: number;\n let atoms: { atom: JSAtom }[] | null = null;\n if (is_array) {\n len = js_get_length64(ctx, val);\n if (len < 0) return JS_EXCEPTION;\n } else {\n atoms = JS_GetOwnPropertyNamesInternal(ctx, val, JS_GPN_ENUM_ONLY | JS_GPN_STRING_MASK);\n if (!atoms) return JS_EXCEPTION;\n len = atoms.length;\n }\n for (let i = 0; i < len; i++) {\n let prop: JSAtom;\n if (is_array) {\n prop = JS_NewAtomUInt32(ctx, i);\n } else {\n prop = atoms![i].atom;\n }\n const new_el = internalize_json_property(ctx, val, prop, reviver, text_str, pr, depth + 1);\n if (JS_IsException(new_el)) return JS_EXCEPTION;\n let ret: number;\n if (JS_IsUndefined(new_el)) {\n ret = JS_DeleteProperty(ctx, val, prop, 0);\n } else {\n ret = JS_DefinePropertyValue(ctx, val, prop, new_el, JS_PROP_C_W_E);\n }\n if (ret < 0) return JS_EXCEPTION;\n }\n } else if (pr) {\n const source = text_str.substring(pr.source_pos!, pr.source_pos! + pr.source_len!);\n if (JS_DefinePropertyValueStr(ctx, context, 'source', source, JS_PROP_C_W_E) < 0) return JS_EXCEPTION;\n }\n const name_val = JS_AtomToValue(ctx, name);\n if (JS_IsException(name_val)) return JS_EXCEPTION;\n return JS_Call(ctx, reviver, holder, [name_val, val, context]);\n}\n\nfunction js_json_parse(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const str = JS_ToString(ctx, argv[0]);\n if (JS_IsException(str)) return JS_EXCEPTION;\n if (argv.length > 1 && JS_IsFunction(ctx, argv[1])) {\n /* the ported parser, which keeps the parse records giving the reviver\n the source text of the primitives (its third argument) */\n const reviver = argv[1];\n const root = JS_NewObject(ctx);\n if (JS_IsException(root)) return JS_EXCEPTION;\n const pr1: JSONParseRecord = { value: undefined };\n const pr: JSONParseRecord = { value: root, entries: new Map([[JS_ATOM_empty_string, pr1]]) };\n const obj = JS_ParseJSON3(ctx, str as string, '<input>', 0, pr1);\n if (JS_IsException(obj)) return obj;\n if (JS_DefinePropertyValue(ctx, root, JS_ATOM_empty_string, obj, JS_PROP_C_W_E) < 0) return JS_EXCEPTION;\n return internalize_json_property(ctx, root, JS_ATOM_empty_string, reviver, str as string, pr, 0);\n }\n /* fast path: the host parser, with the tree re-prototyped to the guest\n intrinsics. On a syntax error the ported parser runs to produce the\n QuickJS error (message, line and column). */\n try {\n return fix_deep_json(ctx, JSON.parse(str as string));\n } catch {\n return JS_ParseJSON(ctx, str as string, '<input>');\n }\n}\n\n/* JSON.rawJSON objects. The host's are used when it has them, so that the\n host serializer of the JSON.stringify fast path emits their text;\n otherwise they are null-prototype objects recorded here, and\n JSON.stringify uses the ported serializer once one exists. */\n/* (exported so that a test can run without the host functions) */\nexport const json_host_raw: { rawJSON?: (s: string) => object; isRawJSON?: (v: unknown) => boolean } = {\n rawJSON: (JSON as any).rawJSON,\n isRawJSON: (JSON as any).isRawJSON,\n};\nconst guest_raw_json = new WeakSet<object>();\nlet guest_raw_json_used = false;\n\nfunction js_is_raw_json(v: JSValue): boolean {\n if (!Q.JS_IsObject(v)) return false;\n if (json_host_raw.isRawJSON && json_host_raw.isRawJSON(v)) return true;\n return guest_raw_json_used && guest_raw_json.has(v as object);\n}\n\nfunction js_json_isRawJSON(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n return js_is_raw_json(argv[0]);\n}\n\nfunction is_valid_raw_json_char(c: number): boolean {\n return (c >= 97 && c <= 122) || (c >= 48 && c <= 57) || c === 45 /* - */ || c === 34 /* \" */;\n}\n\nfunction js_json_rawJSON(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n const str = JS_ToString(ctx, argv[0]);\n if (JS_IsException(str)) return str;\n const s = str as string;\n if (s.length === 0 || !is_valid_raw_json_char(s.charCodeAt(0)) || !is_valid_raw_json_char(s.charCodeAt(s.length - 1)) ||\n JS_IsException(js_json_parse(ctx, undefined, [s]))) {\n return JS_ThrowSyntaxError(ctx, 'invalid rawJSON string');\n }\n if (json_host_raw.rawJSON) return json_host_raw.rawJSON(s) as JSValue;\n const obj = Q.JS_NewObjectProtoClass(ctx, null, JSClassID.OBJECT);\n if (JS_IsException(obj)) return obj;\n if (JS_DefinePropertyValueStr(ctx, obj, 'rawJSON', s, JS_PROP_ENUMERABLE) < 0) return JS_EXCEPTION;\n Q.JS_PreventExtensions(ctx, obj);\n guest_raw_json.add(obj as object);\n guest_raw_json_used = true;\n return obj;\n}\n\n/* ---------------------------------------------------------------------\n JSON.stringify\n --------------------------------------------------------------------- */\n\ninterface JSONStringifyContext {\n replacer_func: JSValue;\n stack: JSObject[];\n property_list: string[] | null;\n gap: string;\n empty: string;\n b: string[];\n}\n\nfunction js_json_check(ctx: JSContext, jsc: JSONStringifyContext, holder: JSValue, val: JSValue, key: JSValue): JSValue {\n /* check for object.toJSON method */\n /* ECMA specifies this is done only for Object and BigInt */\n if (JS_IsObject(val) || typeof val === 'bigint') {\n const f = JS_GetProperty(ctx, val, JS_ATOM_toJSON);\n if (JS_IsException(f)) return JS_EXCEPTION;\n if (JS_IsFunction(ctx, f)) {\n val = JS_Call(ctx, f, val, [key]);\n if (JS_IsException(val)) return JS_EXCEPTION;\n }\n }\n if (!JS_IsUndefined(jsc.replacer_func)) {\n val = JS_Call(ctx, jsc.replacer_func, holder, [key, val]);\n if (JS_IsException(val)) return JS_EXCEPTION;\n }\n switch (typeof val) {\n case 'object':\n if (val === null) return val;\n if (Q.JS_IsObject(val)) {\n if (JS_IsFunction(ctx, val)) break;\n return val;\n }\n if (JS_IsException(val)) return val;\n break; /* symbol */\n case 'string':\n case 'number':\n case 'boolean':\n case 'bigint':\n return val;\n default:\n break;\n }\n return undefined;\n}\n\nfunction js_json_to_str(ctx: JSContext, jsc: JSONStringifyContext, holder: JSValue, val: JSValue, indent: string, depth: number): number {\n if (depth > ctx.rt.max_stack_depth) { JS_ThrowStackOverflow(ctx); return -1; }\n\n if (Q.JS_IsObject(val)) {\n const p = val;\n const cl = Q.JS_GetClassID(p);\n if (cl === JSClassID.STRING) {\n val = JS_ToString(ctx, val);\n if (JS_IsException(val)) return -1;\n } else if (cl === JSClassID.NUMBER) {\n val = JS_ToNumber(ctx, val);\n if (JS_IsException(val)) return -1;\n } else if (cl === JSClassID.BOOLEAN || cl === JSClassID.BIG_INT) {\n /* This will throw the same error as for the primitive object */\n val = Q.JS_GetAnyOpaque(p) as JSValue;\n } else if (js_is_raw_json(p)) {\n const raw = Q.JS_GetPropertyStr(ctx, p, 'rawJSON');\n if (JS_IsException(raw)) return -1;\n jsc.b.push(String(raw));\n return 0;\n } else {\n if (jsc.stack.includes(p)) {\n JS_ThrowTypeError(ctx, 'circular reference');\n return -1;\n }\n const indent1 = indent + jsc.gap;\n let sep: string, sep1: string;\n if (jsc.gap !== '') {\n sep = '\\n' + indent1;\n sep1 = ' ';\n } else {\n sep = jsc.empty;\n sep1 = jsc.empty;\n }\n jsc.stack.push(p);\n const ret = JS_IsArray(ctx, val);\n if (ret < 0) return -1;\n if (ret) {\n const len = js_get_length64(ctx, val);\n if (len < 0) return -1;\n jsc.b.push('[');\n for (let i = 0; i < len; i++) {\n if (i > 0) jsc.b.push(',');\n jsc.b.push(sep);\n let v = JS_GetPropertyInt64(ctx, val, i);\n if (JS_IsException(v)) return -1;\n /* XXX: could do this string conversion only when needed */\n const prop = String(i);\n v = js_json_check(ctx, jsc, val, v, prop);\n if (JS_IsException(v)) return -1;\n if (JS_IsUndefined(v)) v = null;\n if (js_json_to_str(ctx, jsc, val, v, indent1, depth + 1)) return -1;\n }\n if (len > 0 && jsc.gap !== '') {\n jsc.b.push('\\n');\n jsc.b.push(indent);\n }\n jsc.b.push(']');\n } else {\n let tab: JSValue[];\n if (jsc.property_list !== null) {\n tab = jsc.property_list;\n } else {\n const keys = js_object_keys(ctx, val);\n if (!keys) return -1;\n tab = keys;\n }\n const len = tab.length;\n jsc.b.push('{');\n let has_content = false;\n for (let i = 0; i < len; i++) {\n let prop = tab[i];\n let v = JS_GetPropertyValue(ctx, val, prop);\n if (JS_IsException(v)) return -1;\n v = js_json_check(ctx, jsc, val, v, prop);\n if (JS_IsException(v)) return -1;\n if (!JS_IsUndefined(v)) {\n if (has_content) jsc.b.push(',');\n prop = JS_ToQuotedString(ctx, prop);\n if (JS_IsException(prop)) return -1;\n jsc.b.push(sep);\n jsc.b.push(prop as string);\n jsc.b.push(':');\n jsc.b.push(sep1);\n if (js_json_to_str(ctx, jsc, val, v, indent1, depth + 1)) return -1;\n has_content = true;\n }\n }\n if (has_content && jsc.gap !== '') {\n jsc.b.push('\\n');\n jsc.b.push(indent);\n }\n jsc.b.push('}');\n }\n jsc.stack.pop();\n return 0;\n }\n }\n /* concat_primitive */\n switch (typeof val) {\n case 'string': {\n const q = JS_ToQuotedString(ctx, val);\n if (JS_IsException(q)) return -1;\n jsc.b.push(q as string);\n return 0;\n }\n case 'number':\n if (!Number.isFinite(val)) {\n jsc.b.push('null');\n } else {\n jsc.b.push(String(val));\n }\n return 0;\n case 'boolean':\n jsc.b.push(val ? 'true' : 'false');\n return 0;\n case 'object':\n if (val === null) { jsc.b.push('null'); return 0; }\n return 0;\n case 'bigint':\n /* reject big numbers: use toJSON method to override */\n JS_ThrowTypeError(ctx, 'Do not know how to serialize a BigInt');\n return -1;\n default:\n return 0;\n }\n}\n\n/* own enumerable string keys of an object (js_object_keys with JS_ITERATOR_KIND_KEY) */\nfunction js_object_keys(ctx: JSContext, obj: JSValue): string[] | null {\n const tab = JS_GetOwnPropertyNamesInternal(ctx, obj as JSObject, JS_GPN_STRING_MASK | JS_GPN_ENUM_ONLY);\n if (!tab) return null;\n const res: string[] = [];\n for (const e of tab) {\n const v = JS_AtomToValue(ctx, e.atom);\n if (JS_IsException(v)) return null;\n res.push(v as string);\n }\n return res;\n}\n\nexport function JS_JSONStringify(ctx: JSContext, obj: JSValue, replacer: JSValue, space0: JSValue): JSValue {\n const jsc: JSONStringifyContext = {\n replacer_func: undefined,\n stack: [],\n property_list: null,\n gap: '',\n empty: '',\n b: [],\n };\n if (JS_IsFunction(ctx, replacer)) {\n jsc.replacer_func = replacer;\n } else {\n const res = JS_IsArray(ctx, replacer);\n if (res < 0) return JS_EXCEPTION;\n if (res) {\n /* XXX: enumeration is not fully correct */\n jsc.property_list = [];\n const n = js_get_length64(ctx, replacer);\n if (n < 0) return JS_EXCEPTION;\n for (let i = 0; i < n; i++) {\n let v = JS_GetPropertyInt64(ctx, replacer, i);\n if (JS_IsException(v)) return JS_EXCEPTION;\n if (Q.JS_IsObject(v)) {\n if (Q.JS_GetClassID(v) === JSClassID.STRING || Q.JS_GetClassID(v) === JSClassID.NUMBER) {\n v = JS_ToString(ctx, v);\n if (JS_IsException(v)) return JS_EXCEPTION;\n } else {\n continue;\n }\n } else if (typeof v === 'number') {\n v = JS_ToString(ctx, v);\n if (JS_IsException(v)) return JS_EXCEPTION;\n } else if (typeof v !== 'string') {\n continue;\n }\n if (!jsc.property_list.includes(v as string)) {\n jsc.property_list.push(v as string);\n }\n }\n }\n }\n let space = space0;\n if (Q.JS_IsObject(space)) {\n if (Q.JS_GetClassID(space) === JSClassID.NUMBER) {\n space = JS_ToNumber(ctx, space);\n } else if (Q.JS_GetClassID(space) === JSClassID.STRING) {\n space = JS_ToString(ctx, space);\n }\n if (JS_IsException(space)) return JS_EXCEPTION;\n }\n if (typeof space === 'number') {\n const n = JS_ToInt32Clamp(ctx, space, 0, 10, 0);\n if (JS_IsException(n)) return JS_EXCEPTION;\n jsc.gap = ' '.substring(0, n as number);\n } else if (typeof space === 'string') {\n jsc.gap = space.substring(0, Math.min(space.length, 10));\n } else {\n jsc.gap = jsc.empty;\n }\n const wrapper = JS_NewObject(ctx);\n if (JS_IsException(wrapper)) return JS_EXCEPTION;\n if (JS_DefinePropertyValue(ctx, wrapper, JS_ATOM_empty_string, obj, JS_PROP_C_W_E) < 0) return JS_EXCEPTION;\n let val = js_json_check(ctx, jsc, wrapper, obj, jsc.empty);\n if (JS_IsException(val)) return JS_EXCEPTION;\n if (JS_IsUndefined(val)) return undefined;\n if (js_json_to_str(ctx, jsc, wrapper, val, jsc.empty, 0)) return JS_EXCEPTION;\n return jsc.b.join('');\n}\n\nfunction js_json_stringify(ctx: JSContext, this_val: JSValue, argv: JSValue[]): JSValue {\n // stringify(val, replacer, space)\n /* fast path: the host serializer (toJSON/replacer are guest functions,\n called natively). A host TypeError (BigInt, cycle) is reported by the\n ported serializer with the QuickJS message; guest exceptions thrown by\n toJSON/replacer/getters propagate. The host serializer does not know\n the guest's own JSON.rawJSON objects (made when the host has none). */\n if (!guest_raw_json_used) {\n try {\n return (JSON.stringify as any)(argv[0], argv[1], argv[2]);\n } catch (e) {\n if (!(e instanceof TypeError)) return Q.js_host_exception_to_guest(ctx, e);\n }\n }\n return JS_JSONStringify(ctx, argv[0], argv[1], argv[2]);\n}\n\nconst js_json_funcs = [\n JS_CFUNC_DEF('isRawJSON', 1, js_json_isRawJSON),\n JS_CFUNC_DEF('parse', 2, js_json_parse),\n JS_CFUNC_DEF('rawJSON', 1, js_json_rawJSON),\n JS_CFUNC_DEF('stringify', 3, js_json_stringify),\n JS_PROP_STRING_DEF(JS_ATOM_Symbol_toStringTag, 'JSON', JS_PROP_CONFIGURABLE),\n];\n\nconst js_json_obj = [\n JS_OBJECT_DEF('JSON', js_json_funcs, JS_PROP_WRITABLE | JS_PROP_CONFIGURABLE),\n];\n\nexport function JS_AddIntrinsicJSON(ctx: JSContext): void {\n /* add JSON as autoinit object */\n JS_SetPropertyFunctionList(ctx, ctx.global_obj, js_json_obj);\n}\n"]}
|