elysia 1.0.24 → 1.0.25

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.
@@ -13,7 +13,7 @@
13
13
  "import type {\n\tHookContainer,\n\tTraceHandler,\n\tTraceProcess,\n\tTraceReporter,\n\tTraceStream\n} from './types'\n\nconst resolver = <T>() => {\n\tlet resolve: (a: T) => any\n\tconst promise = new Promise<T>((r) => {\n\t\tresolve = r\n\t})\n\n\treturn [promise, resolve!] as const\n}\n\ntype TraceResolver = [\n\tstart: (value: TraceProcess<'begin'>) => any,\n\tend: (value: TraceProcess<'end'>) => any\n]\n\nconst createSignal = () => {\n\tconst [start, resolveStart] = resolver<TraceProcess<'begin'>>()\n\tconst [end, resolveEnd] = resolver<TraceProcess<'end'>>()\n\n\tconst children: Promise<TraceProcess<'begin'>>[] = []\n\tconst resolvers: TraceResolver[] = []\n\n\treturn {\n\t\tsignal: start,\n\t\tconsume: (trace: TraceStream) => {\n\t\t\tswitch (trace.type) {\n\t\t\t\tcase 'begin':\n\t\t\t\t\tif (trace.unit && children.length === 0)\n\t\t\t\t\t\tfor (let i = 0; i < trace.unit; i++) {\n\t\t\t\t\t\t\tconst [start, resolveStart] =\n\t\t\t\t\t\t\t\tresolver<TraceProcess<'begin'>>()\n\t\t\t\t\t\t\tconst [end, resolveEnd] =\n\t\t\t\t\t\t\t\tresolver<TraceProcess<'end'>>()\n\n\t\t\t\t\t\t\tchildren.push(start)\n\t\t\t\t\t\t\tresolvers.push([\n\t\t\t\t\t\t\t\t(trace) => {\n\t\t\t\t\t\t\t\t\tresolveStart({\n\t\t\t\t\t\t\t\t\t\tchildren: [],\n\t\t\t\t\t\t\t\t\t\tend,\n\t\t\t\t\t\t\t\t\t\tname: trace.name ?? '',\n\t\t\t\t\t\t\t\t\t\tskip: false,\n\t\t\t\t\t\t\t\t\t\ttime: trace.time\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t(time) => {\n\t\t\t\t\t\t\t\t\tresolveEnd(time)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t}\n\n\t\t\t\t\tresolveStart({\n\t\t\t\t\t\tchildren,\n\t\t\t\t\t\tend,\n\t\t\t\t\t\tname: trace.name ?? '',\n\t\t\t\t\t\tskip: false,\n\t\t\t\t\t\ttime: trace.time\n\t\t\t\t\t})\n\t\t\t\t\tbreak\n\n\t\t\t\tcase 'end':\n\t\t\t\t\tresolveEnd(trace.time)\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t},\n\t\tconsumeChild(trace: TraceStream) {\n\t\t\tswitch (trace.type) {\n\t\t\t\tcase 'begin':\n\t\t\t\t\tif (!resolvers[0]) return\n\t\t\t\t\tconst [resolveStart] = resolvers[0]\n\n\t\t\t\t\tresolveStart({\n\t\t\t\t\t\tchildren: [],\n\t\t\t\t\t\tend,\n\t\t\t\t\t\tname: trace.name ?? '',\n\t\t\t\t\t\tskip: false,\n\t\t\t\t\t\ttime: trace.time\n\t\t\t\t\t})\n\t\t\t\t\tbreak\n\n\t\t\t\tcase 'end':\n\t\t\t\t\tconst child = resolvers.shift()\n\t\t\t\t\tif (!child) return\n\n\t\t\t\t\tchild[1](trace.time)\n\t\t\t}\n\t\t},\n\t\tresolve() {\n\t\t\tresolveStart({\n\t\t\t\tchildren: [],\n\t\t\t\tend: new Promise((resolve) => resolve(0)),\n\t\t\t\tname: '',\n\t\t\t\tskip: true,\n\t\t\t\ttime: 0\n\t\t\t})\n\n\t\t\tfor (const [resolveStart, resolveEnd] of resolvers) {\n\t\t\t\tresolveStart({\n\t\t\t\t\tchildren: [],\n\t\t\t\t\tend: new Promise((resolve) => resolve(0)),\n\t\t\t\t\tname: '',\n\t\t\t\t\tskip: true,\n\t\t\t\t\ttime: 0\n\t\t\t\t})\n\n\t\t\t\tresolveEnd(0)\n\t\t\t}\n\n\t\t\tresolveEnd(0)\n\t\t}\n\t}\n}\n\nexport const createTraceListener = (\n\tgetReporter: () => TraceReporter,\n\ttotalListener: number,\n\thandler: TraceHandler<any, any> | HookContainer<TraceHandler<any, any>>\n) => {\n\tif (typeof handler === 'object') handler = handler.fn\n\n\treturn async function trace(trace: TraceStream) {\n\t\tif (trace.event !== 'request' || trace.type !== 'begin') return\n\n\t\tconst id = trace.id\n\t\tconst reporter = getReporter()\n\n\t\tconst request = createSignal()\n\t\tconst parse = createSignal()\n\t\tconst transform = createSignal()\n\t\tconst beforeHandle = createSignal()\n\t\tconst handle = createSignal()\n\t\tconst afterHandle = createSignal()\n\t\tconst error = createSignal()\n\t\tconst response = createSignal()\n\n\t\trequest.consume(trace)\n\n\t\tconst reducer = (event: TraceStream) => {\n\t\t\tif (event.id === id)\n\t\t\t\tswitch (event.event) {\n\t\t\t\t\tcase 'request':\n\t\t\t\t\t\trequest.consume(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'request.unit':\n\t\t\t\t\t\trequest.consumeChild(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'parse':\n\t\t\t\t\t\tparse.consume(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'parse.unit':\n\t\t\t\t\t\tparse.consumeChild(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'transform':\n\t\t\t\t\t\ttransform.consume(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'transform.unit':\n\t\t\t\t\t\ttransform.consumeChild(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'beforeHandle':\n\t\t\t\t\t\tbeforeHandle.consume(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'beforeHandle.unit':\n\t\t\t\t\t\tbeforeHandle.consumeChild(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'handle':\n\t\t\t\t\t\thandle.consume(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'afterHandle':\n\t\t\t\t\t\tafterHandle.consume(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'afterHandle.unit':\n\t\t\t\t\t\tafterHandle.consumeChild(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\terror.consume(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'error.unit':\n\t\t\t\t\t\terror.consumeChild(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'response':\n\t\t\t\t\t\tif (event.type === 'begin') {\n\t\t\t\t\t\t\trequest.resolve()\n\t\t\t\t\t\t\tparse.resolve()\n\t\t\t\t\t\t\ttransform.resolve()\n\t\t\t\t\t\t\tbeforeHandle.resolve()\n\t\t\t\t\t\t\thandle.resolve()\n\t\t\t\t\t\t\tafterHandle.resolve()\n\t\t\t\t\t\t\terror.resolve()\n\t\t\t\t\t\t} else reporter.off('event', reducer)\n\n\t\t\t\t\t\tresponse.consume(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'response.unit':\n\t\t\t\t\t\tresponse.consumeChild(event)\n\t\t\t\t\t\tbreak\n\n\t\t\t\t\tcase 'exit':\n\t\t\t\t\t\trequest.resolve()\n\t\t\t\t\t\tparse.resolve()\n\t\t\t\t\t\ttransform.resolve()\n\t\t\t\t\t\tbeforeHandle.resolve()\n\t\t\t\t\t\thandle.resolve()\n\t\t\t\t\t\tafterHandle.resolve()\n\t\t\t\t\t\terror.resolve()\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t}\n\n\t\treporter.on('event', reducer)\n\n\t\tawait handler({\n\t\t\tid,\n\t\t\t// @ts-ignore\n\t\t\tcontext: trace.ctx,\n\t\t\t// @ts-ignore\n\t\t\tset: trace.ctx?.set,\n\t\t\t// @ts-ignore\n\t\t\tstore: trace.ctx?.store,\n\t\t\ttime: trace.time,\n\t\t\trequest: request.signal as any,\n\t\t\tparse: parse.signal as any,\n\t\t\ttransform: transform.signal as any,\n\t\t\tbeforeHandle: beforeHandle.signal as any,\n\t\t\thandle: handle.signal as any,\n\t\t\tafterHandle: afterHandle.signal as any,\n\t\t\terror: error.signal,\n\t\t\tresponse: response.signal as any\n\t\t})\n\n\t\treporter.emit(`res${id}.${totalListener}`, undefined)\n\t}\n}\n",
14
14
  "/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable no-constant-condition */\nimport type { Handler, LifeCycleStore, TraceHandler } from './types'\n\nexport namespace Sucrose {\n\texport interface Inference {\n\t\tqueries: string[]\n\t\tunknownQueries: boolean\n\t\tquery: boolean\n\t\theaders: boolean\n\t\tbody: boolean\n\t\tcookie: boolean\n\t\tset: boolean\n\t}\n\n\texport interface LifeCycle extends Partial<LifeCycleStore> {\n\t\thandler?: Handler\n\t}\n\n\texport interface TraceInference {\n\t\trequest: boolean\n\t\tparse: boolean\n\t\ttransform: boolean\n\t\thandle: boolean\n\t\tbeforeHandle: boolean\n\t\tafterHandle: boolean\n\t\terror: boolean\n\t\tcontext: boolean\n\t\tstore: boolean\n\t\tset: boolean\n\t}\n}\n\n/**\n * Separate stringified function body and paramter\n *\n * @example\n * ```typescript\n * separateFunction('async ({ hello }) => { return hello }') // => ['({ hello })', '{ return hello }']\n * ```\n */\nexport const separateFunction = (\n\tcode: string\n): [string, string, { isArrowReturn: boolean }] => {\n\tif (code.startsWith('async')) code = code.slice(6)\n\n\tlet index = -1\n\n\t// Starts with '(', is an arrow function\n\tif (code.charCodeAt(0) === 40) {\n\t\t// ? arrow function\n\t\tindex = code.indexOf(') => {\\n')\n\t\tif (index !== -1)\n\t\t\treturn [\n\t\t\t\tcode.slice(1, index),\n\t\t\t\tcode.slice(index + 5),\n\t\t\t\t{ isArrowReturn: false }\n\t\t\t]\n\n\t\t// ? Arrow return\n\t\tindex = code.indexOf(') => ')\n\t\tif (index !== -1)\n\t\t\treturn [\n\t\t\t\tcode.slice(1, index),\n\t\t\t\tcode.slice(index + 5),\n\t\t\t\t{ isArrowReturn: true }\n\t\t\t]\n\t}\n\n\t// Using function keyword\n\tif (code.startsWith('function')) {\n\t\tindex = code.indexOf('(')\n\t\tconst end = code.indexOf(')')\n\n\t\treturn [\n\t\t\tcode.slice(index + 1, end),\n\t\t\tcode.slice(end + 2),\n\t\t\t{\n\t\t\t\tisArrowReturn: false\n\t\t\t}\n\t\t]\n\t}\n\n\t// Probably Declare as method\n\tconst start = code.indexOf('(')\n\n\tif (start !== -1) {\n\t\tconst sep = code.indexOf('\\n', 2)\n\t\tconst parameter = code.slice(0, sep)\n\t\tconst end = parameter.lastIndexOf(')') + 1\n\n\t\tconst body = code.slice(sep + 1)\n\n\t\treturn [\n\t\t\tparameter.slice(start, end),\n\t\t\t'{' + body,\n\t\t\t{\n\t\t\t\tisArrowReturn: false\n\t\t\t}\n\t\t]\n\t}\n\n\t// Unknown case\n\tconst x = code.split('\\n', 2)\n\n\treturn [x[0], x[1], { isArrowReturn: false }]\n}\n\n/**\n * Get range between bracket pair\n *\n * @example\n * ```typescript\n * bracketPairRange('hello: { world: { a } }, elysia') // [6, 20]\n * ```\n */\nexport const bracketPairRange = (parameter: string): [number, number] => {\n\tconst start = parameter.indexOf('{')\n\tif (start === -1) return [-1, 0]\n\n\tlet end = start + 1\n\tlet deep = 1\n\n\tfor (; end < parameter.length; end++) {\n\t\tconst char = parameter.charCodeAt(end)\n\n\t\t// Open bracket\n\t\tif (char === 123) deep++\n\t\t// Close bracket\n\t\telse if (char === 125) deep--\n\n\t\tif (deep === 0) break\n\t}\n\n\tif (deep !== 0) return [0, parameter.length]\n\n\treturn [start, end + 1]\n}\n\n/**\n * Similar to `bracketPairRange` but in reverse order\n * Get range between bracket pair from end to beginning\n *\n * @example\n * ```typescript\n * bracketPairRange('hello: { world: { a } }, elysia') // [6, 20]\n * ```\n */\nexport const bracketPairRangeReverse = (\n\tparameter: string\n): [number, number] => {\n\tconst end = parameter.lastIndexOf('}')\n\tif (end === -1) return [-1, 0]\n\n\tlet start = end - 1\n\tlet deep = 1\n\n\tfor (; start >= 0; start--) {\n\t\tconst char = parameter.charCodeAt(start)\n\n\t\t// Open bracket\n\t\tif (char === 125) deep++\n\t\t// Close bracket\n\t\telse if (char === 123) deep--\n\n\t\tif (deep === 0) break\n\t}\n\n\tif (deep !== 0) return [-1, 0]\n\n\treturn [start, end + 1]\n}\n\n/**\n * Retrieve only root paramters of a function\n *\n * @example\n * ```typescript\n * retrieveRootParameters('({ hello: { world: { a } }, elysia })') // => 'hello elysia'\n * ```\n */\nexport const retrieveRootParamters = (parameter: string) => {\n\t// Remove () and {}\n\tif (parameter.charCodeAt(0) === 40) parameter = parameter.slice(1, -1)\n\t// Using 2 because of the space\n\tif (parameter.charCodeAt(0) === 123) parameter = parameter.slice(2, -2)\n\n\twhile (true) {\n\t\tconst [start, end] = bracketPairRange(parameter)\n\t\tif (start === -1) break\n\n\t\tparameter = parameter.slice(0, start - 2) + parameter.slice(end + 1)\n\t}\n\n\treturn parameter.replace(/:/g, '').trim()\n}\n\n/**\n * Find inference from parameter\n *\n * @param parameter stringified parameter\n */\nexport const findParameterReference = (\n\tparameter: string,\n\tinference: Sucrose.Inference\n) => {\n\tconst root = retrieveRootParamters(parameter)\n\n\tif (!inference.query && root.includes('query')) inference.query = true\n\tif (!inference.headers && root.includes('headers')) inference.headers = true\n\tif (!inference.body && root.includes('body')) inference.body = true\n\tif (!inference.cookie && root.includes('cookie')) inference.cookie = true\n\tif (!inference.set && root.includes('set')) inference.set = true\n\n\treturn root\n}\n\n/**\n * Find inference from parameter\n *\n * @param parameter stringified parameter\n */\nexport const findTraceParameterReference = (\n\tparameter: string,\n\tinference: Sucrose.TraceInference\n) => {\n\tconst root = retrieveRootParamters(parameter)\n\n\tif (!inference.request && root.includes('request')) inference.request = true\n\tif (!inference.parse && root.includes('parse')) inference.parse = true\n\tif (!inference.transform && root.includes('transform'))\n\t\tinference.transform = true\n\tif (!inference.handle && root.includes('handle')) inference.handle = true\n\tif (!inference.beforeHandle && root.includes('beforeHandle'))\n\t\tinference.beforeHandle = true\n\tif (!inference.afterHandle && root.includes('afterHandle'))\n\t\tinference.afterHandle = true\n\tif (!inference.error && root.includes('error')) inference.error = true\n\tif (!inference.context && root.includes('context')) inference.context = true\n\tif (!inference.store && root.includes('store')) inference.store = true\n\tif (!inference.set && root.includes('set')) inference.set = true\n\n\treturn root\n}\n\nconst findEndIndex = (\n\ttype: string,\n\tcontent: string,\n\tindex?: number | undefined\n) => {\n\tconst newLineIndex = content.indexOf(type + '\\n', index)\n\tconst newTabIndex = content.indexOf(type + '\\t', index)\n\tconst commaIndex = content.indexOf(type + ',', index)\n\tconst semicolonIndex = content.indexOf(type + ';', index)\n\tconst emptyIndex = content.indexOf(type + ' ', index)\n\n\t// Pick the smallest index that is not -1 or 0\n\treturn (\n\t\t[newLineIndex, newTabIndex, commaIndex, semicolonIndex, emptyIndex]\n\t\t\t.filter((i) => i > 0)\n\t\t\t.sort((a, b) => a - b)[0] || -1\n\t)\n}\n\nconst findEndQueryBracketIndex = (\n\ttype: string,\n\tcontent: string,\n\tindex?: number | undefined\n) => {\n\tconst bracketEndIndex = content.indexOf(type + ']', index)\n\tconst singleQuoteIndex = content.indexOf(type + \"'\", index)\n\tconst doubleQuoteIndex = content.indexOf(type + '\"', index)\n\n\t// Pick the smallest index that is not -1 or 0\n\treturn (\n\t\t[bracketEndIndex, singleQuoteIndex, doubleQuoteIndex]\n\t\t\t.filter((i) => i > 0)\n\t\t\t.sort((a, b) => a - b)[0] || -1\n\t)\n}\n\n/**\n * Find alias of variable from function body\n *\n * @example\n * ```typescript\n * findAlias('body', '{ const a = body, b = body }') // => ['a', 'b']\n * ```\n */\nexport const findAlias = (type: string, body: string, depth = 0) => {\n\tif (depth > 5) return []\n\n\tconst aliases: string[] = []\n\n\tlet content = body\n\n\twhile (true) {\n\t\tlet index = findEndIndex(' = ' + type, content)\n\n\t\tif (index === -1) {\n\t\t\t/**\n\t\t\t * Check if pattern is at the end of the string\n\t\t\t *\n\t\t\t * @example\n\t\t\t * ```typescript\n\t\t\t * 'const a = body' // true\n\t\t\t * ```\n\t\t\t **/\n\t\t\tconst lastIndex = content.indexOf(' = ' + type)\n\n\t\t\tif (lastIndex + 3 + type.length !== content.length) break\n\n\t\t\tindex = lastIndex\n\t\t}\n\n\t\tconst part = content.slice(0, index)\n\t\t/**\n\t\t * aliased variable last character\n\t\t *\n\t\t * @example\n\t\t * ```typescript\n\t\t * const { hello } = body // } is the last character\n\t\t * ```\n\t\t **/\n\t\tlet variable = part.slice(part.lastIndexOf(' ') + 1)\n\n\t\t// Variable is using object destructuring, find the bracket pair\n\t\tif (variable === '}') {\n\t\t\tconst [start, end] = bracketPairRangeReverse(part)\n\n\t\t\taliases.push(content.slice(start, end))\n\n\t\t\tcontent = content.slice(index + 3 + type.length)\n\n\t\t\tcontinue\n\t\t}\n\n\t\t// Remove comma\n\t\twhile (variable.charCodeAt(0) === 44) variable = variable.slice(1)\n\t\twhile (variable.charCodeAt(0) === 9) variable = variable.slice(1)\n\n\t\taliases.push(variable)\n\t\tcontent = content.slice(index + 3 + type.length)\n\t}\n\n\tfor (const alias of aliases) {\n\t\tif (alias.charCodeAt(0) === 123) continue\n\n\t\tconst deepAlias = findAlias(alias, body)\n\t\tif (deepAlias.length > 0) aliases.push(...deepAlias)\n\t}\n\n\treturn aliases\n}\n\n// ? This is normalized to dot notation in Bun\n// const accessor = <T extends string, P extends string>(parent: T, prop: P) =>\n// \t[\n// \t\tparent + '.' + prop,\n// \t\tparent + '[\"' + prop + '\"]',\n// \t\tparent + \"['\" + prop + \"']\"\n// \t] as const\n\nexport const extractMainParameter = (parameter: string) => {\n\tif (!parameter) return\n\n\tconst hasComma = parameter.includes(',')\n\tif (!hasComma) {\n\t\t// This happens when spread operator is used as the only parameter\n\t\tif (parameter.includes('...'))\n\t\t\treturn parameter.slice(parameter.indexOf('...') + 3)\n\n\t\treturn parameter\n\t}\n\n\tconst spreadIndex = parameter.indexOf('...')\n\tif (spreadIndex === -1) return\n\n\t// Spread parameter is always the last parameter, no need for further checking\n\treturn parameter.slice(spreadIndex + 3).trimEnd()\n}\n\n/**\n * Analyze if context is mentioned in body\n */\nexport const inferBodyReference = (\n\tcode: string,\n\taliases: string[],\n\tinference: Sucrose.Inference,\n) => {\n\tconst access = (type: string, alias: string) =>\n\t\tcode.includes(alias + '.' + type) ||\n\t\tcode.includes(alias + '[\"' + type + '\"]') ||\n\t\tcode.includes(alias + \"['\" + type + \"']\")\n\n\tfor (let alias of aliases) {\n\t\tif (!alias) continue\n\n\t\t// Scan object destructured property\n\t\tif (alias.charCodeAt(0) === 123) {\n\t\t\talias = retrieveRootParamters(alias)\n\n\t\t\tif (!inference.query && alias.includes('query'))\n\t\t\t\tinference.query = true\n\n\t\t\tif (!inference.headers && alias.includes('headers'))\n\t\t\t\tinference.headers = true\n\n\t\t\tif (!inference.body && alias.includes('body')) inference.body = true\n\n\t\t\tif (!inference.cookie && alias.includes('cookie'))\n\t\t\t\tinference.cookie = true\n\n\t\t\tif (!inference.set && alias.includes('set')) inference.set = true\n\n\t\t\tcontinue\n\t\t}\n\n\t\t// ! Function is passed to another function, assume as all is accessed\n\t\tif (code.includes('(' + alias + ')')) {\n\t\t\tinference.query = true\n\t\t\tinference.headers = true\n\t\t\tinference.body = true\n\t\t\tinference.cookie = true\n\t\t\tinference.set = true\n\t\t\tinference.queries = []\n\t\t\tinference.unknownQueries = true\n\n\t\t\tbreak\n\t\t}\n\n\t\tif (!inference.query && access('query', alias)) inference.query = true\n\n\t\tif (\n\t\t\tcode.includes('return ' + alias) ||\n\t\t\tcode.includes('return ' + alias + '.query')\n\t\t) {\n\t\t\tinference.query = true\n\t\t\tinference.unknownQueries = true\n\t\t\tinference.queries = []\n\t\t}\n\n\t\tif (!inference.unknownQueries && inference.query) {\n\t\t\tlet keyword = alias + '.'\n\n\t\t\t// ? It's unlikely that user will use separate variable between c.query and query\n\t\t\tif (code.includes(keyword + 'query')) keyword = alias + '.query'\n\n\t\t\twhile (true) {\n\t\t\t\tlet start = code.indexOf(keyword)\n\n\t\t\t\t// ? This is normalized to dot notation in Bun\n\t\t\t\t// if (start === -1) {\n\t\t\t\t// \tisBracket = true\n\t\t\t\t// \tstart = code.indexOf(alias + '[\"')\n\t\t\t\t// }\n\n\t\t\t\t// if (start === -1) {\n\t\t\t\t// \tisBracket = true\n\t\t\t\t// \tstart = code.indexOf(alias + \"['\")\n\t\t\t\t// }\n\n\t\t\t\tif (start === -1 && code.indexOf(alias + '[') !== -1) {\n\t\t\t\t\t// ! Query is accessed using dynamic key, skip static parsing\n\t\t\t\t\tinference.queries = []\n\t\t\t\t\tinference.unknownQueries = true\n\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tif (start !== -1) {\n\t\t\t\t\tlet end: number | undefined = findEndIndex(\n\t\t\t\t\t\t'',\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tstart + keyword.length + 1\n\t\t\t\t\t)\n\n\t\t\t\t\t// ? Do not remove, might need to use on other runtime\n\t\t\t\t\t// If need, replace above code with this one\n\t\t\t\t\t// let end: number | undefined = isBracket\n\t\t\t\t\t// \t? findEndQueryBracketIndex(\n\t\t\t\t\t// \t\t\t'',\n\t\t\t\t\t// \t\t\tcode,\n\t\t\t\t\t// \t\t\tstart + keyword.length + 1\n\t\t\t\t\t// \t )\n\t\t\t\t\t// \t: findEndIndex('', code, start + keyword.length + 1)\n\n\t\t\t\t\tif (end === -1) end = undefined\n\n\t\t\t\t\tconst index = start + alias.length + 1\n\t\t\t\t\tcode = code.slice(start + alias.length + 1)\n\t\t\t\t\tlet query = code.slice(0, end ? end - index : end).trimEnd()\n\n\t\t\t\t\t// Remove nested dot\n\t\t\t\t\twhile (start !== -1) {\n\t\t\t\t\t\tstart = query.indexOf('.')\n\n\t\t\t\t\t\tif (start !== -1) query = query.slice(start + 1)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove semi-colon\n\t\t\t\t\tif (query.charCodeAt(query.length - 1) === 59)\n\t\t\t\t\t\tquery = query.slice(0, -1)\n\n\t\t\t\t\t// Remove comma\n\t\t\t\t\tif (query.charCodeAt(query.length - 1) === 44)\n\t\t\t\t\t\tquery = query.slice(0, -1)\n\n\t\t\t\t\t// Remove closing square bracket\n\t\t\t\t\tif (query.charCodeAt(query.length - 1) === 93)\n\t\t\t\t\t\tquery = query.slice(0, -1)\n\n\t\t\t\t\t// Remove closing bracket\n\t\t\t\t\tif (query.charCodeAt(query.length - 1) === 41)\n\t\t\t\t\t\tquery = query.slice(0, -1)\n\n\t\t\t\t\t// ? Do not remove, might need to use on other runtime\n\t\t\t\t\t// if (isBracket) query = query.replaceAll(/(\"|')/g, '')\n\n\t\t\t\t\tif (query && !inference.queries.includes(query)) {\n\t\t\t\t\t\tinference.queries.push(query)\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tif (!inference.headers && access('headers', alias))\n\t\t\tinference.headers = true\n\n\t\tif (!inference.body && access('body', alias)) inference.body = true\n\n\t\tif (!inference.cookie && access('cookie', alias))\n\t\t\tinference.cookie = true\n\n\t\tif (!inference.set && access('set', alias)) inference.set = true\n\n\t\tif (\n\t\t\tinference.query &&\n\t\t\tinference.headers &&\n\t\t\tinference.body &&\n\t\t\tinference.cookie &&\n\t\t\tinference.set\n\t\t)\n\t\t\tbreak\n\t}\n\n\treturn aliases\n}\n\nexport const removeDefaultParameter = (parameter: string) => {\n\twhile (true) {\n\t\tconst index = parameter.indexOf('=')\n\t\tif (index === -1) break\n\n\t\tconst commaIndex = parameter.indexOf(',', index)\n\t\tconst bracketIndex = parameter.indexOf('}', index)\n\n\t\tconst end =\n\t\t\t[commaIndex, bracketIndex]\n\t\t\t\t.filter((i) => i > 0)\n\t\t\t\t.sort((a, b) => a - b)[0] || -1\n\n\t\tif (end === -1) {\n\t\t\tparameter = parameter.slice(0, index)\n\n\t\t\tbreak\n\t\t}\n\n\t\tparameter = parameter.slice(0, index) + parameter.slice(end)\n\t}\n\n\treturn parameter\n\t\t.split(',')\n\t\t.map((i) => i.trim())\n\t\t.join(', ')\n}\n\nexport const validateInferencedQueries = (queries: string[]) => {\n\tfor (const query of queries) {\n\t\tif (query.charCodeAt(0) === 123) return false\n\t\tif (query.indexOf(\"'\") !== -1) return false\n\t\tif (query.indexOf('\"') !== -1) return false\n\t\tif (query.indexOf('\\n') !== -1) return false\n\t\tif (query.indexOf('\\t') !== -1) return false\n\t\tif (query.indexOf('(') !== -1) return false\n\t}\n\n\treturn true\n}\n\n/**\n * Analyze if context is mentioned in body\n */\nexport const inferTraceBodyReference = (\n\tcode: string,\n\taliases: string[],\n\tinference: Sucrose.TraceInference\n) => {\n\tconst access = (type: string, alias: string) =>\n\t\tcode.includes(type + '.' + alias) ||\n\t\tcode.includes(type + '[\"' + alias + '\"]') ||\n\t\tcode.includes(type + \"['\" + alias + \"']\")\n\n\tfor (let alias of aliases) {\n\t\tif (alias.charCodeAt(0) === 123) {\n\t\t\talias = retrieveRootParamters(alias)\n\n\t\t\tif (!inference.request && alias.includes('request'))\n\t\t\t\tinference.request = true\n\n\t\t\tif (!inference.parse && alias.includes('parse'))\n\t\t\t\tinference.parse = true\n\n\t\t\tif (!inference.transform && alias.includes('transform'))\n\t\t\t\tinference.transform = true\n\n\t\t\tif (!inference.handle && alias.includes('handle'))\n\t\t\t\tinference.handle = true\n\n\t\t\tif (!inference.beforeHandle && alias.includes('beforeHandle'))\n\t\t\t\tinference.beforeHandle = true\n\n\t\t\tif (!inference.afterHandle && alias.includes('afterHandle'))\n\t\t\t\tinference.afterHandle = true\n\n\t\t\tif (!inference.error && alias.includes('error'))\n\t\t\t\tinference.error = true\n\n\t\t\tif (!inference.context && alias.includes('context'))\n\t\t\t\tinference.context = true\n\n\t\t\tif (!inference.store && alias.includes('store'))\n\t\t\t\tinference.store = true\n\n\t\t\tif (!inference.set && alias.includes('set')) inference.set = true\n\n\t\t\tcontinue\n\t\t}\n\n\t\t// ! Function is passed to another function, assume as all is accessed\n\t\tif (code.includes('(' + alias + ')')) {\n\t\t\tinference.request = true\n\t\t\tinference.parse = true\n\t\t\tinference.transform = true\n\t\t\tinference.handle = true\n\t\t\tinference.beforeHandle = true\n\t\t\tinference.afterHandle = true\n\t\t\tinference.error = true\n\t\t\tinference.context = true\n\t\t\tinference.store = true\n\t\t\tinference.set = true\n\n\t\t\tbreak\n\t\t}\n\n\t\tif (!inference.request && access('request', alias))\n\t\t\tinference.request = true\n\n\t\tif (!inference.parse && access('parse', alias)) inference.parse = true\n\n\t\tif (!inference.transform && access('transform', alias))\n\t\t\tinference.transform = true\n\n\t\tif (!inference.handle && access('handle', alias))\n\t\t\tinference.handle = true\n\n\t\tif (!inference.beforeHandle && access('beforeHandle', alias))\n\t\t\tinference.beforeHandle = true\n\n\t\tif (!inference.afterHandle && access('afterHandle', alias))\n\t\t\tinference.afterHandle = true\n\n\t\tif (!inference.error && access('error', alias)) inference.error = true\n\n\t\tif (!inference.context && access('context', alias))\n\t\t\tinference.context = true\n\n\t\tif (!inference.store && access('store', alias)) inference.store = true\n\n\t\tif (!inference.set && access('set', alias)) inference.set = true\n\n\t\tif (\n\t\t\tinference.request &&\n\t\t\tinference.parse &&\n\t\t\tinference.transform &&\n\t\t\tinference.handle &&\n\t\t\tinference.beforeHandle &&\n\t\t\tinference.afterHandle &&\n\t\t\tinference.error &&\n\t\t\tinference.context &&\n\t\t\tinference.store &&\n\t\t\tinference.set\n\t\t)\n\t\t\tbreak\n\t}\n\n\treturn aliases\n}\n\nexport const sucrose = (\n\tlifeCycle: Sucrose.LifeCycle,\n\tinference: Sucrose.Inference = {\n\t\tqueries: [],\n\t\tquery: false,\n\t\theaders: false,\n\t\tbody: false,\n\t\tcookie: false,\n\t\tset: false,\n\t\tunknownQueries: false\n\t}\n): Sucrose.Inference => {\n\tconst events = []\n\n\tif (lifeCycle.handler && typeof lifeCycle.handler === 'function')\n\t\tevents.push(lifeCycle.handler)\n\n\tif (lifeCycle.beforeHandle?.length) events.push(...lifeCycle.beforeHandle)\n\tif (lifeCycle.parse?.length) events.push(...lifeCycle.parse)\n\tif (lifeCycle.error?.length) events.push(...lifeCycle.error)\n\tif (lifeCycle.transform?.length) events.push(...lifeCycle.transform)\n\tif (lifeCycle.afterHandle?.length) events.push(...lifeCycle.afterHandle)\n\tif (lifeCycle.mapResponse?.length) events.push(...lifeCycle.mapResponse)\n\tif (lifeCycle.request?.length) events.push(...lifeCycle.request)\n\tif (lifeCycle.onResponse?.length) events.push(...lifeCycle.onResponse)\n\n\tfor (const e of events) {\n\t\tif (!e) continue\n\n\t\tconst event = 'fn' in e ? e.fn : e\n\n\t\tconst [parameter, body, { isArrowReturn }] = separateFunction(\n\t\t\tevent.toString()\n\t\t)\n\n\t\tconst rootParameters = findParameterReference(parameter, inference)\n\t\tconst mainParameter = extractMainParameter(rootParameters)\n\n\t\tif (\n\t\t\tisArrowReturn &&\n\t\t\t(body === 'query' ||\n\t\t\t\t(rootParameters && body.startsWith(rootParameters + '.query')))\n\t\t) {\n\t\t\tinference.query = true\n\t\t\tinference.unknownQueries = true\n\t\t\tinference.queries = []\n\t\t}\n\n\t\tif (mainParameter) {\n\t\t\tconst aliases = findAlias(mainParameter, body)\n\t\t\taliases.splice(0, -1, mainParameter)\n\n\t\t\tinferBodyReference(body, aliases, inference)\n\t\t}\n\n\t\tconst context = rootParameters || mainParameter\n\t\tif (context && body.includes('return ' + context + '.query')) {\n\t\t\tinference.query = true\n\t\t\tinference.unknownQueries = true\n\t\t\tinference.queries = []\n\t\t}\n\n\t\tif (inference.query) {\n\t\t\tinferBodyReference(body, ['query'], inference)\n\n\t\t\tconst queryIndex = parameter.indexOf('query: {')\n\n\t\t\tif (queryIndex !== -1) {\n\t\t\t\tconst part = parameter.slice(queryIndex + 7)\n\t\t\t\tconst [start, end] = bracketPairRange(part)\n\n\t\t\t\tconst queryBracket = removeDefaultParameter(\n\t\t\t\t\tpart.slice(start, end)\n\t\t\t\t)\n\n\t\t\t\tfor (let query of queryBracket.slice(1, -1).split(',')) {\n\t\t\t\t\tconst index = query.indexOf(':')\n\n\t\t\t\t\t// Remove variable name casting: { a: b } should be b\n\t\t\t\t\tif (index !== -1) query = query.slice(0, index)\n\n\t\t\t\t\tquery = query.trim()\n\n\t\t\t\t\tif (query && !inference.queries.includes(query))\n\t\t\t\t\t\tinference.queries.push(query.trim())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tinference.query &&\n\t\t\tinference.headers &&\n\t\t\tinference.body &&\n\t\t\tinference.cookie &&\n\t\t\tinference.set\n\t\t)\n\t\t\tbreak\n\t}\n\n\tif (!validateInferencedQueries(inference.queries)) {\n\t\tinference.unknownQueries = true\n\t\tinference.queries = []\n\t}\n\n\treturn inference\n}\n\n/**\n * Analyze if context is mentioned in body in a trace\n */\nexport const sucroseTrace = (\n\ttraces: TraceHandler[],\n\tinference: Sucrose.TraceInference = {\n\t\trequest: false,\n\t\tparse: false,\n\t\ttransform: false,\n\t\thandle: false,\n\t\tbeforeHandle: false,\n\t\tafterHandle: false,\n\t\terror: false,\n\t\tcontext: false,\n\t\tstore: false,\n\t\tset: false\n\t}\n) => {\n\tfor (const handler of traces) {\n\t\tconst [parameter, body] = separateFunction(handler.toString())\n\n\t\tconst rootParameters = findTraceParameterReference(parameter, inference)\n\t\tconst mainParameter = extractMainParameter(rootParameters)\n\n\t\tif (mainParameter) {\n\t\t\tconst aliases = findAlias(mainParameter, body)\n\t\t\taliases.splice(0, -1, mainParameter)\n\n\t\t\tinferTraceBodyReference(body, aliases, inference)\n\n\t\t\tcontinue\n\t\t}\n\n\t\tif (\n\t\t\tinference.request &&\n\t\t\tinference.parse &&\n\t\t\tinference.transform &&\n\t\t\tinference.handle &&\n\t\t\tinference.beforeHandle &&\n\t\t\tinference.afterHandle &&\n\t\t\tinference.error &&\n\t\t\tinference.context &&\n\t\t\tinference.store &&\n\t\t\tinference.set\n\t\t)\n\t\t\tbreak\n\t}\n\n\treturn inference\n}\n",
15
15
  "import type { TSchema } from '@sinclair/typebox'\nimport { Value } from '@sinclair/typebox/value'\nimport type { TypeCheck } from '@sinclair/typebox/compiler'\n\nimport { StatusMap, InvertedStatusMap } from './utils'\n\n// ? Cloudflare worker support\nconst env =\n\ttypeof Bun !== 'undefined'\n\t\t? Bun.env\n\t\t: typeof process !== 'undefined'\n\t\t? process?.env\n\t\t: undefined\n\nexport const ERROR_CODE = Symbol('ElysiaErrorCode')\nexport const ELYSIA_RESPONSE = Symbol('ElysiaResponse')\nexport type ELYSIA_RESPONSE = typeof ELYSIA_RESPONSE\n\nexport const isProduction = (env?.NODE_ENV ?? env?.ENV) === 'production'\n\nexport type ElysiaErrors =\n\t| InternalServerError\n\t| NotFoundError\n\t| ParseError\n\t| ValidationError\n\t| InvalidCookieSignature\n\nexport const error = <\n\tconst Code extends number | keyof StatusMap,\n\tconst T = Code extends keyof InvertedStatusMap\n\t\t? InvertedStatusMap[Code]\n\t\t: Code,\n\tconst Status extends Code extends keyof StatusMap\n\t\t? StatusMap[Code]\n\t\t: Code = Code extends keyof StatusMap ? StatusMap[Code] : Code\n>(\n\tcode: Code,\n\tresponse?: T\n): {\n\t[ELYSIA_RESPONSE]: Status\n\tresponse: T\n\t_type: {\n\t\t[ERROR_CODE in Status]: T\n\t}\n} =>\n\t({\n\t\t// @ts-expect-error\n\t\t[ELYSIA_RESPONSE]: StatusMap[code] ?? code,\n\t\tresponse:\n\t\t\tresponse ??\n\t\t\t(code in InvertedStatusMap\n\t\t\t\t? // @ts-expect-error Always correct\n\t\t\t\t InvertedStatusMap[code]\n\t\t\t\t: code),\n\t\t_type: undefined as any\n\t} as const)\n\nexport class InternalServerError extends Error {\n\tcode = 'INTERNAL_SERVER_ERROR'\n\tstatus = 500\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'INTERNAL_SERVER_ERROR')\n\t}\n}\n\nexport class NotFoundError extends Error {\n\tcode = 'NOT_FOUND'\n\tstatus = 404\n\n\tconstructor(message?: string) {\n\t\tsuper(message ?? 'NOT_FOUND')\n\t}\n}\n\nexport class ParseError extends Error {\n\tcode = 'PARSE'\n\tstatus = 400\n\n\tconstructor(message?: string, public body?: unknown) {\n\t\tsuper(message ?? 'PARSE')\n\t}\n}\n\nexport class InvalidCookieSignature extends Error {\n\tcode = 'INVALID_COOKIE_SIGNATURE'\n\tstatus = 400\n\n\tconstructor(public key: string, message?: string) {\n\t\tsuper(message ?? `\"${key}\" has invalid cookie signature`)\n\t}\n}\n\nexport class ValidationError extends Error {\n\tcode = 'VALIDATION'\n\tstatus = 422\n\n\tconstructor(\n\t\tpublic type: string,\n\t\tpublic validator: TSchema | TypeCheck<any>,\n\t\tpublic value: unknown\n\t) {\n\t\t// @ts-expect-error\n\t\tif (typeof value === 'object' && ELYSIA_RESPONSE in value)\n\t\t\t// @ts-expect-error\n\t\t\tvalue = value.response\n\n\t\tconst error = isProduction\n\t\t\t? undefined\n\t\t\t: 'Errors' in validator\n\t\t\t? validator.Errors(value).First()\n\t\t\t: Value.Errors(validator, value).First()\n\n\t\tconst customError =\n\t\t\terror?.schema.error !== undefined\n\t\t\t\t? typeof error.schema.error === 'function'\n\t\t\t\t\t? error.schema.error({\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\tvalidator,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tget errors() {\n\t\t\t\t\t\t\t\treturn [...validator.Errors(value)]\n\t\t\t\t\t\t\t}\n\t\t\t\t\t })\n\t\t\t\t\t: error.schema.error\n\t\t\t\t: undefined\n\n\t\tconst accessor = error?.path || 'root'\n\t\tlet message = ''\n\n\t\tif (customError !== undefined) {\n\t\t\tmessage =\n\t\t\t\ttypeof customError === 'object'\n\t\t\t\t\t? JSON.stringify(customError)\n\t\t\t\t\t: customError + ''\n\t\t} else if (isProduction) {\n\t\t\tmessage = JSON.stringify({\n\t\t\t\ttype: 'validation',\n\t\t\t\ton: type,\n\t\t\t\tmessage: error?.message,\n\t\t\t\tfound: value\n\t\t\t})\n\t\t} else {\n\t\t\t// @ts-ignore private field\n\t\t\tconst schema = validator?.schema ?? validator\n\t\t\tconst errors =\n\t\t\t\t'Errors' in validator\n\t\t\t\t\t? [...validator.Errors(value)]\n\t\t\t\t\t: [...Value.Errors(validator, value)]\n\n\t\t\tlet expected\n\n\t\t\ttry {\n\t\t\t\texpected = Value.Create(schema)\n\t\t\t} catch (error) {\n\t\t\t\texpected = {\n\t\t\t\t\ttype: 'Could not create expected value',\n\t\t\t\t\t// @ts-expect-error\n\t\t\t\t\tmessage: error?.message,\n\t\t\t\t\terror\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tmessage = JSON.stringify(\n\t\t\t\t{\n\t\t\t\t\ttype: 'validation',\n\t\t\t\t\ton: type,\n\t\t\t\t\tproperty: accessor,\n\t\t\t\t\tmessage: error?.message,\n\t\t\t\t\texpected,\n\t\t\t\t\tfound: value,\n\t\t\t\t\terrors\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2\n\t\t\t)\n\t\t}\n\n\t\tsuper(message)\n\n\t\tObject.setPrototypeOf(this, ValidationError.prototype)\n\t}\n\n\tget all() {\n\t\treturn [...this.validator.Errors(this.value)]\n\t}\n\n\tstatic simplifyModel(validator: TSchema | TypeCheck<any>) {\n\t\t// @ts-ignore\n\t\tconst model = 'schema' in validator ? validator.schema : validator\n\n\t\ttry {\n\t\t\treturn Value.Create(model)\n\t\t} catch {\n\t\t\treturn model\n\t\t}\n\t}\n\n\tget model() {\n\t\treturn ValidationError.simplifyModel(this.validator)\n\t}\n\n\ttoResponse(headers?: Record<string, any>) {\n\t\treturn new Response(this.message, {\n\t\t\tstatus: 400,\n\t\t\theaders: {\n\t\t\t\t...headers,\n\t\t\t\t'content-type': 'application/json'\n\t\t\t}\n\t\t})\n\t}\n}\n",
16
- "import { Kind, TSchema } from '@sinclair/typebox'\nimport { Value } from '@sinclair/typebox/value'\nimport { TypeCheck, TypeCompiler } from '@sinclair/typebox/compiler'\n\nimport { t } from '.'\nimport { isNotEmpty } from './handler'\n\nimport type {\n\tLifeCycleStore,\n\tLocalHook,\n\tMaybeArray,\n\tInputSchema,\n\tBaseMacro,\n\tLifeCycleType,\n\tHookContainer,\n\tGracefulHandler,\n\tPreHandler,\n\tBodyHandler,\n\tTransformHandler,\n\tOptionalHandler,\n\tAfterHandler,\n\tMapResponse,\n\tVoidHandler,\n\tErrorHandler,\n\tReplace\n} from './types'\nimport type { CookieOptions } from './cookies'\nimport { Sucrose } from './sucrose'\nimport { BunFile } from 'bun'\n\nexport const replaceUrlPath = (url: string, pathname: string) => {\n\tconst urlObject = new URL(url)\n\turlObject.pathname = pathname\n\treturn urlObject.toString()\n}\n\nconst isClass = (v: Object) =>\n\t(typeof v === 'function' && /^\\s*class\\s+/.test(v.toString())) ||\n\t// Handle import * as Sentry from '@sentry/bun'\n\t// This also handle [object Date], [object Array]\n\t// and FFI value like [object Prisma]\n\tv.toString().startsWith('[object ') ||\n\t// If object prototype is not pure, then probably a class-like object\n\tisNotEmpty(Object.getPrototypeOf(v))\n\nconst isObject = (item: any): item is Object =>\n\titem && typeof item === 'object' && !Array.isArray(item)\n\nexport const mergeDeep = <\n\tA extends Record<string, any>,\n\tB extends Record<string, any>\n>(\n\ttarget: A,\n\tsource: B,\n\t{\n\t\tskipKeys\n\t}: {\n\t\tskipKeys?: string[]\n\t} = {}\n): A & B => {\n\tif (isObject(target) && isObject(source))\n\t\tfor (const [key, value] of Object.entries(source)) {\n\t\t\tif (skipKeys?.includes(key)) continue\n\n\t\t\tif (!isObject(value) || !(key in target) || isClass(value)) {\n\t\t\t\ttarget[key as keyof typeof target] = value\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\ttarget[key as keyof typeof target] = mergeDeep(\n\t\t\t\t(target as any)[key] as any,\n\t\t\t\tvalue\n\t\t\t)\n\t\t}\n\n\treturn target as A & B\n}\nexport const mergeCookie = <const A extends Object, const B extends Object>(\n\ta: A,\n\tb: B\n): A & B => {\n\t// @ts-ignore\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst { properties: _, ...target } = a ?? {}\n\n\t// @ts-ignore\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst { properties: __, ...source } = b ?? {}\n\n\treturn mergeDeep(target, source) as A & B\n}\n\nexport const mergeObjectArray = <T extends HookContainer>(\n\ta: T | T[] = [],\n\tb: T | T[] = []\n): T[] => {\n\tif (!a) return []\n\tif (!b) return a as any\n\n\t// ! Must copy to remove side-effect\n\tconst array = <T[]>[]\n\tconst checksums = <(number | undefined)[]>[]\n\n\tif (!Array.isArray(a)) a = [a]\n\tif (!Array.isArray(b)) b = [b]\n\n\tfor (const item of a) {\n\t\tarray.push(item)\n\n\t\tif (item.checksum) checksums.push(item.checksum)\n\t}\n\n\tfor (const item of b)\n\t\tif (!checksums.includes(item.checksum)) array.push(item)\n\n\treturn array\n}\n\nexport const primitiveHooks = [\n\t'start',\n\t'request',\n\t'parse',\n\t'transform',\n\t'resolve',\n\t'beforeHandle',\n\t'afterHandle',\n\t'onResponse',\n\t'mapResponse',\n\t'trace',\n\t'error',\n\t'stop',\n\t'body',\n\t'headers',\n\t'params',\n\t'query',\n\t'response',\n\t'type',\n\t'detail'\n] as const\n\nconst primitiveHookMap = primitiveHooks.reduce(\n\t(acc, x) => ((acc[x] = true), acc),\n\t{} as Record<string, boolean>\n)\n\nexport const mergeResponse = (\n\ta: InputSchema['response'],\n\tb: InputSchema['response']\n) => {\n\t// If both are Record<number, ...> then merge them,\n\t// giving preference to b.\n\ttype RecordNumber = Record<number, any>\n\tconst isRecordNumber = (x: typeof a | typeof b): x is RecordNumber =>\n\t\ttypeof x === 'object' && Object.keys(x).every(isNumericString)\n\n\tif (isRecordNumber(a) && isRecordNumber(b))\n\t\treturn { ...(a as RecordNumber), ...(b as RecordNumber) }\n\n\treturn b ?? a\n}\n\nexport const mergeHook = (\n\ta?: LifeCycleStore,\n\tb?: LocalHook<any, any, any, any, any, any, any>,\n\t{ allowMacro = false }: { allowMacro?: boolean } = {}\n): LifeCycleStore => {\n\t// In case if merging union is need\n\t// const customAStore: Record<string, unknown> = {}\n\t// const customBStore: Record<string, unknown> = {}\n\n\t// for (const [key, value] of Object.entries(a)) {\n\t// \tif (primitiveHooks.includes(key as any)) continue\n\n\t// \tcustomAStore[key] = value\n\t// }\n\n\t// for (const [key, value] of Object.entries(b)) {\n\t// \tif (primitiveHooks.includes(key as any)) continue\n\n\t// \tcustomBStore[key] = value\n\t// }\n\n\t// const unioned = Object.keys(customAStore).filter((x) =>\n\t// \tObject.keys(customBStore).includes(x)\n\t// )\n\n\t// // Must provide empty object to prevent reference side-effect\n\t// const customStore = Object.assign({}, customAStore, customBStore)\n\n\t// for (const union of unioned)\n\t// \tcustomStore[union] = mergeObjectArray(\n\t// \t\tcustomAStore[union],\n\t// \t\tcustomBStore[union]\n\t// \t)\n\n\tconst rest = allowMacro\n\t\t? {\n\t\t\t\t...a,\n\t\t\t\t...b\n\t\t }\n\t\t: undefined\n\n\treturn {\n\t\t...rest,\n\t\t// Merge local hook first\n\t\t// @ts-ignore\n\t\tbody: b?.body ?? a?.body,\n\t\t// @ts-ignore\n\t\theaders: b?.headers ?? a?.headers,\n\t\t// @ts-ignore\n\t\tparams: b?.params ?? a?.params,\n\t\t// @ts-ignore\n\t\tquery: b?.query ?? a?.query,\n\t\t// ? This order is correct - SaltyAom\n\t\tresponse: mergeResponse(\n\t\t\t// @ts-ignore\n\t\t\ta?.response,\n\t\t\t// @ts-ignore\n\t\t\tb?.response\n\t\t),\n\t\ttype: a?.type || b?.type,\n\t\tdetail: mergeDeep(\n\t\t\t// @ts-ignore\n\t\t\tb?.detail ?? {},\n\t\t\t// @ts-ignore\n\t\t\ta?.detail ?? {}\n\t\t),\n\t\tparse: mergeObjectArray(a?.parse as any, b?.parse),\n\t\ttransform: mergeObjectArray(a?.transform, b?.transform),\n\t\tbeforeHandle: mergeObjectArray(a?.beforeHandle, b?.beforeHandle),\n\t\tafterHandle: mergeObjectArray(a?.afterHandle, b?.afterHandle),\n\t\tonResponse: mergeObjectArray(a?.onResponse, b?.onResponse) as any,\n\t\tmapResponse: mergeObjectArray(a?.mapResponse, b?.mapResponse) as any,\n\t\ttrace: mergeObjectArray(a?.trace, b?.trace) as any,\n\t\terror: mergeObjectArray(a?.error, b?.error)\n\t}\n}\n\nexport const getSchemaValidator = <T extends TSchema | string | undefined>(\n\ts: T,\n\t{\n\t\tmodels = {},\n\t\tdynamic = false,\n\t\tnormalize = false,\n\t\tadditionalProperties = false,\n\t}: {\n\t\tmodels?: Record<string, TSchema>\n\t\tadditionalProperties?: boolean\n\t\tdynamic?: boolean\n\t\tnormalize?: boolean\n\t} = {}\n): T extends TSchema ? TypeCheck<TSchema> : undefined => {\n\tif (!s) return undefined as any\n\tif (typeof s === 'string' && !(s in models)) return undefined as any\n\n\tconst schema: TSchema = typeof s === 'string' ? models[s] : s\n\n\t// @ts-ignore\n\tif (schema.type === 'object' && 'additionalProperties' in schema === false)\n\t\tschema.additionalProperties = additionalProperties\n\n\tconst cleaner = (value: unknown) => Value.Clean(schema, value)\n\n\tif (dynamic) {\n\t\tconst validator = {\n\t\t\tschema,\n\t\t\treferences: '',\n\t\t\tcheckFunc: () => {},\n\t\t\tcode: '',\n\t\t\tCheck: (value: unknown) => Value.Check(schema, value),\n\t\t\tErrors: (value: unknown) => Value.Errors(schema, value),\n\t\t\tCode: () => ''\n\t\t} as unknown as TypeCheck<TSchema>\n\n\t\tif (normalize && schema.additionalProperties === false)\n\t\t\t// @ts-ignore\n\t\t\tvalidator.Clean = cleaner\n\n\t\t// @ts-ignore\n\t\tif (schema.config) {\n\t\t\t// @ts-ignore\n\t\t\tvalidator.config = schema.config\n\n\t\t\t// @ts-ignore\n\t\t\tif (validator?.schema?.config)\n\t\t\t\t// @ts-ignore\n\t\t\t\tdelete validator.schema.config\n\t\t}\n\n\t\treturn validator as any\n\t}\n\n\tconst compiled = TypeCompiler.Compile(schema, Object.values(models))\n\n\t// @ts-expect-error\n\tcompiled.Clean = cleaner\n\n\t// @ts-ignore\n\tif (schema.config) {\n\t\t// @ts-ignore\n\t\tcompiled.config = schema.config\n\n\t\t// @ts-ignore\n\t\tif (compiled?.schema?.config)\n\t\t\t// @ts-ignore\n\t\t\tdelete compiled.schema.config\n\t}\n\n\treturn compiled as any\n}\n\nexport const getResponseSchemaValidator = (\n\ts: InputSchema['response'] | undefined,\n\t{\n\t\tmodels = {},\n\t\tdynamic = false,\n\t\tnormalize = false,\n\t\tadditionalProperties = false,\n\t}: {\n\t\tmodels?: Record<string, TSchema>\n\t\tadditionalProperties?: boolean\n\t\tdynamic?: boolean\n\t\tnormalize?: boolean\n\t}\n): Record<number, TypeCheck<any>> | undefined => {\n\tif (!s) return\n\tif (typeof s === 'string' && !(s in models)) return\n\n\tconst maybeSchemaOrRecord = typeof s === 'string' ? models[s] : s\n\n\tconst compile = (schema: TSchema, references?: TSchema[]) => {\n\t\t// eslint-disable-next-line sonarjs/no-identical-functions\n\t\t// Sonar being delulu, schema is not identical\n\t\tconst cleaner = (value: unknown) => Value.Clean(schema, value)\n\n\t\tif (dynamic)\n\t\t\treturn {\n\t\t\t\tschema,\n\t\t\t\treferences: '',\n\t\t\t\tcheckFunc: () => {},\n\t\t\t\tcode: '',\n\t\t\t\tCheck: (value: unknown) => Value.Check(schema, value),\n\t\t\t\tErrors: (value: unknown) => Value.Errors(schema, value),\n\t\t\t\tCode: () => ''\n\t\t\t} as unknown as TypeCheck<TSchema>\n\n\t\tconst compiledValidator = TypeCompiler.Compile(schema, references)\n\n\t\tif (normalize && schema.additionalProperties === false)\n\t\t\t// @ts-ignore\n\t\t\tcompiledValidator.Clean = cleaner\n\n\t\treturn compiledValidator\n\t}\n\n\tif (Kind in maybeSchemaOrRecord) {\n\t\tif ('additionalProperties' in maybeSchemaOrRecord === false)\n\t\t\tmaybeSchemaOrRecord.additionalProperties = additionalProperties\n\n\t\treturn {\n\t\t\t200: compile(maybeSchemaOrRecord, Object.values(models))\n\t\t}\n\t}\n\n\tconst record: Record<number, TypeCheck<any>> = {}\n\n\tObject.keys(maybeSchemaOrRecord).forEach((status): TSchema | undefined => {\n\t\tconst maybeNameOrSchema = maybeSchemaOrRecord[+status]\n\n\t\tif (typeof maybeNameOrSchema === 'string') {\n\t\t\tif (maybeNameOrSchema in models) {\n\t\t\t\tconst schema = models[maybeNameOrSchema]\n\t\t\t\tschema.type === 'object' &&\n\t\t\t\t\t'additionalProperties' in schema === false\n\n\t\t\t\t// Inherits model maybe already compiled\n\t\t\t\trecord[+status] =\n\t\t\t\t\tKind in schema\n\t\t\t\t\t\t? compile(schema, Object.values(models))\n\t\t\t\t\t\t: schema\n\t\t\t}\n\n\t\t\treturn undefined\n\t\t}\n\n\t\tif (\n\t\t\tmaybeNameOrSchema.type === 'object' &&\n\t\t\t'additionalProperties' in maybeNameOrSchema === false\n\t\t)\n\t\t\tmaybeNameOrSchema.additionalProperties = additionalProperties\n\n\t\t// Inherits model maybe already compiled\n\t\trecord[+status] =\n\t\t\tKind in maybeNameOrSchema\n\t\t\t\t? compile(maybeNameOrSchema, Object.values(models))\n\t\t\t\t: maybeNameOrSchema\n\t})\n\n\treturn record\n}\n\nconst isBun = typeof Bun !== 'undefined'\nconst hasHash = isBun && typeof Bun.hash === 'function'\n\n// https://stackoverflow.com/a/52171480\nexport const checksum = (s: string) => {\n\tif (hasHash) return Bun.hash(s) as number\n\n\tlet h = 9\n\n\tfor (let i = 0; i < s.length; ) h = Math.imul(h ^ s.charCodeAt(i++), 9 ** 9)\n\n\treturn (h = h ^ (h >>> 9))\n}\n\nexport const getCookieValidator = ({\n\tvalidator,\n\tdefaultConfig = {},\n\tconfig,\n\tdynamic,\n\tmodels\n}: {\n\tvalidator: TSchema | string | undefined\n\tdefaultConfig: CookieOptions | undefined\n\tconfig: CookieOptions\n\tdynamic: boolean\n\tmodels: Record<string, TSchema> | undefined\n}) => {\n\tlet cookieValidator = getSchemaValidator(validator, {\n\t\tdynamic,\n\t\tmodels,\n\t\tadditionalProperties: true\n\t})\n\n\tif (isNotEmpty(defaultConfig)) {\n\t\tif (cookieValidator) {\n\t\t\t// @ts-expect-error private\n\t\t\tcookieValidator.config = mergeCookie(\n\t\t\t\t// @ts-expect-error private\n\t\t\t\tcookieValidator.config,\n\t\t\t\tconfig\n\t\t\t)\n\t\t} else {\n\t\t\tcookieValidator = getSchemaValidator(t.Cookie({}), {\n\t\t\t\tdynamic,\n\t\t\t\tmodels,\n\t\t\t\tadditionalProperties: true\n\t\t\t})\n\n\t\t\t// @ts-expect-error private\n\t\t\tcookieValidator.config = defaultConfig\n\t\t}\n\t}\n\n\treturn cookieValidator\n}\n\nexport const mergeLifeCycle = (\n\ta: LifeCycleStore,\n\tb: LifeCycleStore | LocalHook<any, any, any, any, any, any, any>,\n\tchecksum?: number\n): LifeCycleStore => {\n\tconst injectChecksum = (x: MaybeArray<HookContainer> | undefined) => {\n\t\tif (!x) return\n\n\t\tif (!Array.isArray(x)) {\n\t\t\t// ? clone fn is required to prevent side-effect from changing hookType\n\t\t\tconst fn = x\n\n\t\t\tif (checksum && !fn.checksum) fn.checksum = checksum\n\t\t\tif (fn.scope === 'scoped') fn.scope = 'local'\n\n\t\t\treturn fn\n\t\t}\n\n\t\t// ? clone fns is required to prevent side-effect from changing hookType\n\t\tconst fns = [...x]\n\n\t\tfor (const fn of fns) {\n\t\t\tif (checksum && !fn.checksum) fn.checksum = checksum\n\n\t\t\tif (fn.scope === 'scoped') fn.scope = 'local'\n\t\t}\n\n\t\treturn fns\n\t}\n\n\treturn {\n\t\t// ...a,\n\t\t// ...b,\n\t\tstart: mergeObjectArray(\n\t\t\ta.start,\n\t\t\tinjectChecksum(b?.start)\n\t\t) as HookContainer<GracefulHandler<any>>[],\n\t\trequest: mergeObjectArray(\n\t\t\ta.request,\n\t\t\tinjectChecksum(b?.request)\n\t\t) as HookContainer<PreHandler<any, any>>[],\n\t\tparse: mergeObjectArray(\n\t\t\ta.parse,\n\t\t\tinjectChecksum(b?.parse)\n\t\t) as HookContainer<BodyHandler<any, any>>[],\n\t\ttransform: mergeObjectArray(\n\t\t\ta.transform,\n\t\t\tinjectChecksum(b?.transform)\n\t\t) as HookContainer<TransformHandler<any, any>>[],\n\t\tbeforeHandle: mergeObjectArray(\n\t\t\ta.beforeHandle,\n\t\t\tinjectChecksum(b?.beforeHandle)\n\t\t) as HookContainer<OptionalHandler<any, any>>[],\n\t\tafterHandle: mergeObjectArray(\n\t\t\ta.afterHandle,\n\t\t\tinjectChecksum(b?.afterHandle)\n\t\t) as HookContainer<AfterHandler<any, any>>[],\n\t\tmapResponse: mergeObjectArray(\n\t\t\ta.mapResponse,\n\t\t\tinjectChecksum(b?.mapResponse)\n\t\t) as HookContainer<MapResponse<any, any>>[],\n\t\tonResponse: mergeObjectArray(\n\t\t\ta.onResponse,\n\t\t\tinjectChecksum(b?.onResponse)\n\t\t) as HookContainer<VoidHandler<any, any>>[],\n\t\t// Already merged on Elysia._use, also logic is more complicated, can't directly merge\n\t\ttrace: a.trace,\n\t\terror: mergeObjectArray(\n\t\t\ta.error,\n\t\t\tinjectChecksum(b?.error)\n\t\t) as HookContainer<ErrorHandler<any, any, any>>[],\n\t\tstop: mergeObjectArray(\n\t\t\ta.stop,\n\t\t\tinjectChecksum(b?.stop)\n\t\t) as HookContainer<GracefulHandler<any>>[]\n\t}\n}\n\nexport const asHookType = (\n\tfn: HookContainer,\n\tinject: LifeCycleType,\n\t{ skipIfHasType = false }: { skipIfHasType?: boolean } = {}\n) => {\n\tif (!fn) return fn\n\n\tif (!Array.isArray(fn)) {\n\t\tif (skipIfHasType) fn.scope ??= inject\n\t\telse fn.scope = inject\n\n\t\treturn fn\n\t}\n\n\tfor (const x of fn)\n\t\tif (skipIfHasType) x.scope ??= inject\n\t\telse x.scope = inject\n\n\treturn fn\n}\n\nconst filterGlobal = (fn: MaybeArray<HookContainer>) => {\n\tif (!fn) return fn\n\n\tif (!Array.isArray(fn))\n\t\tswitch (fn.scope) {\n\t\t\tcase 'global':\n\t\t\tcase 'scoped':\n\t\t\t\treturn { ...fn }\n\n\t\t\tdefault:\n\t\t\t\treturn { fn }\n\t\t}\n\n\tconst array = <any>[]\n\n\tfor (const x of fn)\n\t\tswitch (x.scope) {\n\t\t\tcase 'global':\n\t\t\tcase 'scoped':\n\t\t\t\tarray.push({\n\t\t\t\t\t...x\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t}\n\n\treturn array\n}\n\nexport const filterGlobalHook = (\n\thook: LocalHook<any, any, any, any, any, any, any>\n): LocalHook<any, any, any, any, any, any, any> => {\n\treturn {\n\t\t// rest is validator\n\t\t...hook,\n\t\ttype: hook?.type,\n\t\tdetail: hook?.detail,\n\t\tparse: filterGlobal(hook?.parse),\n\t\ttransform: filterGlobal(hook?.transform),\n\t\tbeforeHandle: filterGlobal(hook?.beforeHandle),\n\t\tafterHandle: filterGlobal(hook?.afterHandle),\n\t\tonResponse: filterGlobal(hook?.onResponse),\n\t\terror: filterGlobal(hook?.error),\n\t\tmapResponse: filterGlobal(hook?.mapResponse)\n\t} as LocalHook<any, any, any, any, any, any, any>\n}\n\nexport const StatusMap = {\n\tContinue: 100,\n\t'Switching Protocols': 101,\n\tProcessing: 102,\n\t'Early Hints': 103,\n\tOK: 200,\n\tCreated: 201,\n\tAccepted: 202,\n\t'Non-Authoritative Information': 203,\n\t'No Content': 204,\n\t'Reset Content': 205,\n\t'Partial Content': 206,\n\t'Multi-Status': 207,\n\t'Already Reported': 208,\n\t'Multiple Choices': 300,\n\t'Moved Permanently': 301,\n\tFound: 302,\n\t'See Other': 303,\n\t'Not Modified': 304,\n\t'Temporary Redirect': 307,\n\t'Permanent Redirect': 308,\n\t'Bad Request': 400,\n\tUnauthorized: 401,\n\t'Payment Required': 402,\n\tForbidden: 403,\n\t'Not Found': 404,\n\t'Method Not Allowed': 405,\n\t'Not Acceptable': 406,\n\t'Proxy Authentication Required': 407,\n\t'Request Timeout': 408,\n\tConflict: 409,\n\tGone: 410,\n\t'Length Required': 411,\n\t'Precondition Failed': 412,\n\t'Payload Too Large': 413,\n\t'URI Too Long': 414,\n\t'Unsupported Media Type': 415,\n\t'Range Not Satisfiable': 416,\n\t'Expectation Failed': 417,\n\t\"I'm a teapot\": 418,\n\t'Misdirected Request': 421,\n\t'Unprocessable Content': 422,\n\tLocked: 423,\n\t'Failed Dependency': 424,\n\t'Too Early': 425,\n\t'Upgrade Required': 426,\n\t'Precondition Required': 428,\n\t'Too Many Requests': 429,\n\t'Request Header Fields Too Large': 431,\n\t'Unavailable For Legal Reasons': 451,\n\t'Internal Server Error': 500,\n\t'Not Implemented': 501,\n\t'Bad Gateway': 502,\n\t'Service Unavailable': 503,\n\t'Gateway Timeout': 504,\n\t'HTTP Version Not Supported': 505,\n\t'Variant Also Negotiates': 506,\n\t'Insufficient Storage': 507,\n\t'Loop Detected': 508,\n\t'Not Extended': 510,\n\t'Network Authentication Required': 511\n} as const\n\nexport const InvertedStatusMap = Object.fromEntries(\n\tObject.entries(StatusMap).map(([k, v]) => [v, k])\n) as {\n\t[K in keyof StatusMap as StatusMap[K]]: K\n}\n\nexport type StatusMap = typeof StatusMap\nexport type InvertedStatusMap = typeof InvertedStatusMap\n\nfunction removeTrailingEquals(digest: string): string {\n\tlet trimmedDigest = digest\n\twhile (trimmedDigest.endsWith('=')) {\n\t\ttrimmedDigest = trimmedDigest.slice(0, -1)\n\t}\n\treturn trimmedDigest\n}\n\nconst encoder = new TextEncoder()\n\nexport const signCookie = async (val: string, secret: string | null) => {\n\tif (typeof val !== 'string')\n\t\tthrow new TypeError('Cookie value must be provided as a string.')\n\n\tif (secret === null) throw new TypeError('Secret key must be provided.')\n\n\tconst secretKey = await crypto.subtle.importKey(\n\t\t'raw',\n\t\tencoder.encode(secret),\n\t\t{ name: 'HMAC', hash: 'SHA-256' },\n\t\tfalse,\n\t\t['sign']\n\t)\n\tconst hmacBuffer = await crypto.subtle.sign(\n\t\t'HMAC',\n\t\tsecretKey,\n\t\tencoder.encode(val)\n\t)\n\n\treturn (\n\t\tval +\n\t\t'.' +\n\t\tremoveTrailingEquals(Buffer.from(hmacBuffer).toString('base64'))\n\t)\n}\n\nexport const unsignCookie = async (input: string, secret: string | null) => {\n\tif (typeof input !== 'string')\n\t\tthrow new TypeError('Signed cookie string must be provided.')\n\n\tif (null === secret) throw new TypeError('Secret key must be provided.')\n\n\tconst tentativeValue = input.slice(0, input.lastIndexOf('.'))\n\tconst expectedInput = await signCookie(tentativeValue, secret)\n\n\treturn expectedInput === input ? tentativeValue : false\n}\n\nexport const traceBackMacro = (\n\textension: unknown,\n\tproperty: Record<string, unknown>,\n\thooks = property\n) => {\n\tif (!extension || typeof extension !== 'object' || !property) return\n\n\tfor (const [key, value] of Object.entries(property)) {\n\t\tif (key in primitiveHookMap || !(key in extension)) continue\n\n\t\tconst v = extension[\n\t\t\tkey as unknown as keyof typeof extension\n\t\t] as BaseMacro[string]\n\n\t\tif (typeof v === 'function') {\n\t\t\tv(value)\n\t\t} else if (typeof v === 'object')\n\t\t\ttraceBackMacro(v as BaseMacro, value as any, hooks)\n\t}\n}\n\nexport const createMacroManager =\n\t({\n\t\tglobalHook,\n\t\tlocalHook\n\t}: {\n\t\tglobalHook: LifeCycleStore\n\t\tlocalHook: LocalHook<any, any, any, any, any, any, any>\n\t}) =>\n\t(stackName: keyof LifeCycleStore) =>\n\t(\n\t\ttype:\n\t\t\t| {\n\t\t\t\t\tinsert?: 'before' | 'after'\n\t\t\t\t\tstack?: 'global' | 'local'\n\t\t\t }\n\t\t\t| MaybeArray<HookContainer>,\n\t\tfn?: MaybeArray<HookContainer>\n\t) => {\n\t\tif (typeof type === 'function')\n\t\t\ttype = {\n\t\t\t\tfn: type\n\t\t\t}\n\n\t\tif ('fn' in type || Array.isArray(type)) {\n\t\t\tif (!localHook[stackName]) localHook[stackName] = []\n\t\t\tif (typeof localHook[stackName] === 'function')\n\t\t\t\tlocalHook[stackName] = [localHook[stackName]]\n\n\t\t\tif (Array.isArray(type))\n\t\t\t\tlocalHook[stackName] = (\n\t\t\t\t\tlocalHook[stackName] as unknown[]\n\t\t\t\t).concat(type) as any\n\t\t\telse localHook[stackName].push(type)\n\n\t\t\treturn\n\t\t}\n\n\t\tconst { insert = 'after', stack = 'local' } = type\n\n\t\tif (typeof fn === 'function') fn = { fn }\n\n\t\tif (stack === 'global') {\n\t\t\tif (!Array.isArray(fn)) {\n\t\t\t\tif (insert === 'before') {\n\t\t\t\t\t;(globalHook[stackName] as any[]).unshift(fn)\n\t\t\t\t} else {\n\t\t\t\t\t;(globalHook[stackName] as any[]).push(fn)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (insert === 'before') {\n\t\t\t\t\tglobalHook[stackName] = fn.concat(\n\t\t\t\t\t\tglobalHook[stackName] as any\n\t\t\t\t\t) as any\n\t\t\t\t} else {\n\t\t\t\t\tglobalHook[stackName] = (\n\t\t\t\t\t\tglobalHook[stackName] as any[]\n\t\t\t\t\t).concat(fn)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!localHook[stackName]) localHook[stackName] = []\n\t\t\tif (typeof localHook[stackName] === 'function')\n\t\t\t\tlocalHook[stackName] = [localHook[stackName]]\n\n\t\t\tif (!Array.isArray(fn)) {\n\t\t\t\tif (insert === 'before') {\n\t\t\t\t\t;(localHook[stackName] as any[]).unshift(fn)\n\t\t\t\t} else {\n\t\t\t\t\t;(localHook[stackName] as any[]).push(fn)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (insert === 'before') {\n\t\t\t\t\tlocalHook[stackName] = fn.concat(localHook[stackName])\n\t\t\t\t} else {\n\t\t\t\t\tlocalHook[stackName] = localHook[stackName].concat(fn)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\nexport const isNumericString = (message: string): boolean => {\n\tif (message.length < 16)\n\t\treturn message.trim().length !== 0 && !Number.isNaN(Number(message))\n\n\t// if 16 digit but less then 9,007,199,254,740,991 then can be parsed\n\tif (message.length === 16) {\n\t\tconst numVal = Number(message)\n\t\tif (numVal.toString() === message)\n\t\t\treturn message.trim().length !== 0 && !Number.isNaN(numVal)\n\t}\n\n\treturn false\n}\n\nexport class PromiseGroup implements PromiseLike<void> {\n\troot: Promise<any> | null = null\n\tpromises: Promise<any>[] = []\n\n\tconstructor(public onError: (error: any) => void = console.error) {}\n\n\t/**\n\t * The number of promises still being awaited.\n\t */\n\tget size() {\n\t\treturn this.promises.length\n\t}\n\n\t/**\n\t * Add a promise to the group.\n\t * @returns The promise that was added.\n\t */\n\tadd<T>(promise: Promise<T>) {\n\t\tthis.promises.push(promise)\n\t\tthis.root ||= this.drain()\n\t\treturn promise\n\t}\n\n\tprivate async drain() {\n\t\twhile (this.promises.length > 0) {\n\t\t\ttry {\n\t\t\t\tawait this.promises[0]\n\t\t\t} catch (error) {\n\t\t\t\tthis.onError(error)\n\t\t\t}\n\t\t\tthis.promises.shift()\n\t\t}\n\t\tthis.root = null\n\t}\n\n\t// Allow the group to be awaited.\n\tthen<TResult1 = void, TResult2 = never>(\n\t\tonfulfilled?:\n\t\t\t| ((value: void) => TResult1 | PromiseLike<TResult1>)\n\t\t\t| undefined\n\t\t\t| null,\n\t\tonrejected?:\n\t\t\t| ((reason: any) => TResult2 | PromiseLike<TResult2>)\n\t\t\t| undefined\n\t\t\t| null\n\t): PromiseLike<TResult1 | TResult2> {\n\t\treturn (this.root ?? Promise.resolve()).then(onfulfilled, onrejected)\n\t}\n}\n\nexport const fnToContainer = (\n\tfn: MaybeArray<Function | HookContainer>\n): MaybeArray<HookContainer> => {\n\tif (!fn) return fn\n\n\tif (!Array.isArray(fn)) {\n\t\tif (typeof fn === 'function') return { fn }\n\t\telse if ('fn' in fn) return fn\n\t}\n\n\tconst fns = <HookContainer[]>[]\n\tfor (const x of fn) {\n\t\tif (typeof x === 'function') fns.push({ fn: x })\n\t\telse if ('fn' in x) fns.push(x)\n\t}\n\n\treturn fns\n}\n\nexport const localHookToLifeCycleStore = (\n\ta: LocalHook<any, any, any, any, any>\n): LifeCycleStore => {\n\treturn {\n\t\t...a,\n\t\tstart: fnToContainer(a?.start),\n\t\trequest: fnToContainer(a?.request),\n\t\tparse: fnToContainer(a?.parse),\n\t\ttransform: fnToContainer(a?.transform),\n\t\tbeforeHandle: fnToContainer(a?.beforeHandle),\n\t\tafterHandle: fnToContainer(a?.afterHandle),\n\t\tonResponse: fnToContainer(a?.onResponse),\n\t\tmapResponse: fnToContainer(a?.mapResponse),\n\t\ttrace: fnToContainer(a?.trace),\n\t\terror: fnToContainer(a?.error),\n\t\tstop: fnToContainer(a?.stop)\n\t}\n}\n\nexport const lifeCycleToFn = (\n\ta: LifeCycleStore\n): LocalHook<any, any, any, any, any, any, any> => {\n\treturn {\n\t\t...a,\n\t\tstart: a.start?.map((x) => x.fn),\n\t\trequest: a.request?.map((x) => x.fn),\n\t\tparse: a.parse?.map((x) => x.fn),\n\t\ttransform: a.transform?.map((x) => x.fn),\n\t\tbeforeHandle: a.beforeHandle?.map((x) => x.fn),\n\t\tafterHandle: a.afterHandle?.map((x) => x.fn),\n\t\tonResponse: a.onResponse?.map((x) => x.fn),\n\t\tmapResponse: a.mapResponse?.map((x) => x.fn),\n\t\ttrace: a.trace?.map((x) => x.fn),\n\t\terror: a.error?.map((x) => x.fn),\n\t\tstop: a.stop?.map((x) => x.fn)\n\t}\n}\n\nexport const cloneInference = (inference: {\n\tevent: Sucrose.Inference\n\ttrace: Sucrose.TraceInference\n}): {\n\tevent: Sucrose.Inference\n\ttrace: Sucrose.TraceInference\n} => ({\n\tevent: {\n\t\tbody: inference.event.body,\n\t\tcookie: inference.event.cookie,\n\t\theaders: inference.event.headers,\n\t\tqueries: [...inference.event.queries],\n\t\tquery: inference.event.query,\n\t\tset: inference.event.set,\n\t\tunknownQueries: inference.event.unknownQueries\n\t},\n\ttrace: {\n\t\trequest: inference.trace.request,\n\t\tparse: inference.trace.parse,\n\t\ttransform: inference.trace.transform,\n\t\thandle: inference.trace.handle,\n\t\tbeforeHandle: inference.trace.beforeHandle,\n\t\tafterHandle: inference.trace.afterHandle,\n\t\terror: inference.trace.error,\n\t\tcontext: inference.trace.context,\n\t\tstore: inference.trace.store,\n\t\tset: inference.trace.set\n\t}\n})\n\n/**\n *\n * @param url URL to redirect to\n * @param HTTP status code to send,\n */\nexport const redirect = (\n\turl: string,\n\tstatus: 301 | 302 | 303 | 307 | 308 = 301\n) => Response.redirect(url, status)\n\nexport type redirect = typeof redirect\n\nexport const ELYSIA_FORM_DATA = Symbol('ElysiaFormData')\nexport type ELYSIA_FORM_DATA = typeof ELYSIA_FORM_DATA\n\ntype ElysiaFormData<T extends Record<string | number, unknown>> = FormData & {\n\t[ELYSIA_FORM_DATA]: Replace<T, BunFile, File>\n}\n\nexport const form = <const T extends Record<string | number, unknown>>(\n\titems: T\n): ElysiaFormData<T> => {\n\tconst formData = new FormData()\n\n\tfor (const [key, value] of Object.entries(items)) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (const v of value) {\n\t\t\t\tif (value instanceof File)\n\t\t\t\t\tformData.append(key, value, value.name)\n\n\t\t\t\tformData.append(key, v)\n\t\t\t}\n\n\t\t\tcontinue\n\t\t}\n\n\t\tif (value instanceof File) formData.append(key, value, value.name)\n\t\tformData.append(key, value)\n\t}\n\n\treturn formData as any\n}\n",
16
+ "import { Kind, TSchema } from '@sinclair/typebox'\nimport { Value } from '@sinclair/typebox/value'\nimport { TypeCheck, TypeCompiler } from '@sinclair/typebox/compiler'\n\nimport { t } from '.'\nimport { isNotEmpty } from './handler'\n\nimport type {\n\tLifeCycleStore,\n\tLocalHook,\n\tMaybeArray,\n\tInputSchema,\n\tBaseMacro,\n\tLifeCycleType,\n\tHookContainer,\n\tGracefulHandler,\n\tPreHandler,\n\tBodyHandler,\n\tTransformHandler,\n\tOptionalHandler,\n\tAfterHandler,\n\tMapResponse,\n\tVoidHandler,\n\tErrorHandler,\n\tReplace\n} from './types'\nimport type { CookieOptions } from './cookies'\nimport { Sucrose } from './sucrose'\nimport type { BunFile } from 'bun'\n\nexport const replaceUrlPath = (url: string, pathname: string) => {\n\tconst urlObject = new URL(url)\n\turlObject.pathname = pathname\n\treturn urlObject.toString()\n}\n\nconst isClass = (v: Object) =>\n\t(typeof v === 'function' && /^\\s*class\\s+/.test(v.toString())) ||\n\t// Handle import * as Sentry from '@sentry/bun'\n\t// This also handle [object Date], [object Array]\n\t// and FFI value like [object Prisma]\n\tv.toString().startsWith('[object ') ||\n\t// If object prototype is not pure, then probably a class-like object\n\tisNotEmpty(Object.getPrototypeOf(v))\n\nconst isObject = (item: any): item is Object =>\n\titem && typeof item === 'object' && !Array.isArray(item)\n\nexport const mergeDeep = <\n\tA extends Record<string, any>,\n\tB extends Record<string, any>\n>(\n\ttarget: A,\n\tsource: B,\n\t{\n\t\tskipKeys\n\t}: {\n\t\tskipKeys?: string[]\n\t} = {}\n): A & B => {\n\tif (isObject(target) && isObject(source))\n\t\tfor (const [key, value] of Object.entries(source)) {\n\t\t\tif (skipKeys?.includes(key)) continue\n\n\t\t\tif (!isObject(value) || !(key in target) || isClass(value)) {\n\t\t\t\ttarget[key as keyof typeof target] = value\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\ttarget[key as keyof typeof target] = mergeDeep(\n\t\t\t\t(target as any)[key] as any,\n\t\t\t\tvalue\n\t\t\t)\n\t\t}\n\n\treturn target as A & B\n}\nexport const mergeCookie = <const A extends Object, const B extends Object>(\n\ta: A,\n\tb: B\n): A & B => {\n\t// @ts-ignore\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst { properties: _, ...target } = a ?? {}\n\n\t// @ts-ignore\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst { properties: __, ...source } = b ?? {}\n\n\treturn mergeDeep(target, source) as A & B\n}\n\nexport const mergeObjectArray = <T extends HookContainer>(\n\ta: T | T[] = [],\n\tb: T | T[] = []\n): T[] => {\n\tif (!a) return []\n\tif (!b) return a as any\n\n\t// ! Must copy to remove side-effect\n\tconst array = <T[]>[]\n\tconst checksums = <(number | undefined)[]>[]\n\n\tif (!Array.isArray(a)) a = [a]\n\tif (!Array.isArray(b)) b = [b]\n\n\tfor (const item of a) {\n\t\tarray.push(item)\n\n\t\tif (item.checksum) checksums.push(item.checksum)\n\t}\n\n\tfor (const item of b)\n\t\tif (!checksums.includes(item.checksum)) array.push(item)\n\n\treturn array\n}\n\nexport const primitiveHooks = [\n\t'start',\n\t'request',\n\t'parse',\n\t'transform',\n\t'resolve',\n\t'beforeHandle',\n\t'afterHandle',\n\t'onResponse',\n\t'mapResponse',\n\t'trace',\n\t'error',\n\t'stop',\n\t'body',\n\t'headers',\n\t'params',\n\t'query',\n\t'response',\n\t'type',\n\t'detail'\n] as const\n\nconst primitiveHookMap = primitiveHooks.reduce(\n\t(acc, x) => ((acc[x] = true), acc),\n\t{} as Record<string, boolean>\n)\n\nexport const mergeResponse = (\n\ta: InputSchema['response'],\n\tb: InputSchema['response']\n) => {\n\t// If both are Record<number, ...> then merge them,\n\t// giving preference to b.\n\ttype RecordNumber = Record<number, any>\n\tconst isRecordNumber = (x: typeof a | typeof b): x is RecordNumber =>\n\t\ttypeof x === 'object' && Object.keys(x).every(isNumericString)\n\n\tif (isRecordNumber(a) && isRecordNumber(b))\n\t\treturn { ...(a as RecordNumber), ...(b as RecordNumber) }\n\n\treturn b ?? a\n}\n\nexport const mergeHook = (\n\ta?: LifeCycleStore,\n\tb?: LocalHook<any, any, any, any, any, any, any>,\n\t{ allowMacro = false }: { allowMacro?: boolean } = {}\n): LifeCycleStore => {\n\t// In case if merging union is need\n\t// const customAStore: Record<string, unknown> = {}\n\t// const customBStore: Record<string, unknown> = {}\n\n\t// for (const [key, value] of Object.entries(a)) {\n\t// \tif (primitiveHooks.includes(key as any)) continue\n\n\t// \tcustomAStore[key] = value\n\t// }\n\n\t// for (const [key, value] of Object.entries(b)) {\n\t// \tif (primitiveHooks.includes(key as any)) continue\n\n\t// \tcustomBStore[key] = value\n\t// }\n\n\t// const unioned = Object.keys(customAStore).filter((x) =>\n\t// \tObject.keys(customBStore).includes(x)\n\t// )\n\n\t// // Must provide empty object to prevent reference side-effect\n\t// const customStore = Object.assign({}, customAStore, customBStore)\n\n\t// for (const union of unioned)\n\t// \tcustomStore[union] = mergeObjectArray(\n\t// \t\tcustomAStore[union],\n\t// \t\tcustomBStore[union]\n\t// \t)\n\n\tconst rest = allowMacro\n\t\t? {\n\t\t\t\t...a,\n\t\t\t\t...b\n\t\t }\n\t\t: undefined\n\n\treturn {\n\t\t...rest,\n\t\t// Merge local hook first\n\t\t// @ts-ignore\n\t\tbody: b?.body ?? a?.body,\n\t\t// @ts-ignore\n\t\theaders: b?.headers ?? a?.headers,\n\t\t// @ts-ignore\n\t\tparams: b?.params ?? a?.params,\n\t\t// @ts-ignore\n\t\tquery: b?.query ?? a?.query,\n\t\t// ? This order is correct - SaltyAom\n\t\tresponse: mergeResponse(\n\t\t\t// @ts-ignore\n\t\t\ta?.response,\n\t\t\t// @ts-ignore\n\t\t\tb?.response\n\t\t),\n\t\ttype: a?.type || b?.type,\n\t\tdetail: mergeDeep(\n\t\t\t// @ts-ignore\n\t\t\tb?.detail ?? {},\n\t\t\t// @ts-ignore\n\t\t\ta?.detail ?? {}\n\t\t),\n\t\tparse: mergeObjectArray(a?.parse as any, b?.parse),\n\t\ttransform: mergeObjectArray(a?.transform, b?.transform),\n\t\tbeforeHandle: mergeObjectArray(a?.beforeHandle, b?.beforeHandle),\n\t\tafterHandle: mergeObjectArray(a?.afterHandle, b?.afterHandle),\n\t\tonResponse: mergeObjectArray(a?.onResponse, b?.onResponse) as any,\n\t\tmapResponse: mergeObjectArray(a?.mapResponse, b?.mapResponse) as any,\n\t\ttrace: mergeObjectArray(a?.trace, b?.trace) as any,\n\t\terror: mergeObjectArray(a?.error, b?.error)\n\t}\n}\n\nexport const getSchemaValidator = <T extends TSchema | string | undefined>(\n\ts: T,\n\t{\n\t\tmodels = {},\n\t\tdynamic = false,\n\t\tnormalize = false,\n\t\tadditionalProperties = false,\n\t}: {\n\t\tmodels?: Record<string, TSchema>\n\t\tadditionalProperties?: boolean\n\t\tdynamic?: boolean\n\t\tnormalize?: boolean\n\t} = {}\n): T extends TSchema ? TypeCheck<TSchema> : undefined => {\n\tif (!s) return undefined as any\n\tif (typeof s === 'string' && !(s in models)) return undefined as any\n\n\tconst schema: TSchema = typeof s === 'string' ? models[s] : s\n\n\t// @ts-ignore\n\tif (schema.type === 'object' && 'additionalProperties' in schema === false)\n\t\tschema.additionalProperties = additionalProperties\n\n\tconst cleaner = (value: unknown) => Value.Clean(schema, value)\n\n\tif (dynamic) {\n\t\tconst validator = {\n\t\t\tschema,\n\t\t\treferences: '',\n\t\t\tcheckFunc: () => {},\n\t\t\tcode: '',\n\t\t\tCheck: (value: unknown) => Value.Check(schema, value),\n\t\t\tErrors: (value: unknown) => Value.Errors(schema, value),\n\t\t\tCode: () => ''\n\t\t} as unknown as TypeCheck<TSchema>\n\n\t\tif (normalize && schema.additionalProperties === false)\n\t\t\t// @ts-ignore\n\t\t\tvalidator.Clean = cleaner\n\n\t\t// @ts-ignore\n\t\tif (schema.config) {\n\t\t\t// @ts-ignore\n\t\t\tvalidator.config = schema.config\n\n\t\t\t// @ts-ignore\n\t\t\tif (validator?.schema?.config)\n\t\t\t\t// @ts-ignore\n\t\t\t\tdelete validator.schema.config\n\t\t}\n\n\t\treturn validator as any\n\t}\n\n\tconst compiled = TypeCompiler.Compile(schema, Object.values(models))\n\n\t// @ts-expect-error\n\tcompiled.Clean = cleaner\n\n\t// @ts-ignore\n\tif (schema.config) {\n\t\t// @ts-ignore\n\t\tcompiled.config = schema.config\n\n\t\t// @ts-ignore\n\t\tif (compiled?.schema?.config)\n\t\t\t// @ts-ignore\n\t\t\tdelete compiled.schema.config\n\t}\n\n\treturn compiled as any\n}\n\nexport const getResponseSchemaValidator = (\n\ts: InputSchema['response'] | undefined,\n\t{\n\t\tmodels = {},\n\t\tdynamic = false,\n\t\tnormalize = false,\n\t\tadditionalProperties = false,\n\t}: {\n\t\tmodels?: Record<string, TSchema>\n\t\tadditionalProperties?: boolean\n\t\tdynamic?: boolean\n\t\tnormalize?: boolean\n\t}\n): Record<number, TypeCheck<any>> | undefined => {\n\tif (!s) return\n\tif (typeof s === 'string' && !(s in models)) return\n\n\tconst maybeSchemaOrRecord = typeof s === 'string' ? models[s] : s\n\n\tconst compile = (schema: TSchema, references?: TSchema[]) => {\n\t\t// eslint-disable-next-line sonarjs/no-identical-functions\n\t\t// Sonar being delulu, schema is not identical\n\t\tconst cleaner = (value: unknown) => Value.Clean(schema, value)\n\n\t\tif (dynamic)\n\t\t\treturn {\n\t\t\t\tschema,\n\t\t\t\treferences: '',\n\t\t\t\tcheckFunc: () => {},\n\t\t\t\tcode: '',\n\t\t\t\tCheck: (value: unknown) => Value.Check(schema, value),\n\t\t\t\tErrors: (value: unknown) => Value.Errors(schema, value),\n\t\t\t\tCode: () => ''\n\t\t\t} as unknown as TypeCheck<TSchema>\n\n\t\tconst compiledValidator = TypeCompiler.Compile(schema, references)\n\n\t\tif (normalize && schema.additionalProperties === false)\n\t\t\t// @ts-ignore\n\t\t\tcompiledValidator.Clean = cleaner\n\n\t\treturn compiledValidator\n\t}\n\n\tif (Kind in maybeSchemaOrRecord) {\n\t\tif ('additionalProperties' in maybeSchemaOrRecord === false)\n\t\t\tmaybeSchemaOrRecord.additionalProperties = additionalProperties\n\n\t\treturn {\n\t\t\t200: compile(maybeSchemaOrRecord, Object.values(models))\n\t\t}\n\t}\n\n\tconst record: Record<number, TypeCheck<any>> = {}\n\n\tObject.keys(maybeSchemaOrRecord).forEach((status): TSchema | undefined => {\n\t\tconst maybeNameOrSchema = maybeSchemaOrRecord[+status]\n\n\t\tif (typeof maybeNameOrSchema === 'string') {\n\t\t\tif (maybeNameOrSchema in models) {\n\t\t\t\tconst schema = models[maybeNameOrSchema]\n\t\t\t\tschema.type === 'object' &&\n\t\t\t\t\t'additionalProperties' in schema === false\n\n\t\t\t\t// Inherits model maybe already compiled\n\t\t\t\trecord[+status] =\n\t\t\t\t\tKind in schema\n\t\t\t\t\t\t? compile(schema, Object.values(models))\n\t\t\t\t\t\t: schema\n\t\t\t}\n\n\t\t\treturn undefined\n\t\t}\n\n\t\tif (\n\t\t\tmaybeNameOrSchema.type === 'object' &&\n\t\t\t'additionalProperties' in maybeNameOrSchema === false\n\t\t)\n\t\t\tmaybeNameOrSchema.additionalProperties = additionalProperties\n\n\t\t// Inherits model maybe already compiled\n\t\trecord[+status] =\n\t\t\tKind in maybeNameOrSchema\n\t\t\t\t? compile(maybeNameOrSchema, Object.values(models))\n\t\t\t\t: maybeNameOrSchema\n\t})\n\n\treturn record\n}\n\nconst isBun = typeof Bun !== 'undefined'\nconst hasHash = isBun && typeof Bun.hash === 'function'\n\n// https://stackoverflow.com/a/52171480\nexport const checksum = (s: string) => {\n\tif (hasHash) return Bun.hash(s) as number\n\n\tlet h = 9\n\n\tfor (let i = 0; i < s.length; ) h = Math.imul(h ^ s.charCodeAt(i++), 9 ** 9)\n\n\treturn (h = h ^ (h >>> 9))\n}\n\nexport const getCookieValidator = ({\n\tvalidator,\n\tdefaultConfig = {},\n\tconfig,\n\tdynamic,\n\tmodels\n}: {\n\tvalidator: TSchema | string | undefined\n\tdefaultConfig: CookieOptions | undefined\n\tconfig: CookieOptions\n\tdynamic: boolean\n\tmodels: Record<string, TSchema> | undefined\n}) => {\n\tlet cookieValidator = getSchemaValidator(validator, {\n\t\tdynamic,\n\t\tmodels,\n\t\tadditionalProperties: true\n\t})\n\n\tif (isNotEmpty(defaultConfig)) {\n\t\tif (cookieValidator) {\n\t\t\t// @ts-expect-error private\n\t\t\tcookieValidator.config = mergeCookie(\n\t\t\t\t// @ts-expect-error private\n\t\t\t\tcookieValidator.config,\n\t\t\t\tconfig\n\t\t\t)\n\t\t} else {\n\t\t\tcookieValidator = getSchemaValidator(t.Cookie({}), {\n\t\t\t\tdynamic,\n\t\t\t\tmodels,\n\t\t\t\tadditionalProperties: true\n\t\t\t})\n\n\t\t\t// @ts-expect-error private\n\t\t\tcookieValidator.config = defaultConfig\n\t\t}\n\t}\n\n\treturn cookieValidator\n}\n\nexport const mergeLifeCycle = (\n\ta: LifeCycleStore,\n\tb: LifeCycleStore | LocalHook<any, any, any, any, any, any, any>,\n\tchecksum?: number\n): LifeCycleStore => {\n\tconst injectChecksum = (x: MaybeArray<HookContainer> | undefined) => {\n\t\tif (!x) return\n\n\t\tif (!Array.isArray(x)) {\n\t\t\t// ? clone fn is required to prevent side-effect from changing hookType\n\t\t\tconst fn = x\n\n\t\t\tif (checksum && !fn.checksum) fn.checksum = checksum\n\t\t\tif (fn.scope === 'scoped') fn.scope = 'local'\n\n\t\t\treturn fn\n\t\t}\n\n\t\t// ? clone fns is required to prevent side-effect from changing hookType\n\t\tconst fns = [...x]\n\n\t\tfor (const fn of fns) {\n\t\t\tif (checksum && !fn.checksum) fn.checksum = checksum\n\n\t\t\tif (fn.scope === 'scoped') fn.scope = 'local'\n\t\t}\n\n\t\treturn fns\n\t}\n\n\treturn {\n\t\t// ...a,\n\t\t// ...b,\n\t\tstart: mergeObjectArray(\n\t\t\ta.start,\n\t\t\tinjectChecksum(b?.start)\n\t\t) as HookContainer<GracefulHandler<any>>[],\n\t\trequest: mergeObjectArray(\n\t\t\ta.request,\n\t\t\tinjectChecksum(b?.request)\n\t\t) as HookContainer<PreHandler<any, any>>[],\n\t\tparse: mergeObjectArray(\n\t\t\ta.parse,\n\t\t\tinjectChecksum(b?.parse)\n\t\t) as HookContainer<BodyHandler<any, any>>[],\n\t\ttransform: mergeObjectArray(\n\t\t\ta.transform,\n\t\t\tinjectChecksum(b?.transform)\n\t\t) as HookContainer<TransformHandler<any, any>>[],\n\t\tbeforeHandle: mergeObjectArray(\n\t\t\ta.beforeHandle,\n\t\t\tinjectChecksum(b?.beforeHandle)\n\t\t) as HookContainer<OptionalHandler<any, any>>[],\n\t\tafterHandle: mergeObjectArray(\n\t\t\ta.afterHandle,\n\t\t\tinjectChecksum(b?.afterHandle)\n\t\t) as HookContainer<AfterHandler<any, any>>[],\n\t\tmapResponse: mergeObjectArray(\n\t\t\ta.mapResponse,\n\t\t\tinjectChecksum(b?.mapResponse)\n\t\t) as HookContainer<MapResponse<any, any>>[],\n\t\tonResponse: mergeObjectArray(\n\t\t\ta.onResponse,\n\t\t\tinjectChecksum(b?.onResponse)\n\t\t) as HookContainer<VoidHandler<any, any>>[],\n\t\t// Already merged on Elysia._use, also logic is more complicated, can't directly merge\n\t\ttrace: a.trace,\n\t\terror: mergeObjectArray(\n\t\t\ta.error,\n\t\t\tinjectChecksum(b?.error)\n\t\t) as HookContainer<ErrorHandler<any, any, any>>[],\n\t\tstop: mergeObjectArray(\n\t\t\ta.stop,\n\t\t\tinjectChecksum(b?.stop)\n\t\t) as HookContainer<GracefulHandler<any>>[]\n\t}\n}\n\nexport const asHookType = (\n\tfn: HookContainer,\n\tinject: LifeCycleType,\n\t{ skipIfHasType = false }: { skipIfHasType?: boolean } = {}\n) => {\n\tif (!fn) return fn\n\n\tif (!Array.isArray(fn)) {\n\t\tif (skipIfHasType) fn.scope ??= inject\n\t\telse fn.scope = inject\n\n\t\treturn fn\n\t}\n\n\tfor (const x of fn)\n\t\tif (skipIfHasType) x.scope ??= inject\n\t\telse x.scope = inject\n\n\treturn fn\n}\n\nconst filterGlobal = (fn: MaybeArray<HookContainer>) => {\n\tif (!fn) return fn\n\n\tif (!Array.isArray(fn))\n\t\tswitch (fn.scope) {\n\t\t\tcase 'global':\n\t\t\tcase 'scoped':\n\t\t\t\treturn { ...fn }\n\n\t\t\tdefault:\n\t\t\t\treturn { fn }\n\t\t}\n\n\tconst array = <any>[]\n\n\tfor (const x of fn)\n\t\tswitch (x.scope) {\n\t\t\tcase 'global':\n\t\t\tcase 'scoped':\n\t\t\t\tarray.push({\n\t\t\t\t\t...x\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t}\n\n\treturn array\n}\n\nexport const filterGlobalHook = (\n\thook: LocalHook<any, any, any, any, any, any, any>\n): LocalHook<any, any, any, any, any, any, any> => {\n\treturn {\n\t\t// rest is validator\n\t\t...hook,\n\t\ttype: hook?.type,\n\t\tdetail: hook?.detail,\n\t\tparse: filterGlobal(hook?.parse),\n\t\ttransform: filterGlobal(hook?.transform),\n\t\tbeforeHandle: filterGlobal(hook?.beforeHandle),\n\t\tafterHandle: filterGlobal(hook?.afterHandle),\n\t\tonResponse: filterGlobal(hook?.onResponse),\n\t\terror: filterGlobal(hook?.error),\n\t\tmapResponse: filterGlobal(hook?.mapResponse)\n\t} as LocalHook<any, any, any, any, any, any, any>\n}\n\nexport const StatusMap = {\n\tContinue: 100,\n\t'Switching Protocols': 101,\n\tProcessing: 102,\n\t'Early Hints': 103,\n\tOK: 200,\n\tCreated: 201,\n\tAccepted: 202,\n\t'Non-Authoritative Information': 203,\n\t'No Content': 204,\n\t'Reset Content': 205,\n\t'Partial Content': 206,\n\t'Multi-Status': 207,\n\t'Already Reported': 208,\n\t'Multiple Choices': 300,\n\t'Moved Permanently': 301,\n\tFound: 302,\n\t'See Other': 303,\n\t'Not Modified': 304,\n\t'Temporary Redirect': 307,\n\t'Permanent Redirect': 308,\n\t'Bad Request': 400,\n\tUnauthorized: 401,\n\t'Payment Required': 402,\n\tForbidden: 403,\n\t'Not Found': 404,\n\t'Method Not Allowed': 405,\n\t'Not Acceptable': 406,\n\t'Proxy Authentication Required': 407,\n\t'Request Timeout': 408,\n\tConflict: 409,\n\tGone: 410,\n\t'Length Required': 411,\n\t'Precondition Failed': 412,\n\t'Payload Too Large': 413,\n\t'URI Too Long': 414,\n\t'Unsupported Media Type': 415,\n\t'Range Not Satisfiable': 416,\n\t'Expectation Failed': 417,\n\t\"I'm a teapot\": 418,\n\t'Misdirected Request': 421,\n\t'Unprocessable Content': 422,\n\tLocked: 423,\n\t'Failed Dependency': 424,\n\t'Too Early': 425,\n\t'Upgrade Required': 426,\n\t'Precondition Required': 428,\n\t'Too Many Requests': 429,\n\t'Request Header Fields Too Large': 431,\n\t'Unavailable For Legal Reasons': 451,\n\t'Internal Server Error': 500,\n\t'Not Implemented': 501,\n\t'Bad Gateway': 502,\n\t'Service Unavailable': 503,\n\t'Gateway Timeout': 504,\n\t'HTTP Version Not Supported': 505,\n\t'Variant Also Negotiates': 506,\n\t'Insufficient Storage': 507,\n\t'Loop Detected': 508,\n\t'Not Extended': 510,\n\t'Network Authentication Required': 511\n} as const\n\nexport const InvertedStatusMap = Object.fromEntries(\n\tObject.entries(StatusMap).map(([k, v]) => [v, k])\n) as {\n\t[K in keyof StatusMap as StatusMap[K]]: K\n}\n\nexport type StatusMap = typeof StatusMap\nexport type InvertedStatusMap = typeof InvertedStatusMap\n\nfunction removeTrailingEquals(digest: string): string {\n\tlet trimmedDigest = digest\n\twhile (trimmedDigest.endsWith('=')) {\n\t\ttrimmedDigest = trimmedDigest.slice(0, -1)\n\t}\n\treturn trimmedDigest\n}\n\nconst encoder = new TextEncoder()\n\nexport const signCookie = async (val: string, secret: string | null) => {\n\tif (typeof val !== 'string')\n\t\tthrow new TypeError('Cookie value must be provided as a string.')\n\n\tif (secret === null) throw new TypeError('Secret key must be provided.')\n\n\tconst secretKey = await crypto.subtle.importKey(\n\t\t'raw',\n\t\tencoder.encode(secret),\n\t\t{ name: 'HMAC', hash: 'SHA-256' },\n\t\tfalse,\n\t\t['sign']\n\t)\n\tconst hmacBuffer = await crypto.subtle.sign(\n\t\t'HMAC',\n\t\tsecretKey,\n\t\tencoder.encode(val)\n\t)\n\n\treturn (\n\t\tval +\n\t\t'.' +\n\t\tremoveTrailingEquals(Buffer.from(hmacBuffer).toString('base64'))\n\t)\n}\n\nexport const unsignCookie = async (input: string, secret: string | null) => {\n\tif (typeof input !== 'string')\n\t\tthrow new TypeError('Signed cookie string must be provided.')\n\n\tif (null === secret) throw new TypeError('Secret key must be provided.')\n\n\tconst tentativeValue = input.slice(0, input.lastIndexOf('.'))\n\tconst expectedInput = await signCookie(tentativeValue, secret)\n\n\treturn expectedInput === input ? tentativeValue : false\n}\n\nexport const traceBackMacro = (\n\textension: unknown,\n\tproperty: Record<string, unknown>,\n\thooks = property\n) => {\n\tif (!extension || typeof extension !== 'object' || !property) return\n\n\tfor (const [key, value] of Object.entries(property)) {\n\t\tif (key in primitiveHookMap || !(key in extension)) continue\n\n\t\tconst v = extension[\n\t\t\tkey as unknown as keyof typeof extension\n\t\t] as BaseMacro[string]\n\n\t\tif (typeof v === 'function') {\n\t\t\tv(value)\n\t\t} else if (typeof v === 'object')\n\t\t\ttraceBackMacro(v as BaseMacro, value as any, hooks)\n\t}\n}\n\nexport const createMacroManager =\n\t({\n\t\tglobalHook,\n\t\tlocalHook\n\t}: {\n\t\tglobalHook: LifeCycleStore\n\t\tlocalHook: LocalHook<any, any, any, any, any, any, any>\n\t}) =>\n\t(stackName: keyof LifeCycleStore) =>\n\t(\n\t\ttype:\n\t\t\t| {\n\t\t\t\t\tinsert?: 'before' | 'after'\n\t\t\t\t\tstack?: 'global' | 'local'\n\t\t\t }\n\t\t\t| MaybeArray<HookContainer>,\n\t\tfn?: MaybeArray<HookContainer>\n\t) => {\n\t\tif (typeof type === 'function')\n\t\t\ttype = {\n\t\t\t\tfn: type\n\t\t\t}\n\n\t\tif ('fn' in type || Array.isArray(type)) {\n\t\t\tif (!localHook[stackName]) localHook[stackName] = []\n\t\t\tif (typeof localHook[stackName] === 'function')\n\t\t\t\tlocalHook[stackName] = [localHook[stackName]]\n\n\t\t\tif (Array.isArray(type))\n\t\t\t\tlocalHook[stackName] = (\n\t\t\t\t\tlocalHook[stackName] as unknown[]\n\t\t\t\t).concat(type) as any\n\t\t\telse localHook[stackName].push(type)\n\n\t\t\treturn\n\t\t}\n\n\t\tconst { insert = 'after', stack = 'local' } = type\n\n\t\tif (typeof fn === 'function') fn = { fn }\n\n\t\tif (stack === 'global') {\n\t\t\tif (!Array.isArray(fn)) {\n\t\t\t\tif (insert === 'before') {\n\t\t\t\t\t;(globalHook[stackName] as any[]).unshift(fn)\n\t\t\t\t} else {\n\t\t\t\t\t;(globalHook[stackName] as any[]).push(fn)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (insert === 'before') {\n\t\t\t\t\tglobalHook[stackName] = fn.concat(\n\t\t\t\t\t\tglobalHook[stackName] as any\n\t\t\t\t\t) as any\n\t\t\t\t} else {\n\t\t\t\t\tglobalHook[stackName] = (\n\t\t\t\t\t\tglobalHook[stackName] as any[]\n\t\t\t\t\t).concat(fn)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!localHook[stackName]) localHook[stackName] = []\n\t\t\tif (typeof localHook[stackName] === 'function')\n\t\t\t\tlocalHook[stackName] = [localHook[stackName]]\n\n\t\t\tif (!Array.isArray(fn)) {\n\t\t\t\tif (insert === 'before') {\n\t\t\t\t\t;(localHook[stackName] as any[]).unshift(fn)\n\t\t\t\t} else {\n\t\t\t\t\t;(localHook[stackName] as any[]).push(fn)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (insert === 'before') {\n\t\t\t\t\tlocalHook[stackName] = fn.concat(localHook[stackName])\n\t\t\t\t} else {\n\t\t\t\t\tlocalHook[stackName] = localHook[stackName].concat(fn)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\nexport const isNumericString = (message: string): boolean => {\n\tif (message.length < 16)\n\t\treturn message.trim().length !== 0 && !Number.isNaN(Number(message))\n\n\t// if 16 digit but less then 9,007,199,254,740,991 then can be parsed\n\tif (message.length === 16) {\n\t\tconst numVal = Number(message)\n\t\tif (numVal.toString() === message)\n\t\t\treturn message.trim().length !== 0 && !Number.isNaN(numVal)\n\t}\n\n\treturn false\n}\n\nexport class PromiseGroup implements PromiseLike<void> {\n\troot: Promise<any> | null = null\n\tpromises: Promise<any>[] = []\n\n\tconstructor(public onError: (error: any) => void = console.error) {}\n\n\t/**\n\t * The number of promises still being awaited.\n\t */\n\tget size() {\n\t\treturn this.promises.length\n\t}\n\n\t/**\n\t * Add a promise to the group.\n\t * @returns The promise that was added.\n\t */\n\tadd<T>(promise: Promise<T>) {\n\t\tthis.promises.push(promise)\n\t\tthis.root ||= this.drain()\n\t\treturn promise\n\t}\n\n\tprivate async drain() {\n\t\twhile (this.promises.length > 0) {\n\t\t\ttry {\n\t\t\t\tawait this.promises[0]\n\t\t\t} catch (error) {\n\t\t\t\tthis.onError(error)\n\t\t\t}\n\t\t\tthis.promises.shift()\n\t\t}\n\t\tthis.root = null\n\t}\n\n\t// Allow the group to be awaited.\n\tthen<TResult1 = void, TResult2 = never>(\n\t\tonfulfilled?:\n\t\t\t| ((value: void) => TResult1 | PromiseLike<TResult1>)\n\t\t\t| undefined\n\t\t\t| null,\n\t\tonrejected?:\n\t\t\t| ((reason: any) => TResult2 | PromiseLike<TResult2>)\n\t\t\t| undefined\n\t\t\t| null\n\t): PromiseLike<TResult1 | TResult2> {\n\t\treturn (this.root ?? Promise.resolve()).then(onfulfilled, onrejected)\n\t}\n}\n\nexport const fnToContainer = (\n\tfn: MaybeArray<Function | HookContainer>\n): MaybeArray<HookContainer> => {\n\tif (!fn) return fn\n\n\tif (!Array.isArray(fn)) {\n\t\tif (typeof fn === 'function') return { fn }\n\t\telse if ('fn' in fn) return fn\n\t}\n\n\tconst fns = <HookContainer[]>[]\n\tfor (const x of fn) {\n\t\tif (typeof x === 'function') fns.push({ fn: x })\n\t\telse if ('fn' in x) fns.push(x)\n\t}\n\n\treturn fns\n}\n\nexport const localHookToLifeCycleStore = (\n\ta: LocalHook<any, any, any, any, any>\n): LifeCycleStore => {\n\treturn {\n\t\t...a,\n\t\tstart: fnToContainer(a?.start),\n\t\trequest: fnToContainer(a?.request),\n\t\tparse: fnToContainer(a?.parse),\n\t\ttransform: fnToContainer(a?.transform),\n\t\tbeforeHandle: fnToContainer(a?.beforeHandle),\n\t\tafterHandle: fnToContainer(a?.afterHandle),\n\t\tonResponse: fnToContainer(a?.onResponse),\n\t\tmapResponse: fnToContainer(a?.mapResponse),\n\t\ttrace: fnToContainer(a?.trace),\n\t\terror: fnToContainer(a?.error),\n\t\tstop: fnToContainer(a?.stop)\n\t}\n}\n\nexport const lifeCycleToFn = (\n\ta: LifeCycleStore\n): LocalHook<any, any, any, any, any, any, any> => {\n\treturn {\n\t\t...a,\n\t\tstart: a.start?.map((x) => x.fn),\n\t\trequest: a.request?.map((x) => x.fn),\n\t\tparse: a.parse?.map((x) => x.fn),\n\t\ttransform: a.transform?.map((x) => x.fn),\n\t\tbeforeHandle: a.beforeHandle?.map((x) => x.fn),\n\t\tafterHandle: a.afterHandle?.map((x) => x.fn),\n\t\tonResponse: a.onResponse?.map((x) => x.fn),\n\t\tmapResponse: a.mapResponse?.map((x) => x.fn),\n\t\ttrace: a.trace?.map((x) => x.fn),\n\t\terror: a.error?.map((x) => x.fn),\n\t\tstop: a.stop?.map((x) => x.fn)\n\t}\n}\n\nexport const cloneInference = (inference: {\n\tevent: Sucrose.Inference\n\ttrace: Sucrose.TraceInference\n}): {\n\tevent: Sucrose.Inference\n\ttrace: Sucrose.TraceInference\n} => ({\n\tevent: {\n\t\tbody: inference.event.body,\n\t\tcookie: inference.event.cookie,\n\t\theaders: inference.event.headers,\n\t\tqueries: [...inference.event.queries],\n\t\tquery: inference.event.query,\n\t\tset: inference.event.set,\n\t\tunknownQueries: inference.event.unknownQueries\n\t},\n\ttrace: {\n\t\trequest: inference.trace.request,\n\t\tparse: inference.trace.parse,\n\t\ttransform: inference.trace.transform,\n\t\thandle: inference.trace.handle,\n\t\tbeforeHandle: inference.trace.beforeHandle,\n\t\tafterHandle: inference.trace.afterHandle,\n\t\terror: inference.trace.error,\n\t\tcontext: inference.trace.context,\n\t\tstore: inference.trace.store,\n\t\tset: inference.trace.set\n\t}\n})\n\n/**\n *\n * @param url URL to redirect to\n * @param HTTP status code to send,\n */\nexport const redirect = (\n\turl: string,\n\tstatus: 301 | 302 | 303 | 307 | 308 = 301\n) => Response.redirect(url, status)\n\nexport type redirect = typeof redirect\n\nexport const ELYSIA_FORM_DATA = Symbol('ElysiaFormData')\nexport type ELYSIA_FORM_DATA = typeof ELYSIA_FORM_DATA\n\ntype ElysiaFormData<T extends Record<string | number, unknown>> = FormData & {\n\t[ELYSIA_FORM_DATA]: Replace<T, BunFile, File>\n}\n\nexport const form = <const T extends Record<string | number, unknown>>(\n\titems: T\n): ElysiaFormData<T> => {\n\tconst formData = new FormData()\n\n\tfor (const [key, value] of Object.entries(items)) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (const v of value) {\n\t\t\t\tif (value instanceof File)\n\t\t\t\t\tformData.append(key, value, value.name)\n\n\t\t\t\tformData.append(key, v)\n\t\t\t}\n\n\t\t\tcontinue\n\t\t}\n\n\t\tif (value instanceof File) formData.append(key, value, value.name)\n\t\tformData.append(key, value)\n\t}\n\n\treturn formData as any\n}\n",
17
17
  "/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar __toString = Object.prototype.toString\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n * obs-text = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n if (typeof str !== 'string') {\n throw new TypeError('argument str must be a string');\n }\n\n var obj = {}\n var opt = options || {};\n var dec = opt.decode || decode;\n\n var index = 0\n while (index < str.length) {\n var eqIdx = str.indexOf('=', index)\n\n // no more cookie pairs\n if (eqIdx === -1) {\n break\n }\n\n var endIdx = str.indexOf(';', index)\n\n if (endIdx === -1) {\n endIdx = str.length\n } else if (endIdx < eqIdx) {\n // backtrack on prior semicolon\n index = str.lastIndexOf(';', eqIdx - 1) + 1\n continue\n }\n\n var key = str.slice(index, eqIdx).trim()\n\n // only assign once\n if (undefined === obj[key]) {\n var val = str.slice(eqIdx + 1, endIdx).trim()\n\n // quoted values\n if (val.charCodeAt(0) === 0x22) {\n val = val.slice(1, -1)\n }\n\n obj[key] = tryDecode(val, dec);\n }\n\n index = endIdx + 1\n }\n\n return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n * => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n var opt = options || {};\n var enc = opt.encode || encode;\n\n if (typeof enc !== 'function') {\n throw new TypeError('option encode is invalid');\n }\n\n if (!fieldContentRegExp.test(name)) {\n throw new TypeError('argument name is invalid');\n }\n\n var value = enc(val);\n\n if (value && !fieldContentRegExp.test(value)) {\n throw new TypeError('argument val is invalid');\n }\n\n var str = name + '=' + value;\n\n if (null != opt.maxAge) {\n var maxAge = opt.maxAge - 0;\n\n if (isNaN(maxAge) || !isFinite(maxAge)) {\n throw new TypeError('option maxAge is invalid')\n }\n\n str += '; Max-Age=' + Math.floor(maxAge);\n }\n\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n\n str += '; Domain=' + opt.domain;\n }\n\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n\n str += '; Path=' + opt.path;\n }\n\n if (opt.expires) {\n var expires = opt.expires\n\n if (!isDate(expires) || isNaN(expires.valueOf())) {\n throw new TypeError('option expires is invalid');\n }\n\n str += '; Expires=' + expires.toUTCString()\n }\n\n if (opt.httpOnly) {\n str += '; HttpOnly';\n }\n\n if (opt.secure) {\n str += '; Secure';\n }\n\n if (opt.partitioned) {\n str += '; Partitioned'\n }\n\n if (opt.priority) {\n var priority = typeof opt.priority === 'string'\n ? opt.priority.toLowerCase()\n : opt.priority\n\n switch (priority) {\n case 'low':\n str += '; Priority=Low'\n break\n case 'medium':\n str += '; Priority=Medium'\n break\n case 'high':\n str += '; Priority=High'\n break\n default:\n throw new TypeError('option priority is invalid')\n }\n }\n\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string'\n ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n\n return str;\n}\n\n/**\n * URL-decode string value. Optimized to skip native call when no %.\n *\n * @param {string} str\n * @returns {string}\n */\n\nfunction decode (str) {\n return str.indexOf('%') !== -1\n ? decodeURIComponent(str)\n : str\n}\n\n/**\n * URL-encode value.\n *\n * @param {string} val\n * @returns {string}\n */\n\nfunction encode (val) {\n return encodeURIComponent(val)\n}\n\n/**\n * Determine if value is a Date.\n *\n * @param {*} val\n * @private\n */\n\nfunction isDate (val) {\n return __toString.call(val) === '[object Date]' ||\n val instanceof Date\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n try {\n return decode(str);\n } catch (e) {\n return str;\n }\n}\n",
18
18
  "import { parse } from 'cookie'\n\n// @ts-ignore\nimport decodeURIComponent from 'fast-decode-uri-component'\n\nimport { unsignCookie, isNumericString } from './utils'\nimport { InvalidCookieSignature } from './error'\n\nimport type { Context } from './context'\nimport type { Prettify } from './types'\n\nexport interface CookieOptions {\n\t/**\n\t * Specifies the value for the {@link https://tools.ietf.org/html/rfc6265#section-5.2.3|Domain Set-Cookie attribute}. By default, no\n\t * domain is set, and most clients will consider the cookie to apply to only\n\t * the current domain.\n\t */\n\tdomain?: string | undefined\n\n\t/**\n\t * Specifies the `Date` object to be the value for the {@link https://tools.ietf.org/html/rfc6265#section-5.2.1|`Expires` `Set-Cookie` attribute}. By default,\n\t * no expiration is set, and most clients will consider this a \"non-persistent cookie\" and will delete\n\t * it on a condition like exiting a web browser application.\n\t *\n\t * *Note* the {@link https://tools.ietf.org/html/rfc6265#section-5.3|cookie storage model specification}\n\t * states that if both `expires` and `maxAge` are set, then `maxAge` takes precedence, but it is\n\t * possible not all clients by obey this, so if both are set, they should\n\t * point to the same date and time.\n\t */\n\texpires?: Date | undefined\n\t/**\n\t * Specifies the boolean value for the {@link https://tools.ietf.org/html/rfc6265#section-5.2.6|`HttpOnly` `Set-Cookie` attribute}.\n\t * When truthy, the `HttpOnly` attribute is set, otherwise it is not. By\n\t * default, the `HttpOnly` attribute is not set.\n\t *\n\t * *Note* be careful when setting this to true, as compliant clients will\n\t * not allow client-side JavaScript to see the cookie in `document.cookie`.\n\t */\n\thttpOnly?: boolean | undefined\n\t/**\n\t * Specifies the number (in seconds) to be the value for the `Max-Age`\n\t * `Set-Cookie` attribute. The given number will be converted to an integer\n\t * by rounding down. By default, no maximum age is set.\n\t *\n\t * *Note* the {@link https://tools.ietf.org/html/rfc6265#section-5.3|cookie storage model specification}\n\t * states that if both `expires` and `maxAge` are set, then `maxAge` takes precedence, but it is\n\t * possible not all clients by obey this, so if both are set, they should\n\t * point to the same date and time.\n\t */\n\tmaxAge?: number | undefined\n\t/**\n\t * Specifies the value for the {@link https://tools.ietf.org/html/rfc6265#section-5.2.4|`Path` `Set-Cookie` attribute}.\n\t * By default, the path is considered the \"default path\".\n\t */\n\tpath?: string | undefined\n\t/**\n\t * Specifies the `string` to be the value for the [`Priority` `Set-Cookie` attribute][rfc-west-cookie-priority-00-4.1].\n\t *\n\t * - `'low'` will set the `Priority` attribute to `Low`.\n\t * - `'medium'` will set the `Priority` attribute to `Medium`, the default priority when not set.\n\t * - `'high'` will set the `Priority` attribute to `High`.\n\t *\n\t * More information about the different priority levels can be found in\n\t * [the specification][rfc-west-cookie-priority-00-4.1].\n\t *\n\t * **note** This is an attribute that has not yet been fully standardized, and may change in the future.\n\t * This also means many clients may ignore this attribute until they understand it.\n\t */\n\tpriority?: 'low' | 'medium' | 'high' | undefined\n\t/**\n\t * Specifies the `boolean` value for the [`Partitioned` `Set-Cookie`](rfc-cutler-httpbis-partitioned-cookies)\n\t * attribute. When truthy, the `Partitioned` attribute is set, otherwise it is not. By default, the\n\t * `Partitioned` attribute is not set.\n\t *\n\t * **note** This is an attribute that has not yet been fully standardized, and may change in the future.\n\t * This also means many clients may ignore this attribute until they understand it.\n\t *\n\t * More information about can be found in [the proposal](https://github.com/privacycg/CHIPS)\n\t */\n\tpartitioned?: boolean | undefined\n\t/**\n\t * Specifies the boolean or string to be the value for the {@link https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-4.1.2.7|`SameSite` `Set-Cookie` attribute}.\n\t *\n\t * - `true` will set the `SameSite` attribute to `Strict` for strict same\n\t * site enforcement.\n\t * - `false` will not set the `SameSite` attribute.\n\t * - `'lax'` will set the `SameSite` attribute to Lax for lax same site\n\t * enforcement.\n\t * - `'strict'` will set the `SameSite` attribute to Strict for strict same\n\t * site enforcement.\n\t * - `'none'` will set the SameSite attribute to None for an explicit\n\t * cross-site cookie.\n\t *\n\t * More information about the different enforcement levels can be found in {@link https://tools.ietf.org/html/draft-ietf-httpbis-rfc6265bis-03#section-4.1.2.7|the specification}.\n\t *\n\t * *note* This is an attribute that has not yet been fully standardized, and may change in the future. This also means many clients may ignore this attribute until they understand it.\n\t */\n\tsameSite?: true | false | 'lax' | 'strict' | 'none' | undefined\n\t/**\n\t * Specifies the boolean value for the {@link https://tools.ietf.org/html/rfc6265#section-5.2.5|`Secure` `Set-Cookie` attribute}. When truthy, the\n\t * `Secure` attribute is set, otherwise it is not. By default, the `Secure` attribute is not set.\n\t *\n\t * *Note* be careful when setting this to `true`, as compliant clients will\n\t * not send the cookie back to the server in the future if the browser does\n\t * not have an HTTPS connection.\n\t */\n\tsecure?: boolean | undefined\n\n\t/**\n\t * Secret key for signing cookie\n\t *\n\t * If array is passed, will use Key Rotation.\n\t *\n\t * Key rotation is when an encryption key is retired\n\t * and replaced by generating a new cryptographic key.\n\t */\n\tsecrets?: string | string[]\n}\n\nexport type ElysiaCookie = Prettify<\n\tCookieOptions & {\n\t\tvalue?: unknown\n\t}\n>\n\ntype Updater<T> = T | ((value: T) => T)\n\nexport class Cookie<T> implements ElysiaCookie {\n\tconstructor(\n\t\tprivate name: string,\n\t\tprivate jar: Record<string, ElysiaCookie>,\n\t\tprivate initial: Partial<ElysiaCookie> = {}\n\t) {}\n\n\tget cookie() {\n\t\tif (!(this.name in this.jar)) return this.initial\n\n\t\treturn this.jar[this.name]\n\t}\n\n\tset cookie(jar: ElysiaCookie) {\n\t\tif (!(this.name in this.jar)) this.jar[this.name] = this.initial\n\n\t\tthis.jar[this.name] = jar\n\t}\n\n\tget value(): T {\n\t\treturn this.cookie.value as T\n\t}\n\n\tset value(value: T) {\n\t\tif (!(this.name in this.jar)) this.jar[this.name] = this.initial\n\n\t\tthis.jar[this.name].value = value\n\t}\n\n\tget expires() {\n\t\treturn this.cookie.expires\n\t}\n\n\tset expires(expires) {\n\t\tthis.cookie.expires = expires\n\t}\n\n\tget maxAge() {\n\t\treturn this.cookie.maxAge\n\t}\n\n\tset maxAge(maxAge) {\n\t\tthis.cookie.maxAge = maxAge\n\t}\n\n\tget domain() {\n\t\treturn this.cookie.domain\n\t}\n\n\tset domain(domain) {\n\t\tthis.cookie.domain = domain\n\t}\n\n\tget path() {\n\t\treturn this.cookie.path\n\t}\n\n\tset path(path) {\n\t\tthis.cookie.path = path\n\t}\n\n\tget secure() {\n\t\treturn this.cookie.secure\n\t}\n\n\tset secure(secure) {\n\t\tthis.cookie.secure = secure\n\t}\n\n\tget httpOnly() {\n\t\treturn this.cookie.httpOnly\n\t}\n\n\tset httpOnly(httpOnly) {\n\t\tthis.cookie.httpOnly = httpOnly\n\t}\n\n\tget sameSite() {\n\t\treturn this.cookie.sameSite\n\t}\n\n\tset sameSite(sameSite) {\n\t\tthis.cookie.sameSite = sameSite\n\t}\n\n\tget priority() {\n\t\treturn this.cookie.priority\n\t}\n\n\tset priority(priority) {\n\t\tthis.cookie.priority = priority\n\t}\n\n\tget partitioned() {\n\t\treturn this.cookie.partitioned\n\t}\n\n\tset partitioned(partitioned) {\n\t\tthis.cookie.partitioned = partitioned\n\t}\n\n\tget secrets() {\n\t\treturn this.cookie.secrets\n\t}\n\n\tset secrets(secrets) {\n\t\tthis.cookie.secrets = secrets\n\t}\n\n\tupdate(config: Updater<Partial<ElysiaCookie>>) {\n\t\tthis.cookie = Object.assign(\n\t\t\tthis.cookie,\n\t\t\ttypeof config === 'function' ? config(this.cookie) : config\n\t\t)\n\n\t\treturn this\n\t}\n\n\tset(config: Updater<Partial<ElysiaCookie>>) {\n\t\tthis.cookie = Object.assign(\n\t\t\t{\n\t\t\t\t...this.initial,\n\t\t\t\tvalue: this.value\n\t\t\t},\n\t\t\ttypeof config === 'function' ? config(this.cookie) : config\n\t\t)\n\n\t\treturn this\n\t}\n\n\tremove() {\n\t\tif (this.value === undefined) return\n\n\t\tthis.set({\n\t\t\texpires: new Date(0),\n\t\t\tmaxAge: 0,\n\t\t\tvalue: ''\n\t\t})\n\n\t\treturn this\n\t}\n\n\ttoString() {\n\t\treturn typeof this.value === 'object'\n\t\t\t? JSON.stringify(this.value)\n\t\t\t: this.value?.toString() ?? ''\n\t}\n}\n\nexport const createCookieJar = (\n\tset: Context['set'],\n\tstore: Record<string, ElysiaCookie>,\n\tinitial?: Partial<ElysiaCookie>\n): Record<string, Cookie<unknown>> => {\n\tif (!set.cookie) set.cookie = {}\n\n\treturn new Proxy(store, {\n\t\tget(_, key: string) {\n\t\t\tif (key in store)\n\t\t\t\treturn new Cookie(\n\t\t\t\t\tkey,\n\t\t\t\t\tset.cookie as Record<string, ElysiaCookie>,\n\t\t\t\t\tObject.assign({}, initial ?? {}, store[key])\n\t\t\t\t)\n\n\t\t\treturn new Cookie(\n\t\t\t\tkey,\n\t\t\t\tset.cookie as Record<string, ElysiaCookie>,\n\t\t\t\tObject.assign({}, initial)\n\t\t\t)\n\t\t}\n\t}) as Record<string, Cookie<unknown>>\n}\n\nexport const parseCookie = async (\n\tset: Context['set'],\n\tcookieString?: string | null,\n\t{\n\t\tsecrets,\n\t\tsign,\n\t\t...initial\n\t}: CookieOptions & {\n\t\tsign?: true | string | string[]\n\t} = {}\n) => {\n\tif (!cookieString) return createCookieJar(set, {}, initial)\n\n\tconst isStringKey = typeof secrets === 'string'\n\tif (sign && sign !== true && !Array.isArray(sign)) sign = [sign]\n\n\tconst jar: Record<string, ElysiaCookie> = {}\n\n\tconst cookies = parse(cookieString)\n\tfor (const [name, v] of Object.entries(cookies)) {\n\t\tlet value = decodeURIComponent(v)\n\n\t\tif (sign === true || sign?.includes(name)) {\n\t\t\tif (!secrets)\n\t\t\t\tthrow new Error('No secret is provided to cookie plugin')\n\n\t\t\tif (isStringKey) {\n\t\t\t\tconst temp = await unsignCookie(value as string, secrets)\n\t\t\t\tif (temp === false) throw new InvalidCookieSignature(name)\n\n\t\t\t\tvalue = temp\n\t\t\t} else {\n\t\t\t\tlet decoded = true\n\t\t\t\tfor (let i = 0; i < secrets.length; i++) {\n\t\t\t\t\tconst temp = await unsignCookie(value as string, secrets[i])\n\n\t\t\t\t\tif (temp !== false) {\n\t\t\t\t\t\tdecoded = true\n\t\t\t\t\t\tvalue = temp\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!decoded) throw new InvalidCookieSignature(name)\n\t\t\t}\n\t\t}\n\n\t\tif (value == null) {\n\t\t\tjar[name] = {\n\t\t\t\tvalue: v\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tconst start = value.charCodeAt(0)\n\t\tif (start === 123 || start === 91)\n\t\t\ttry {\n\t\t\t\tjar[name] = {\n\t\t\t\t\tvalue: JSON.parse(value)\n\t\t\t\t}\n\n\t\t\t\tcontinue\n\t\t\t} catch {\n\t\t\t\t// ignore\n\t\t\t}\n\n\t\tif (isNumericString(value)) {\n\t\t\tjar[name] = {\n\t\t\t\tvalue: parseInt(value)\n\t\t\t}\n\n\t\t\tcontinue\n\t\t}\n\n\t\tif (value === 'true') {\n\t\t\tjar[name] = {\n\t\t\t\tvalue: true\n\t\t\t}\n\n\t\t\tcontinue\n\t\t}\n\n\t\tif (value === 'false') {\n\t\t\tjar[name] = {\n\t\t\t\tvalue: false\n\t\t\t}\n\n\t\t\tcontinue\n\t\t}\n\n\t\tjar[name] = {\n\t\t\tvalue\n\t\t}\n\t}\n\n\treturn createCookieJar(set, jar, initial)\n}\n",
19
19
  "/* eslint-disable sonarjs/no-nested-switch */\n/* eslint-disable sonarjs/no-duplicate-string */\nimport { serialize } from 'cookie'\nimport { StatusMap, form } from './utils'\n\nimport { Cookie } from './cookies'\nimport { ELYSIA_RESPONSE } from './error'\n\nimport type { Context } from './context'\n\nconst hasHeaderShorthand = 'toJSON' in new Headers()\n\ntype SetResponse = Omit<Context['set'], 'status'> & {\n\tstatus: number\n}\n\nexport const isNotEmpty = (obj?: Object) => {\n\tif (!obj) return false\n\n\tfor (const x in obj) return true\n\n\treturn false\n}\n/** */\n\nconst handleFile = (response: File | Blob, set?: Context['set']) => {\n\tconst size = response.size\n\n\tif (\n\t\t(!set && size) ||\n\t\t(size &&\n\t\t\tset &&\n\t\t\tset.status !== 206 &&\n\t\t\tset.status !== 304 &&\n\t\t\tset.status !== 412 &&\n\t\t\tset.status !== 416)\n\t) {\n\t\tif (set) {\n\t\t\tif (set.headers instanceof Headers)\n\t\t\t\tif (hasHeaderShorthand)\n\t\t\t\t\tset.headers = (set.headers as unknown as Headers).toJSON()\n\t\t\t\telse\n\t\t\t\t\tfor (const [key, value] of set.headers.entries())\n\t\t\t\t\t\tif (key in set.headers) set.headers[key] = value\n\n\t\t\treturn new Response(response as Blob, {\n\t\t\t\tstatus: set.status as number,\n\t\t\t\theaders: Object.assign(\n\t\t\t\t\t{\n\t\t\t\t\t\t'accept-ranges': 'bytes',\n\t\t\t\t\t\t'content-range': `bytes 0-${size - 1}/${size}`\n\t\t\t\t\t},\n\t\t\t\t\tset.headers\n\t\t\t\t)\n\t\t\t})\n\t\t}\n\n\t\treturn new Response(response as Blob, {\n\t\t\theaders: {\n\t\t\t\t'accept-ranges': 'bytes',\n\t\t\t\t'content-range': `bytes 0-${size - 1}/${size}`\n\t\t\t}\n\t\t})\n\t}\n\n\treturn new Response(response as Blob)\n}\n\nexport const parseSetCookies = (headers: Headers, setCookie: string[]) => {\n\tif (!headers) return headers\n\n\theaders.delete('Set-Cookie')\n\n\tfor (let i = 0; i < setCookie.length; i++) {\n\t\tconst index = setCookie[i].indexOf('=')\n\n\t\theaders.append(\n\t\t\t'Set-Cookie',\n\t\t\t`${setCookie[i].slice(0, index)}=${\n\t\t\t\tsetCookie[i].slice(index + 1) || ''\n\t\t\t}`\n\t\t)\n\t}\n\n\treturn headers\n}\n\nexport const serializeCookie = (cookies: Context['set']['cookie']) => {\n\tif (!cookies || !isNotEmpty(cookies)) return undefined\n\n\tconst set: string[] = []\n\n\tfor (const [key, property] of Object.entries(cookies)) {\n\t\tif (!key || !property) continue\n\n\t\tconst value = property.value\n\t\tif (value === undefined || value === null) continue\n\n\t\tset.push(\n\t\t\tserialize(\n\t\t\t\tkey,\n\t\t\t\ttypeof value === 'object' ? JSON.stringify(value) : value + '',\n\t\t\t\tproperty\n\t\t\t)\n\t\t)\n\t}\n\n\tif (set.length === 0) return undefined\n\tif (set.length === 1) return set[0]\n\n\treturn set\n}\n\nexport const mapResponse = (\n\tresponse: unknown,\n\tset: Context['set'],\n\trequest?: Request\n): Response => {\n\t// @ts-ignore\n\tif (response?.$passthrough)\n\t\t// @ts-ignore\n\t\tresponse = response?.[response.$passthrough]\n\n\t// @ts-ignore\n\tif (response?.[ELYSIA_RESPONSE]) {\n\t\t// @ts-ignore\n\t\tset.status = response[ELYSIA_RESPONSE]\n\t\t// @ts-ignore\n\t\tresponse = response.response\n\t}\n\n\tif (\n\t\tisNotEmpty(set.headers) ||\n\t\tset.status !== 200 ||\n\t\tset.redirect ||\n\t\tset.cookie\n\t) {\n\t\tif (typeof set.status === 'string') set.status = StatusMap[set.status]\n\n\t\tif (set.redirect) {\n\t\t\tset.headers.Location = set.redirect\n\t\t\tif (!set.status || set.status < 300 || set.status >= 400)\n\t\t\t\tset.status = 302\n\t\t}\n\n\t\tif (set.cookie && isNotEmpty(set.cookie))\n\t\t\tset.headers['Set-Cookie'] = serializeCookie(set.cookie)\n\n\t\tif (\n\t\t\tset.headers['Set-Cookie'] &&\n\t\t\tArray.isArray(set.headers['Set-Cookie'])\n\t\t) {\n\t\t\tset.headers = parseSetCookies(\n\t\t\t\tnew Headers(set.headers) as Headers,\n\t\t\t\tset.headers['Set-Cookie']\n\t\t\t) as any\n\t\t}\n\n\t\tswitch (response?.constructor?.name) {\n\t\t\tcase 'String':\n\t\t\t\treturn new Response(response as string, set as SetResponse)\n\n\t\t\tcase 'Blob':\n\t\t\t\treturn handleFile(response as File | Blob, set)\n\n\t\t\tcase 'Array':\n\t\t\t\treturn Response.json(response, set as SetResponse)\n\n\t\t\tcase 'Object':\n\t\t\t\tfor (const value in Object.values(response as Object)) {\n\t\t\t\t\tswitch (value?.constructor?.name) {\n\t\t\t\t\t\tcase 'Blob':\n\t\t\t\t\t\tcase 'File':\n\t\t\t\t\t\tcase 'ArrayBuffer':\n\t\t\t\t\t\tcase 'FileRef':\n\t\t\t\t\t\t\treturn new Response(form(response as any))\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn Response.json(response, set as SetResponse)\n\n\t\t\tcase 'ReadableStream':\n\t\t\t\tif (\n\t\t\t\t\t!set.headers['content-type']?.startsWith(\n\t\t\t\t\t\t'text/event-stream'\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tset.headers['content-type'] =\n\t\t\t\t\t\t'text/event-stream; charset=utf-8'\n\n\t\t\t\trequest?.signal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t{\n\t\t\t\t\t\thandleEvent() {\n\t\t\t\t\t\t\tif (!request?.signal.aborted)\n\t\t\t\t\t\t\t\t(response as ReadableStream).cancel(request)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tonce: true\n\t\t\t\t\t}\n\t\t\t\t)\n\n\t\t\t\treturn new Response(\n\t\t\t\t\tresponse as ReadableStream,\n\t\t\t\t\tset as SetResponse\n\t\t\t\t)\n\n\t\t\tcase undefined:\n\t\t\t\tif (!response) return new Response('', set as SetResponse)\n\n\t\t\t\treturn Response.json(response, set as SetResponse)\n\n\t\t\tcase 'Response':\n\t\t\t\tlet isCookieSet = false\n\n\t\t\t\tif (set.headers instanceof Headers)\n\t\t\t\t\tfor (const key of set.headers.keys()) {\n\t\t\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\t\t\tif (isCookieSet) continue\n\n\t\t\t\t\t\t\tisCookieSet = true\n\n\t\t\t\t\t\t\tfor (const cookie of set.headers.getSetCookie()) {\n\t\t\t\t\t\t\t\t;(response as Response).headers.append(\n\t\t\t\t\t\t\t\t\t'set-cookie',\n\t\t\t\t\t\t\t\t\tcookie\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\t(response as Response).headers.append(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tset.headers?.get(key) ?? ''\n\t\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tfor (const key in set.headers)\n\t\t\t\t\t\t(response as Response).headers.append(\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tset.headers[key]\n\t\t\t\t\t\t)\n\n\t\t\t\tif ((response as Response).status !== set.status)\n\t\t\t\t\tset.status = (response as Response).status\n\n\t\t\t\treturn response as Response\n\n\t\t\tcase 'Error':\n\t\t\t\treturn errorToResponse(response as Error, set)\n\n\t\t\tcase 'Promise':\n\t\t\t\treturn (response as Promise<any>).then((x) =>\n\t\t\t\t\tmapResponse(x, set)\n\t\t\t\t) as any\n\n\t\t\tcase 'Function':\n\t\t\t\treturn mapResponse((response as Function)(), set)\n\n\t\t\tcase 'Number':\n\t\t\tcase 'Boolean':\n\t\t\t\treturn new Response(\n\t\t\t\t\t(response as number | boolean).toString(),\n\t\t\t\t\tset as SetResponse\n\t\t\t\t)\n\n\t\t\tcase 'Cookie':\n\t\t\t\tif (response instanceof Cookie)\n\t\t\t\t\treturn new Response(response.value, set as SetResponse)\n\n\t\t\t\treturn new Response(response?.toString(), set as SetResponse)\n\n\t\t\tcase 'FormData':\n\t\t\t\treturn new Response(response as FormData, set as SetResponse)\n\n\t\t\tdefault:\n\t\t\t\tif (response instanceof Response) {\n\t\t\t\t\tlet isCookieSet = false\n\n\t\t\t\t\tif (set.headers instanceof Headers)\n\t\t\t\t\t\tfor (const key of set.headers.keys()) {\n\t\t\t\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\t\t\t\tif (isCookieSet) continue\n\n\t\t\t\t\t\t\t\tisCookieSet = true\n\n\t\t\t\t\t\t\t\tfor (const cookie of set.headers.getSetCookie()) {\n\t\t\t\t\t\t\t\t\t;(response as Response).headers.append(\n\t\t\t\t\t\t\t\t\t\t'set-cookie',\n\t\t\t\t\t\t\t\t\t\tcookie\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else\n\t\t\t\t\t\t\t\t(response as Response).headers.append(\n\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\tset.headers?.get(key) ?? ''\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tfor (const key in set.headers)\n\t\t\t\t\t\t\t(response as Response).headers.append(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tset.headers[key]\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\tif (hasHeaderShorthand)\n\t\t\t\t\t\tset.headers = (\n\t\t\t\t\t\t\t(response as Response).headers as Headers\n\t\t\t\t\t\t).toJSON()\n\t\t\t\t\telse\n\t\t\t\t\t\tfor (const [key, value] of (\n\t\t\t\t\t\t\tresponse as Response\n\t\t\t\t\t\t).headers.entries())\n\t\t\t\t\t\t\tif (key in set.headers) set.headers[key] = value\n\n\t\t\t\t\treturn response as Response\n\t\t\t\t}\n\n\t\t\t\tif (response instanceof Promise)\n\t\t\t\t\treturn response.then((x) => mapResponse(x, set)) as any\n\n\t\t\t\tif (response instanceof Error)\n\t\t\t\t\treturn errorToResponse(response as Error, set)\n\n\t\t\t\tif ('toResponse' in (response as any))\n\t\t\t\t\treturn mapResponse((response as any).toResponse(), set)\n\n\t\t\t\tif ('charCodeAt' in (response as any)) {\n\t\t\t\t\tconst code = (response as any).charCodeAt(0)\n\n\t\t\t\t\tif (code === 123 || code === 91) {\n\t\t\t\t\t\tif (!set.headers['Content-Type'])\n\t\t\t\t\t\t\tset.headers['Content-Type'] = 'application/json'\n\n\t\t\t\t\t\treturn new Response(\n\t\t\t\t\t\t\tJSON.stringify(response),\n\t\t\t\t\t\t\tset as SetResponse\n\t\t\t\t\t\t) as any\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn new Response(response as any, set as SetResponse)\n\t\t}\n\t} else\n\t\tswitch (response?.constructor?.name) {\n\t\t\tcase 'String':\n\t\t\t\treturn new Response(response as string)\n\n\t\t\tcase 'Blob':\n\t\t\t\treturn handleFile(response as File | Blob, set)\n\n\t\t\tcase 'Array':\n\t\t\t\treturn Response.json(response)\n\n\t\t\tcase 'Object':\n\t\t\t\tfor (const value in Object.values(response as Object)) {\n\t\t\t\t\tswitch (value?.constructor?.name) {\n\t\t\t\t\t\tcase 'Blob':\n\t\t\t\t\t\tcase 'File':\n\t\t\t\t\t\tcase 'ArrayBuffer':\n\t\t\t\t\t\tcase 'FileRef':\n\t\t\t\t\t\t\treturn new Response(\n\t\t\t\t\t\t\t\tform(response as any),\n\t\t\t\t\t\t\t\tset as SetResponse\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn Response.json(response, set as SetResponse)\n\n\t\t\tcase 'ReadableStream':\n\t\t\t\trequest?.signal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t{\n\t\t\t\t\t\thandleEvent() {\n\t\t\t\t\t\t\tif (!request?.signal.aborted)\n\t\t\t\t\t\t\t\t(response as ReadableStream).cancel(request)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tonce: true\n\t\t\t\t\t}\n\t\t\t\t)\n\n\t\t\t\treturn new Response(response as ReadableStream, {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'text/event-stream; charset=utf-8'\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\tcase undefined:\n\t\t\t\tif (!response) return new Response('')\n\n\t\t\t\treturn new Response(JSON.stringify(response), {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type': 'application/json'\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\tcase 'Response':\n\t\t\t\treturn response as Response\n\n\t\t\tcase 'Error':\n\t\t\t\treturn errorToResponse(response as Error, set)\n\n\t\t\tcase 'Promise':\n\t\t\t\t// @ts-ignore\n\t\t\t\treturn (response as any as Promise<unknown>).then((x) => {\n\t\t\t\t\tconst r = mapCompactResponse(x)\n\n\t\t\t\t\tif (r !== undefined) return r\n\n\t\t\t\t\treturn new Response('')\n\t\t\t\t})\n\n\t\t\t// ? Maybe response or Blob\n\t\t\tcase 'Function':\n\t\t\t\treturn mapCompactResponse((response as Function)())\n\n\t\t\tcase 'Number':\n\t\t\tcase 'Boolean':\n\t\t\t\treturn new Response((response as number | boolean).toString())\n\n\t\t\tcase 'Cookie':\n\t\t\t\tif (response instanceof Cookie)\n\t\t\t\t\treturn new Response(response.value, set as SetResponse)\n\n\t\t\t\treturn new Response(response?.toString(), set as SetResponse)\n\n\t\t\tcase 'FormData':\n\t\t\t\treturn new Response(response as FormData, set as SetResponse)\n\n\t\t\tdefault:\n\t\t\t\tif (response instanceof Response)\n\t\t\t\t\treturn new Response(response.body, {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Content-Type': 'application/json'\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\tif (response instanceof Promise)\n\t\t\t\t\treturn response.then((x) => mapResponse(x, set)) as any\n\n\t\t\t\tif (response instanceof Error)\n\t\t\t\t\treturn errorToResponse(response as Error, set)\n\n\t\t\t\tif ('toResponse' in (response as any))\n\t\t\t\t\treturn mapResponse((response as any).toResponse(), set)\n\n\t\t\t\tif ('charCodeAt' in (response as any)) {\n\t\t\t\t\tconst code = (response as any).charCodeAt(0)\n\n\t\t\t\t\tif (code === 123 || code === 91) {\n\t\t\t\t\t\tif (!set.headers['Content-Type'])\n\t\t\t\t\t\t\tset.headers['Content-Type'] = 'application/json'\n\n\t\t\t\t\t\treturn new Response(\n\t\t\t\t\t\t\tJSON.stringify(response),\n\t\t\t\t\t\t\tset as SetResponse\n\t\t\t\t\t\t) as any\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn new Response(response as any)\n\t\t}\n}\n\nexport const mapEarlyResponse = (\n\tresponse: unknown,\n\tset: Context['set'],\n\trequest?: Request\n): Response | undefined => {\n\tif (response === undefined || response === null) return\n\n\t// @ts-ignore\n\tif (response?.$passthrough)\n\t\t// @ts-ignore\n\t\tresponse = response?.[response.$passthrough]\n\n\t// @ts-ignore\n\tif (response?.[ELYSIA_RESPONSE]) {\n\t\t// @ts-ignore\n\t\tset.status = response[ELYSIA_RESPONSE]\n\t\t// @ts-ignore\n\t\tresponse = response.response\n\t}\n\n\tif (\n\t\tisNotEmpty(set.headers) ||\n\t\tset.status !== 200 ||\n\t\tset.redirect ||\n\t\tset.cookie\n\t) {\n\t\tif (typeof set.status === 'string') set.status = StatusMap[set.status]\n\n\t\tif (set.redirect) {\n\t\t\tset.headers.Location = set.redirect\n\n\t\t\tif (!set.status || set.status < 300 || set.status >= 400)\n\t\t\t\tset.status = 302\n\t\t}\n\n\t\tif (set.cookie && isNotEmpty(set.cookie))\n\t\t\tset.headers['Set-Cookie'] = serializeCookie(set.cookie)\n\n\t\tif (\n\t\t\tset.headers['Set-Cookie'] &&\n\t\t\tArray.isArray(set.headers['Set-Cookie'])\n\t\t)\n\t\t\tset.headers = parseSetCookies(\n\t\t\t\tnew Headers(set.headers) as Headers,\n\t\t\t\tset.headers['Set-Cookie']\n\t\t\t) as any\n\n\t\tswitch (response?.constructor?.name) {\n\t\t\tcase 'String':\n\t\t\t\treturn new Response(response as string, set as SetResponse)\n\n\t\t\tcase 'Blob':\n\t\t\t\treturn handleFile(response as File | Blob, set)\n\n\t\t\tcase 'Array':\n\t\t\t\treturn Response.json(response, set as SetResponse)\n\n\t\t\tcase 'Object':\n\t\t\t\tfor (const value in Object.values(response as Object)) {\n\t\t\t\t\tswitch (value?.constructor?.name) {\n\t\t\t\t\t\tcase 'Blob':\n\t\t\t\t\t\tcase 'File':\n\t\t\t\t\t\tcase 'ArrayBuffer':\n\t\t\t\t\t\tcase 'FileRef':\n\t\t\t\t\t\t\treturn new Response(\n\t\t\t\t\t\t\t\tform(response as any),\n\t\t\t\t\t\t\t\tset as SetResponse\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn Response.json(response, set as SetResponse)\n\n\t\t\tcase 'ReadableStream':\n\t\t\t\tif (\n\t\t\t\t\t!set.headers['content-type']?.startsWith(\n\t\t\t\t\t\t'text/event-stream'\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t\tset.headers['content-type'] =\n\t\t\t\t\t\t'text/event-stream; charset=utf-8'\n\n\t\t\t\trequest?.signal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t{\n\t\t\t\t\t\thandleEvent() {\n\t\t\t\t\t\t\tif (!request?.signal.aborted)\n\t\t\t\t\t\t\t\t(response as ReadableStream).cancel(request)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tonce: true\n\t\t\t\t\t}\n\t\t\t\t)\n\n\t\t\t\treturn new Response(\n\t\t\t\t\tresponse as ReadableStream,\n\t\t\t\t\tset as SetResponse\n\t\t\t\t)\n\n\t\t\tcase undefined:\n\t\t\t\tif (!response) return\n\n\t\t\t\treturn Response.json(response, set as SetResponse)\n\n\t\t\tcase 'Response':\n\t\t\t\tlet isCookieSet = false\n\n\t\t\t\tif (set.headers instanceof Headers)\n\t\t\t\t\tfor (const key of set.headers.keys()) {\n\t\t\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\t\t\tif (isCookieSet) continue\n\n\t\t\t\t\t\t\tisCookieSet = true\n\n\t\t\t\t\t\t\tfor (const cookie of set.headers.getSetCookie()) {\n\t\t\t\t\t\t\t\t;(response as Response).headers.append(\n\t\t\t\t\t\t\t\t\t'set-cookie',\n\t\t\t\t\t\t\t\t\tcookie\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\t(response as Response).headers.append(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tset.headers?.get(key) ?? ''\n\t\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tfor (const key in set.headers)\n\t\t\t\t\t\t(response as Response).headers.append(\n\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\tset.headers[key]\n\t\t\t\t\t\t)\n\n\t\t\t\tif ((response as Response).status !== set.status)\n\t\t\t\t\tset.status = (response as Response).status\n\n\t\t\t\treturn response as Response\n\n\t\t\tcase 'Promise':\n\t\t\t\t// @ts-ignore\n\t\t\t\treturn (response as Promise<unknown>).then((x) => {\n\t\t\t\t\tconst r = mapEarlyResponse(x, set)\n\t\t\t\t\tif (r !== undefined) return r\n\t\t\t\t})\n\n\t\t\tcase 'Error':\n\t\t\t\treturn errorToResponse(response as Error, set)\n\n\t\t\tcase 'Function':\n\t\t\t\treturn mapEarlyResponse((response as Function)(), set)\n\n\t\t\tcase 'Number':\n\t\t\tcase 'Boolean':\n\t\t\t\treturn new Response(\n\t\t\t\t\t(response as number | boolean).toString(),\n\t\t\t\t\tset as SetResponse\n\t\t\t\t)\n\n\t\t\tcase 'FormData':\n\t\t\t\treturn new Response(response as FormData)\n\n\t\t\tcase 'Cookie':\n\t\t\t\tif (response instanceof Cookie)\n\t\t\t\t\treturn new Response(response.value, set as SetResponse)\n\n\t\t\t\treturn new Response(response?.toString(), set as SetResponse)\n\n\t\t\tdefault:\n\t\t\t\tif (response instanceof Response) {\n\t\t\t\t\tlet isCookieSet = false\n\n\t\t\t\t\tif (set.headers instanceof Headers)\n\t\t\t\t\t\tfor (const key of set.headers.keys()) {\n\t\t\t\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\t\t\t\tif (isCookieSet) continue\n\n\t\t\t\t\t\t\t\tisCookieSet = true\n\n\t\t\t\t\t\t\t\tfor (const cookie of set.headers.getSetCookie()) {\n\t\t\t\t\t\t\t\t\t;(response as Response).headers.append(\n\t\t\t\t\t\t\t\t\t\t'set-cookie',\n\t\t\t\t\t\t\t\t\t\tcookie\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else\n\t\t\t\t\t\t\t\t(response as Response).headers.append(\n\t\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\t\tset.headers?.get(key) ?? ''\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tfor (const key in set.headers)\n\t\t\t\t\t\t\t(response as Response).headers.append(\n\t\t\t\t\t\t\t\tkey,\n\t\t\t\t\t\t\t\tset.headers[key]\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\tif ((response as Response).status !== set.status)\n\t\t\t\t\t\tset.status = (response as Response).status\n\n\t\t\t\t\treturn response as Response\n\t\t\t\t}\n\n\t\t\t\tif (response instanceof Promise)\n\t\t\t\t\treturn response.then((x) => mapEarlyResponse(x, set)) as any\n\n\t\t\t\tif (response instanceof Error)\n\t\t\t\t\treturn errorToResponse(response as Error, set)\n\n\t\t\t\tif ('toResponse' in (response as any))\n\t\t\t\t\treturn mapEarlyResponse((response as any).toResponse(), set)\n\n\t\t\t\tif ('charCodeAt' in (response as any)) {\n\t\t\t\t\tconst code = (response as any).charCodeAt(0)\n\n\t\t\t\t\tif (code === 123 || code === 91) {\n\t\t\t\t\t\tif (!set.headers['Content-Type'])\n\t\t\t\t\t\t\tset.headers['Content-Type'] = 'application/json'\n\n\t\t\t\t\t\treturn new Response(\n\t\t\t\t\t\t\tJSON.stringify(response),\n\t\t\t\t\t\t\tset as SetResponse\n\t\t\t\t\t\t) as any\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn new Response(response as any, set as SetResponse)\n\t\t}\n\t} else\n\t\tswitch (response?.constructor?.name) {\n\t\t\tcase 'String':\n\t\t\t\treturn new Response(response as string)\n\n\t\t\tcase 'Blob':\n\t\t\t\treturn handleFile(response as File | Blob, set)\n\n\t\t\tcase 'Array':\n\t\t\t\treturn Response.json(response)\n\n\t\t\tcase 'Object':\n\t\t\t\tfor (const value in Object.values(response as Object)) {\n\t\t\t\t\tswitch (value?.constructor?.name) {\n\t\t\t\t\t\tcase 'Blob':\n\t\t\t\t\t\tcase 'File':\n\t\t\t\t\t\tcase 'ArrayBuffer':\n\t\t\t\t\t\tcase 'FileRef':\n\t\t\t\t\t\t\treturn new Response(\n\t\t\t\t\t\t\t\tform(response as any),\n\t\t\t\t\t\t\t\tset as SetResponse\n\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn Response.json(response, set as SetResponse)\n\n\t\t\tcase 'ReadableStream':\n\t\t\t\trequest?.signal.addEventListener(\n\t\t\t\t\t'abort',\n\t\t\t\t\t{\n\t\t\t\t\t\thandleEvent() {\n\t\t\t\t\t\t\tif (!request?.signal.aborted)\n\t\t\t\t\t\t\t\t(response as ReadableStream).cancel(request)\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tonce: true\n\t\t\t\t\t}\n\t\t\t\t)\n\n\t\t\t\treturn new Response(response as ReadableStream, {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'text/event-stream; charset=utf-8'\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\tcase undefined:\n\t\t\t\tif (!response) return new Response('')\n\n\t\t\t\treturn new Response(JSON.stringify(response), {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'content-type': 'application/json'\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\tcase 'Response':\n\t\t\t\treturn response as Response\n\n\t\t\tcase 'Promise':\n\t\t\t\t// @ts-ignore\n\t\t\t\treturn (response as Promise<unknown>).then((x) => {\n\t\t\t\t\tconst r = mapEarlyResponse(x, set)\n\t\t\t\t\tif (r !== undefined) return r\n\t\t\t\t})\n\n\t\t\tcase 'Error':\n\t\t\t\treturn errorToResponse(response as Error, set)\n\n\t\t\tcase 'Function':\n\t\t\t\treturn mapCompactResponse((response as Function)())\n\n\t\t\tcase 'Number':\n\t\t\tcase 'Boolean':\n\t\t\t\treturn new Response((response as number | boolean).toString())\n\n\t\t\tcase 'Cookie':\n\t\t\t\tif (response instanceof Cookie)\n\t\t\t\t\treturn new Response(response.value, set as SetResponse)\n\n\t\t\t\treturn new Response(response?.toString(), set as SetResponse)\n\n\t\t\tcase 'FormData':\n\t\t\t\treturn new Response(response as FormData)\n\n\t\t\tdefault:\n\t\t\t\tif (response instanceof Response)\n\t\t\t\t\treturn new Response(response.body, {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Content-Type': 'application/json'\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\tif (response instanceof Promise)\n\t\t\t\t\treturn response.then((x) => mapEarlyResponse(x, set)) as any\n\n\t\t\t\tif (response instanceof Error)\n\t\t\t\t\treturn errorToResponse(response as Error, set)\n\n\t\t\t\tif ('toResponse' in (response as any))\n\t\t\t\t\treturn mapEarlyResponse((response as any).toResponse(), set)\n\n\t\t\t\tif ('charCodeAt' in (response as any)) {\n\t\t\t\t\tconst code = (response as any).charCodeAt(0)\n\n\t\t\t\t\tif (code === 123 || code === 91) {\n\t\t\t\t\t\tif (!set.headers['Content-Type'])\n\t\t\t\t\t\t\tset.headers['Content-Type'] = 'application/json'\n\n\t\t\t\t\t\treturn new Response(\n\t\t\t\t\t\t\tJSON.stringify(response),\n\t\t\t\t\t\t\tset as SetResponse\n\t\t\t\t\t\t) as any\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn new Response(response as any)\n\t\t}\n}\n\nexport const mapCompactResponse = (\n\tresponse: unknown,\n\trequest?: Request\n): Response => {\n\t// @ts-ignore\n\tif (response?.$passthrough)\n\t\t// @ts-ignore\n\t\tresponse = response?.[response.$passthrough]\n\n\t// @ts-ignore\n\tif (response?.[ELYSIA_RESPONSE])\n\t\t// @ts-ignore\n\t\treturn mapResponse(response.response, {\n\t\t\t// @ts-ignore\n\t\t\tstatus: response[ELYSIA_RESPONSE],\n\t\t\theaders: {}\n\t\t})\n\n\tswitch (response?.constructor?.name) {\n\t\tcase 'String':\n\t\t\treturn new Response(response as string)\n\n\t\tcase 'Blob':\n\t\t\treturn handleFile(response as File | Blob)\n\n\t\tcase 'Array':\n\t\t\treturn Response.json(response)\n\n\t\tcase 'Object':\n\t\t\tform: for (const value of Object.values(response as Object))\n\t\t\t\tswitch (value?.constructor?.name) {\n\t\t\t\t\tcase 'Blob':\n\t\t\t\t\tcase 'File':\n\t\t\t\t\tcase 'ArrayBuffer':\n\t\t\t\t\tcase 'FileRef':\n\t\t\t\t\t\treturn new Response(form(response as any))\n\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tbreak form\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\treturn Response.json(response)\n\n\t\tcase 'ReadableStream':\n\t\t\trequest?.signal.addEventListener(\n\t\t\t\t'abort',\n\t\t\t\t{\n\t\t\t\t\thandleEvent() {\n\t\t\t\t\t\tif (!request?.signal.aborted)\n\t\t\t\t\t\t\t(response as ReadableStream).cancel(request)\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tonce: true\n\t\t\t\t}\n\t\t\t)\n\n\t\t\treturn new Response(response as ReadableStream, {\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'text/event-stream; charset=utf-8'\n\t\t\t\t}\n\t\t\t})\n\n\t\tcase undefined:\n\t\t\tif (!response) return new Response('')\n\n\t\t\treturn new Response(JSON.stringify(response), {\n\t\t\t\theaders: {\n\t\t\t\t\t'content-type': 'application/json'\n\t\t\t\t}\n\t\t\t})\n\n\t\tcase 'Response':\n\t\t\treturn response as Response\n\n\t\tcase 'Error':\n\t\t\treturn errorToResponse(response as Error)\n\n\t\tcase 'Promise':\n\t\t\t// @ts-ignore\n\t\t\treturn (response as any as Promise<unknown>).then(\n\t\t\t\tmapCompactResponse\n\t\t\t)\n\n\t\t// ? Maybe response or Blob\n\t\tcase 'Function':\n\t\t\treturn mapCompactResponse((response as Function)())\n\n\t\tcase 'Number':\n\t\tcase 'Boolean':\n\t\t\treturn new Response((response as number | boolean).toString())\n\n\t\tcase 'FormData':\n\t\t\treturn new Response(response as FormData)\n\n\t\tdefault:\n\t\t\tif (response instanceof Response)\n\t\t\t\treturn new Response(response.body, {\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t'Content-Type': 'application/json'\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\tif (response instanceof Promise)\n\t\t\t\treturn response.then(mapCompactResponse) as any\n\n\t\t\tif (response instanceof Error)\n\t\t\t\treturn errorToResponse(response as Error)\n\n\t\t\tif ('toResponse' in (response as any))\n\t\t\t\treturn mapCompactResponse((response as any).toResponse())\n\n\t\t\tif ('charCodeAt' in (response as any)) {\n\t\t\t\tconst code = (response as any).charCodeAt(0)\n\n\t\t\t\tif (code === 123 || code === 91) {\n\t\t\t\t\treturn new Response(JSON.stringify(response), {\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t'Content-Type': 'application/json'\n\t\t\t\t\t\t}\n\t\t\t\t\t}) as any\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn new Response(response as any)\n\t}\n}\n\nexport const errorToResponse = (error: Error, set?: Context['set']) =>\n\tnew Response(\n\t\tJSON.stringify({\n\t\t\tname: error?.name,\n\t\t\tmessage: error?.message,\n\t\t\tcause: error?.cause\n\t\t}),\n\t\t{\n\t\t\tstatus: set?.status !== 200 ? (set?.status as number) ?? 500 : 500,\n\t\t\theaders: set?.headers\n\t\t}\n\t)\n",
@@ -236,10 +236,11 @@ export type Handler<in out Route extends RouteSchema = {}, in out Singleton exte
236
236
  derive: {};
237
237
  resolve: {};
238
238
  }, Path extends string = ''> = (context: Context<Route, Singleton, Path>) => Route['response'] extends SuccessfulResponse ? Response | MaybePromise<Route['response'][keyof Route['response']]> : Response | MaybePromise<Route['response']>;
239
- export type Replace<Original, Target, With> = Original extends Record<string, unknown> ? {
239
+ export type Replace<Original, Target, With> = IsAny<Target> extends true ? Original : Original extends Record<string, unknown> ? {
240
240
  [K in keyof Original]: Original[K] extends Target ? With : Original[K];
241
241
  } : Original extends Target ? With : Original;
242
- export type CoExist<Original, Target, With> = Original extends Record<string, unknown> ? {
242
+ type IsAny<T> = 0 extends 1 & T ? true : false;
243
+ export type CoExist<Original, Target, With> = IsAny<Target> extends true ? Original : Original extends Record<string, unknown> ? {
243
244
  [K in keyof Original]: Original[K] extends Target ? Original[K] | With : Original[K];
244
245
  } : Original extends Target ? Original | With : Original;
245
246
  export type InlineHandler<Route extends RouteSchema = {}, Singleton extends SingletonBase = {
@@ -7,7 +7,7 @@ import { TypeCheck } from '@sinclair/typebox/compiler';
7
7
  import type { LifeCycleStore, LocalHook, MaybeArray, InputSchema, LifeCycleType, HookContainer, Replace } from './types';
8
8
  import type { CookieOptions } from './cookies';
9
9
  import { Sucrose } from './sucrose';
10
- import { BunFile } from 'bun';
10
+ import type { BunFile } from 'bun';
11
11
  export declare const replaceUrlPath: (url: string, pathname: string) => string;
12
12
  export declare const mergeDeep: <A extends Record<string, any>, B extends Record<string, any>>(target: A, source: B, { skipKeys }?: {
13
13
  skipKeys?: string[];
package/dist/types.d.ts CHANGED
@@ -236,10 +236,11 @@ export type Handler<in out Route extends RouteSchema = {}, in out Singleton exte
236
236
  derive: {};
237
237
  resolve: {};
238
238
  }, Path extends string = ''> = (context: Context<Route, Singleton, Path>) => Route['response'] extends SuccessfulResponse ? Response | MaybePromise<Route['response'][keyof Route['response']]> : Response | MaybePromise<Route['response']>;
239
- export type Replace<Original, Target, With> = Original extends Record<string, unknown> ? {
239
+ export type Replace<Original, Target, With> = IsAny<Target> extends true ? Original : Original extends Record<string, unknown> ? {
240
240
  [K in keyof Original]: Original[K] extends Target ? With : Original[K];
241
241
  } : Original extends Target ? With : Original;
242
- export type CoExist<Original, Target, With> = Original extends Record<string, unknown> ? {
242
+ type IsAny<T> = 0 extends 1 & T ? true : false;
243
+ export type CoExist<Original, Target, With> = IsAny<Target> extends true ? Original : Original extends Record<string, unknown> ? {
243
244
  [K in keyof Original]: Original[K] extends Target ? Original[K] | With : Original[K];
244
245
  } : Original extends Target ? Original | With : Original;
245
246
  export type InlineHandler<Route extends RouteSchema = {}, Singleton extends SingletonBase = {
package/dist/utils.d.ts CHANGED
@@ -7,7 +7,7 @@ import { TypeCheck } from '@sinclair/typebox/compiler';
7
7
  import type { LifeCycleStore, LocalHook, MaybeArray, InputSchema, LifeCycleType, HookContainer, Replace } from './types';
8
8
  import type { CookieOptions } from './cookies';
9
9
  import { Sucrose } from './sucrose';
10
- import { BunFile } from 'bun';
10
+ import type { BunFile } from 'bun';
11
11
  export declare const replaceUrlPath: (url: string, pathname: string) => string;
12
12
  export declare const mergeDeep: <A extends Record<string, any>, B extends Record<string, any>>(target: A, source: B, { skipKeys }?: {
13
13
  skipKeys?: string[];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "elysia",
3
3
  "description": "Ergonomic Framework for Human",
4
- "version": "1.0.24",
4
+ "version": "1.0.25",
5
5
  "author": {
6
6
  "name": "saltyAom",
7
7
  "url": "https://github.com/SaltyAom",
@@ -1 +1 @@
1
- {"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.promise.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.object.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/ws/index.d.ts","./node_modules/bun-types/fetch.d.ts","./node_modules/bun-types/globals.d.ts","./node_modules/bun-types/bun.d.ts","./node_modules/bun-types/overrides.d.ts","./node_modules/bun-types/ffi.d.ts","./node_modules/bun-types/test.d.ts","./node_modules/bun-types/html-rewriter.d.ts","./node_modules/bun-types/jsc.d.ts","./node_modules/bun-types/sqlite.d.ts","./node_modules/bun-types/wasm.d.ts","./node_modules/bun-types/deprecated.d.ts","./node_modules/bun-types/index.d.ts","./node_modules/@types/bun/index.d.ts","./node_modules/memoirist/src/index.ts","./node_modules/eventemitter3/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/symbols/symbols.d.ts","./node_modules/@sinclair/typebox/build/require/type/symbols/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/any/any.d.ts","./node_modules/@sinclair/typebox/build/require/type/any/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/mapped/mapped-key.d.ts","./node_modules/@sinclair/typebox/build/require/type/mapped/mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/async-iterator/async-iterator.d.ts","./node_modules/@sinclair/typebox/build/require/type/async-iterator/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/constructor/constructor.d.ts","./node_modules/@sinclair/typebox/build/require/type/constructor/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/function/function.d.ts","./node_modules/@sinclair/typebox/build/require/type/function/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/never/never.d.ts","./node_modules/@sinclair/typebox/build/require/type/never/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/recursive/recursive.d.ts","./node_modules/@sinclair/typebox/build/require/type/recursive/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/readonly/readonly.d.ts","./node_modules/@sinclair/typebox/build/require/type/readonly/readonly-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/readonly/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/intersect/intersect-type.d.ts","./node_modules/@sinclair/typebox/build/require/type/intersect/intersect-evaluated.d.ts","./node_modules/@sinclair/typebox/build/require/type/intersect/intersect.d.ts","./node_modules/@sinclair/typebox/build/require/type/intersect/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/union/union-type.d.ts","./node_modules/@sinclair/typebox/build/require/type/union/union-evaluated.d.ts","./node_modules/@sinclair/typebox/build/require/type/union/union.d.ts","./node_modules/@sinclair/typebox/build/require/type/union/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/tuple/tuple.d.ts","./node_modules/@sinclair/typebox/build/require/type/tuple/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/error/error.d.ts","./node_modules/@sinclair/typebox/build/require/type/error/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/string/string.d.ts","./node_modules/@sinclair/typebox/build/require/type/string/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/boolean/boolean.d.ts","./node_modules/@sinclair/typebox/build/require/type/boolean/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/number/number.d.ts","./node_modules/@sinclair/typebox/build/require/type/number/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/integer/integer.d.ts","./node_modules/@sinclair/typebox/build/require/type/integer/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/bigint/bigint.d.ts","./node_modules/@sinclair/typebox/build/require/type/bigint/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/literal/literal.d.ts","./node_modules/@sinclair/typebox/build/require/type/literal/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/parse.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/finite.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/generate.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/syntax.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/pattern.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/template-literal.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/union.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/indexed/indexed-property-keys.d.ts","./node_modules/@sinclair/typebox/build/require/type/indexed/indexed-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/indexed/indexed.d.ts","./node_modules/@sinclair/typebox/build/require/type/indexed/indexed-from-mapped-key.d.ts","./node_modules/@sinclair/typebox/build/require/type/indexed/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/iterator/iterator.d.ts","./node_modules/@sinclair/typebox/build/require/type/iterator/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/promise/promise.d.ts","./node_modules/@sinclair/typebox/build/require/type/promise/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/sets/set.d.ts","./node_modules/@sinclair/typebox/build/require/type/sets/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/mapped/mapped.d.ts","./node_modules/@sinclair/typebox/build/require/type/mapped/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/optional/optional.d.ts","./node_modules/@sinclair/typebox/build/require/type/optional/optional-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/optional/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/enum/enum.d.ts","./node_modules/@sinclair/typebox/build/require/type/enum/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/not/not.d.ts","./node_modules/@sinclair/typebox/build/require/type/not/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/regexp/regexp.d.ts","./node_modules/@sinclair/typebox/build/require/type/regexp/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/record/record.d.ts","./node_modules/@sinclair/typebox/build/require/type/record/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/ref/ref.d.ts","./node_modules/@sinclair/typebox/build/require/type/ref/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/unsafe/unsafe.d.ts","./node_modules/@sinclair/typebox/build/require/type/unsafe/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/transform/transform.d.ts","./node_modules/@sinclair/typebox/build/require/type/transform/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/static/static.d.ts","./node_modules/@sinclair/typebox/build/require/type/static/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/object/object.d.ts","./node_modules/@sinclair/typebox/build/require/type/object/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/helpers/helpers.d.ts","./node_modules/@sinclair/typebox/build/require/type/helpers/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/array/array.d.ts","./node_modules/@sinclair/typebox/build/require/type/array/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/date/date.d.ts","./node_modules/@sinclair/typebox/build/require/type/date/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/null/null.d.ts","./node_modules/@sinclair/typebox/build/require/type/null/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/symbol/symbol.d.ts","./node_modules/@sinclair/typebox/build/require/type/symbol/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/uint8array/uint8array.d.ts","./node_modules/@sinclair/typebox/build/require/type/uint8array/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/undefined/undefined.d.ts","./node_modules/@sinclair/typebox/build/require/type/undefined/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/unknown/unknown.d.ts","./node_modules/@sinclair/typebox/build/require/type/unknown/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/void/void.d.ts","./node_modules/@sinclair/typebox/build/require/type/void/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/schema/schema.d.ts","./node_modules/@sinclair/typebox/build/require/type/schema/anyschema.d.ts","./node_modules/@sinclair/typebox/build/require/type/schema/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/clone/type.d.ts","./node_modules/@sinclair/typebox/build/require/type/clone/value.d.ts","./node_modules/@sinclair/typebox/build/require/type/clone/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/guard/type.d.ts","./node_modules/@sinclair/typebox/build/require/type/guard/value.d.ts","./node_modules/@sinclair/typebox/build/require/type/guard/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/patterns/patterns.d.ts","./node_modules/@sinclair/typebox/build/require/type/patterns/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/registry/format.d.ts","./node_modules/@sinclair/typebox/build/require/type/registry/type.d.ts","./node_modules/@sinclair/typebox/build/require/type/registry/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/awaited/awaited.d.ts","./node_modules/@sinclair/typebox/build/require/type/awaited/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/keyof/keyof-property-keys.d.ts","./node_modules/@sinclair/typebox/build/require/type/keyof/keyof.d.ts","./node_modules/@sinclair/typebox/build/require/type/keyof/keyof-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/keyof/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/composite/composite.d.ts","./node_modules/@sinclair/typebox/build/require/type/composite/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/const/const.d.ts","./node_modules/@sinclair/typebox/build/require/type/const/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/constructor-parameters/constructor-parameters.d.ts","./node_modules/@sinclair/typebox/build/require/type/constructor-parameters/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/deref/deref.d.ts","./node_modules/@sinclair/typebox/build/require/type/deref/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/exclude/exclude-from-template-literal.d.ts","./node_modules/@sinclair/typebox/build/require/type/exclude/exclude.d.ts","./node_modules/@sinclair/typebox/build/require/type/exclude/exclude-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/exclude/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/extends/extends-check.d.ts","./node_modules/@sinclair/typebox/build/require/type/extends/extends-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/extends/extends.d.ts","./node_modules/@sinclair/typebox/build/require/type/extends/extends-from-mapped-key.d.ts","./node_modules/@sinclair/typebox/build/require/type/extends/extends-undefined.d.ts","./node_modules/@sinclair/typebox/build/require/type/extends/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/extract/extract-from-template-literal.d.ts","./node_modules/@sinclair/typebox/build/require/type/extract/extract.d.ts","./node_modules/@sinclair/typebox/build/require/type/extract/extract-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/extract/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/instance-type/instance-type.d.ts","./node_modules/@sinclair/typebox/build/require/type/instance-type/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/intrinsic-from-mapped-key.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/intrinsic.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/capitalize.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/lowercase.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/uncapitalize.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/uppercase.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/omit/omit-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/omit/omit.d.ts","./node_modules/@sinclair/typebox/build/require/type/omit/omit-from-mapped-key.d.ts","./node_modules/@sinclair/typebox/build/require/type/omit/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/parameters/parameters.d.ts","./node_modules/@sinclair/typebox/build/require/type/parameters/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/readonly-optional/readonly-optional.d.ts","./node_modules/@sinclair/typebox/build/require/type/readonly-optional/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/partial/partial.d.ts","./node_modules/@sinclair/typebox/build/require/type/partial/partial-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/partial/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/pick/pick-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/pick/pick.d.ts","./node_modules/@sinclair/typebox/build/require/type/pick/pick-from-mapped-key.d.ts","./node_modules/@sinclair/typebox/build/require/type/pick/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/required/required.d.ts","./node_modules/@sinclair/typebox/build/require/type/required/required-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/required/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/rest/rest.d.ts","./node_modules/@sinclair/typebox/build/require/type/rest/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/return-type/return-type.d.ts","./node_modules/@sinclair/typebox/build/require/type/return-type/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/strict/strict.d.ts","./node_modules/@sinclair/typebox/build/require/type/strict/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/type/json.d.ts","./node_modules/@sinclair/typebox/build/require/type/type/javascript.d.ts","./node_modules/@sinclair/typebox/build/require/type/type/index.d.ts","./node_modules/@sinclair/typebox/build/require/index.d.ts","./node_modules/@sinclair/typebox/build/require/errors/errors.d.ts","./node_modules/@sinclair/typebox/build/require/errors/function.d.ts","./node_modules/@sinclair/typebox/build/require/errors/index.d.ts","./node_modules/@sinclair/typebox/build/require/compiler/compiler.d.ts","./node_modules/@sinclair/typebox/build/require/compiler/index.d.ts","./node_modules/openapi-types/dist/index.d.ts","./node_modules/@types/cookie/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/guard/guard.d.ts","./node_modules/@sinclair/typebox/build/require/value/guard/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/cast/cast.d.ts","./node_modules/@sinclair/typebox/build/require/value/cast/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/check/check.d.ts","./node_modules/@sinclair/typebox/build/require/value/check/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/clean/clean.d.ts","./node_modules/@sinclair/typebox/build/require/value/clean/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/clone/clone.d.ts","./node_modules/@sinclair/typebox/build/require/value/clone/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/convert/convert.d.ts","./node_modules/@sinclair/typebox/build/require/value/convert/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/create/create.d.ts","./node_modules/@sinclair/typebox/build/require/value/create/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/default/default.d.ts","./node_modules/@sinclair/typebox/build/require/value/default/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/delta/delta.d.ts","./node_modules/@sinclair/typebox/build/require/value/delta/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/equal/equal.d.ts","./node_modules/@sinclair/typebox/build/require/value/equal/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/hash/hash.d.ts","./node_modules/@sinclair/typebox/build/require/value/hash/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/mutate/mutate.d.ts","./node_modules/@sinclair/typebox/build/require/value/mutate/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/pointer/pointer.d.ts","./node_modules/@sinclair/typebox/build/require/value/pointer/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/transform/decode.d.ts","./node_modules/@sinclair/typebox/build/require/value/transform/encode.d.ts","./node_modules/@sinclair/typebox/build/require/value/transform/has.d.ts","./node_modules/@sinclair/typebox/build/require/value/transform/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/value/value.d.ts","./node_modules/@sinclair/typebox/build/require/value/value/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/index.d.ts","./src/error.ts","./src/context.ts","./src/handler.ts","./src/sucrose.ts","./src/utils.ts","./src/cookies.ts","./src/types.ts","./src/trace.ts","./node_modules/@sinclair/typebox/build/require/system/policy.d.ts","./node_modules/@sinclair/typebox/build/require/system/system.d.ts","./node_modules/@sinclair/typebox/build/require/system/index.d.ts","./src/formats.ts","./src/type-system.ts","./src/ws/index.ts","./src/ws/types.ts","./node_modules/fast-querystring/lib/index.d.ts","./src/compose.ts","./src/dynamic-handle.ts","./src/index.ts","./node_modules/expect-type/dist/index.d.ts","./test/types/plugins.ts","./test/types/index.ts","./test/types/scoped.ts","./node_modules/@types/benchmark/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/semver/classes/semver.d.ts","./node_modules/@types/semver/functions/parse.d.ts","./node_modules/@types/semver/functions/valid.d.ts","./node_modules/@types/semver/functions/clean.d.ts","./node_modules/@types/semver/functions/inc.d.ts","./node_modules/@types/semver/functions/diff.d.ts","./node_modules/@types/semver/functions/major.d.ts","./node_modules/@types/semver/functions/minor.d.ts","./node_modules/@types/semver/functions/patch.d.ts","./node_modules/@types/semver/functions/prerelease.d.ts","./node_modules/@types/semver/functions/compare.d.ts","./node_modules/@types/semver/functions/rcompare.d.ts","./node_modules/@types/semver/functions/compare-loose.d.ts","./node_modules/@types/semver/functions/compare-build.d.ts","./node_modules/@types/semver/functions/sort.d.ts","./node_modules/@types/semver/functions/rsort.d.ts","./node_modules/@types/semver/functions/gt.d.ts","./node_modules/@types/semver/functions/lt.d.ts","./node_modules/@types/semver/functions/eq.d.ts","./node_modules/@types/semver/functions/neq.d.ts","./node_modules/@types/semver/functions/gte.d.ts","./node_modules/@types/semver/functions/lte.d.ts","./node_modules/@types/semver/functions/cmp.d.ts","./node_modules/@types/semver/functions/coerce.d.ts","./node_modules/@types/semver/classes/comparator.d.ts","./node_modules/@types/semver/classes/range.d.ts","./node_modules/@types/semver/functions/satisfies.d.ts","./node_modules/@types/semver/ranges/max-satisfying.d.ts","./node_modules/@types/semver/ranges/min-satisfying.d.ts","./node_modules/@types/semver/ranges/to-comparators.d.ts","./node_modules/@types/semver/ranges/min-version.d.ts","./node_modules/@types/semver/ranges/valid.d.ts","./node_modules/@types/semver/ranges/outside.d.ts","./node_modules/@types/semver/ranges/gtr.d.ts","./node_modules/@types/semver/ranges/ltr.d.ts","./node_modules/@types/semver/ranges/intersects.d.ts","./node_modules/@types/semver/ranges/simplify.d.ts","./node_modules/@types/semver/ranges/subset.d.ts","./node_modules/@types/semver/internals/identifiers.d.ts","./node_modules/@types/semver/index.d.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","886e50ef125efb7878f744e86908884c0133e7a6d9d80013f421b0cd8fb2af94",{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"d8670852241d4c6e03f2b89d67497a4bbefe29ecaa5a444e2c11a9b05e6fccc6","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"15b98a533864d324e5f57cd3cfc0579b231df58c1c0f6063ea0fcb13c3c74ff9","affectsGlobalScope":true},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"d78c698fa755ef94e3af591883bfee3a330ffec36392e00aaacdff3541cf5382","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"6968359c8dbc693224fd1ea0b1f96b135f14d8eee3d6e23296d68c3a9da3ea00",{"version":"79d75a353f29d9f7fc63e879ccebe213baaaea26676fb3e47cc96cf221b27b4f","affectsGlobalScope":true},"dfdc7699360a0d512d7e31c69f75cb6a419cf415c98673e24499793170db5d6b","dcf46daa1e04481b1c2f360c7a77bf019885bd70353a92aa698b9c22b7fe3d6b",{"version":"033350619c2cfcbeab2a483f4b221e0866e17cc4ac514240d285d35c35eecf7c","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"b197fb2d5fa71cebc66e5d10e15c7d02f15fcd3194fbdaafeb964262582f2a82","affectsGlobalScope":true},"1a7f593d587f49ca97710c021c453ab1b95db5e39e58567f4af644f97a5fb0e0","dd4705d1d78af32c407e93e5df009962bed324599d6a5b2a9d661ba44dd99e43","3a02975d4a7034567425e529a0770f7f895ed605d2b576f7831668b7beea9fea","7525257b4aa35efc7a1bbc00f205a9a96c4e4ab791da90db41b77938c4e0c18e","cf87b355c4f531e98a9bba2b0e62d413b49b58b26bf8a9865e60a22d3af1fcd3",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"1a08fe5930473dcae34b831b3440cd51ff2c682cf03bd70e28812751dd1644dd","affectsGlobalScope":true},"6f3e00b838cf23f7837ffca5da88ae25f0a81742af9ccadce5cb85ac72050929","304f66274aa8119e8d65a49b1cff84cbf803def6afe1b2cc987386e9a9890e22","cbcb993f1fa22b7769074eb09c1307756e6380659a2990d6f50cfd8943bd8333","55a93997681797056da069cfac92878bff4d2a35e61c1c16280ee0cba38702f2","ea25afcaf96904668f7eebc1b834f89b5b5e5acafd430c29990028a1aaa0bcbe","df981b2ce32930887db27eeae29e48b9b841e4ba0bbba1162ebed04c778cd7e1",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"3be96458790a77cb357856dab45d1cc8383ac63ba4e085f620b202fb62a6e1db","02d85d03fd4a4f63cba0b133f0e0192368dfeb4338bd33f87788a4f6302de873","bb3a0ce56babb71d7c208ed848b4aafe545e7a7e06304fc0c8cfe3ad328cab7a",{"version":"43bb766c0dc5f1150021f161aa6831eb2cc75dab278172408515cb6e47f697a9","affectsGlobalScope":true},{"version":"8bcf09ba67bd0ec12a9f1efc1e58e1ba2cb1ff78920ce6cf67ebfe6003c54b82","affectsGlobalScope":true},"13ce7518e39051544dd1e3124c185665adda05a5021676f2606c2c74ad2c964f","4ac5899be65d5e2cabe3aaf3dfc2cf7641e54dde23db198d9f683dfabe228145","124dacf89c97915479ed6ad81b09ba42fd40962d069c0642fed42e2d9719f2ba","139ad1dc93a503da85b7a0d5f615bddbae61ad796bc68fedd049150db67a1e26","ad06959073c066bb9543ef9c1dee37fc3140d2ecaae42b97bf4e27f2f03d6511","9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","41c800136d52bf8d9ea3a81094708100f339494572f47f4f351b0d798657300f","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","3c1f19c7abcda6b3a4cf9438a15c7307a080bd3b51dfd56b198d9f86baf19447","98e7b7220dad76c509d584c9b7b1ec4dcbd7df5e3a2d37d28c54f74461ec0975",{"version":"c61b5fad633f25bb0de0f95612191c1df9a6671cd66f451507b5223bff41b50d","affectsGlobalScope":true},{"version":"d21966ba3284ade60cb94eb2c533ab5b2af7fd0b4b28462043f6ebcb8400bd21","affectsGlobalScope":true},"98e00f3613402504bc2a2c9a621800ab48e0a463d1eed062208a4ae98ad8f84c","b8e9e44ce8eba70af569523ff31d669cc239a93f548899a259f3224392a75e6c","005d1caa2a5d9bc096f75b598d0fd184bc848dd2665b050a17a17d5dc1ef652d","619735e4e221e1bf137ae3efa5330beee4a06039dccb876c822f9d8913a392da",{"version":"3560d0809b0677d77e39d0459ae6129c0e045cb3d43d1f345df06cf7ab7d6029","affectsGlobalScope":true},{"version":"5ab086d9457abbc69cca270e5475073f2e8eb35b2fb810c516400de7b7c7d575","affectsGlobalScope":true},"2a2fd53f2d963624b596fb720b390cbfe8d744e92cb55b48a8090a8fd42a302d","1f01c8fde66abc4ff6aed1db050a928b3bcb6f29bc89630a0d748a0649e14074","60223439b7ee9b26a08d527cacc8b34ea6c6741589ef4949f4669c9aeb97978e",{"version":"48fffe7824c2e8cf8c812f528c33d4c4f502767582083df35920a7f56fe794b3","affectsGlobalScope":true},"561bf7d1d3163db272980f9167b4b98f6a9ee8698c5955e9d9584e84088aad51",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a42be67ed1ddaec743582f41fc219db96a1b69719fccac6d1464321178d610fc","f7163a5d37d21f636f6a5cd1c064ce95fada21917859a64b6cc49a8b6fd5c1a8","720f5d028d71bc22ed4a5311a6ea884329db475d994f805ea86470111eccc1a1",{"version":"af674bd72a6717a27e95dcc3eea6522f46596da680f30c9fcfeb3ec425a4ef00","affectsGlobalScope":true},{"version":"5c2dcfec6c12b7725bb8178ce2692dc04dadc4d51b80fe503a7422fb7e2f84cb","affectsGlobalScope":true},{"version":"9603687f2c76dc11c02cca33e4b6672a8942934109f727a619feef030d24bd4b","affectsGlobalScope":true},"7f33db341488580a55f30ecfdf04e70c8312fd26fc2692903c7186217ae34eff",{"version":"95f57e08c3c9a85cb77dcea65e5c5d0106d3217defed801de3db7a0e27a3e590","affectsGlobalScope":true},{"version":"2b8af6e8cf44313406800b820bffc49e83a8ec4598772db25954d03a86c96818","affectsGlobalScope":true},"6813c4ebad2ed9fd49be7805c4084cbbc2d484cca1dfafc6a8a196689b5d476a","965984634a4c933d7178f1e6f6e4e0a83560eee5d187c90d9e5a5738d0391a34",{"version":"d2e66d9477edaa0e4dea79d699f0855a5a7419915da740e28fbfdb322c6a60a6","affectsGlobalScope":true},{"version":"ca69bbf884a17e7a485bb4fcd129386874050916b275e414af14b2170b4ea728","affectsGlobalScope":true},"b52c121cd491cfdbea04c3a77d23e193c23cb411e7598a04ba13a4592842fe2f","37be812b06e518320ba82e2aff3ac2ca37370a9df917db708f081b9043fa3315","950b04ccdffb6758539b5319778e4b84d7bb37088a01d3dffeb73f17498d0519","27679e96d1bd38c5938178aaf4abe8627493090b63d6bae2ce8436e6a87ebe4d","b104e2da53231a529373174880dc0abfbc80184bb473b6bf2a9a0746bebb663d","ee91a5fbbd1627c632df89cce5a4054f9cc6e7413ebdccc82b27c7ffeedf982d","85c8731ca285809fc248abf21b921fe00a67b6121d27060d6194eddc0e042b1a","6bac0cbdf1bc85ae707f91fdf037e1b600e39fb05df18915d4ecab04a1e59d3c","5688b21a05a2a11c25f56e53359e2dcda0a34cb1a582dbeb1eaacdeca55cb699","35558bf15f773acbe3ed5ac07dd27c278476630d85245f176e85f9a95128b6e0","951f54e4a63e82b310439993170e866dba0f28bb829cbc14d2f2103935cea381","4454a999dc1676b866450e8cddd9490be87b391b5526a33f88c7e45129d30c5d","b9555068bb9238efcb5a251c949292fe4ea2d265cf4fc4e009d4a917242cf743","f497cad2b33824d8b566fa276cfe3561553f905fdc6b40406c92bcfcaec96552","2e9fd4d6893aa8c311ca62ca211b07167bb6a9e707ad304db93e7ccdf349564c","5aa046aaab44da1a63d229bd67a7a1344afbd6f64db20c2bbe3981ceb2db3b07","c9ecb910b3b4c0cf67bc74833fc41585141c196b5660d2eb3a74cfffbf5aa266","33dcfba8a7e4acbe23974d342c44c36d7382c3d1d261f8aef28261a7a5df2969","a7b6046c44d5fda21d39b3266805d37a2811c2f639bf6b40a633b9a5fb4f5d88","80b036a132f3def4623aad73d526c6261dcae3c5f7013857f9ecf6589b72951f","99013139312db746c142f27515a14cdebb61ff37f20ee1de6a58ce30d36a4f0d","71da852f38ac50d2ae43a7b7f2899b10a2000727fee293b0b72123ed2e7e2ad6","74dd1096fca1fec76b951cf5eacf609feaf919e67e13af02fed49ec3b77ea797","de26700eb7277e8cfdde32ebb21b3d9ad1d713b64fdc2019068b857611e8f0c4","eead81512c6e4dee768ba9adf615c04b6d8e55c19ebce10bbd5e8795f161bd56","dc6d963e0fecd7ddcc6dcf15f1a618eb6d0f121d6286860c4b7bccc67a13d3a6","457fd1e6d6f359d7fa2ca453353f4317efccae5c902b13f15c587597015212bc","473b2b42af720ebdb539988c06e040fd9600facdeb23cb297d72ee0098d8598f","05888e854039bca80d459ba465dbda944ec5574547de184da176b2598ba804e5","325b1b1c165201b7e18feb7102c0e6ef40c31d320d1e81007ac2258cf1274c38","5b1ef94b03042629c76350fe18be52e17ab70f1c3be8f606102b30a5cd86c1b3","45295299c53bc46a2b4049c0ffe494df4d59c62c85f5d07b07f9c4089e1c324c","082b818038423de54be877cebdb344a2e3cf3f6abcfc48218d8acf95c030426a","813514ef625cb8fc3befeec97afddfb3b80b80ced859959339d99f3ad538d8fe","039cd54028eb988297e189275764df06c18f9299b14c063e93bd3f30c046fee6","e91cfd040e6da28427c5c4396912874902c26605240bdc3457cc75b6235a80f2","b4347f0b45e4788c18241ac4dee20ceab96d172847f1c11d42439d3de3c09a3e","16fe6721dc0b4144a0cdcef98857ee19025bf3c2a3cc210bcd0b9d0e25f7cec8","346d903799e8ea99e9674ba5745642d47c0d77b003cc7bb93e1d4c21c9e37101","3997421bb1889118b1bbfc53dd198c3f653bf566fd13c663e02eb08649b985c4","2d1ac54184d897cb5b2e732d501fa4591f751678717fd0c1fd4a368236b75cba","bade30041d41945c54d16a6ec7046fba6d1a279aade69dfdef9e70f71f2b7226","56fbea100bd7dd903dc49a1001995d3c6eee10a419c66a79cdb194bff7250eb7","fe8d26b2b3e519e37ceea31b1790b17d7c5ab30334ca2b56d376501388ba80d6","37ad0a0c2b296442072cd928d55ef6a156d50793c46c2e2497da1c2750d27c1e","eb58c4dbc6fec60617d80f8ccf23900a64d3190fda7cfb2558b389506ec69be0","578929b1c1e3adaed503c0a0f9bda8ba3fea598cc41ad5c38932f765684d9888","be93d07586d09e1b6625e51a1591d6119c9f1cbd95718497636a406ec42babee","a062b507ed5fc23fbc5850fd101bc9a39e9a0940bb52a45cd4624176337ad6b8","4160c37eac7870ef6c5691e03c85409e2c6e107dd634a60c62b9179a64f86f6c","da99da798b968bf8d73e261ff363f820b9a407052deb724a0f727b9929f0a2ca","5bde81e8b0efb2d977c6795f9425f890770d54610764b1d8df340ce35778c4f8","20fd0402351907669405355eeae8db00b3cf0331a3a86d8142f7b33805174f57","da6949af729eca1ec1fe867f93a601988b5b206b6049c027d0c849301d20af6f","7008f240ea3a5a344be4e5f9b5dbf26721aad3c5cfef5ff79d133fa7450e48fa","6b9834994379cc338869c9fb039491de1073781e36b4e24aa5d509dbf49d55bd","32ac7684c856eac88fde19999aca35546d7d0cb4b9f72da529f424abc3598bf3","63867d1e2b04e11f4303b7ed5902c8594ef533442de774377652cb33da7ad880","2a02d7f8c22d297167269aff17fddeeaf6fa70ca464fab1abedfb16209997da4","d5e9d32cc9813a5290a17492f554999e33f1aa083a128d3e857779548537a778","776f49489fa2e461b40370e501d8e775ddb32433c2d1b973f79d9717e1d79be5","be94ea1bfaa2eeef1e821a024914ef94cf0cba05be8f2e7df7e9556231870a1d","40cd13782413c7195ad8f189f81174850cc083967d056b23d529199d64f02c79","05e041810faf710c1dcd03f3ffde100c4a744672d93512314b1f3cfffccdaf20","15a8f79b1557978d752c0be488ee5a70daa389638d79570507a3d4cfc620d49d","968ee57037c469cffb3b0e268ab824a9c31e4205475b230011895466a1e72da4","adea48f7cbb6168c4b9e71c357d5648220b68a880d5468745853add4efd62e5f","921e3bd6325acb712cd319eaec9392c9ad81f893dead509ab2f4e688f265e536","60f6768c96f54b870966957fb9a1b176336cd82895ded088980fb506c032be1c","755d9b267084db4ea40fa29653ea5fc43e125792b1940f2909ec70a4c7f712d8","7e3056d5333f2d8a9e54324c2e2293027e4cd9874615692a53ad69090894d116","7cc9d600b2070b1e5c220044a8d5a58b40da1c11399b6c8968711de9663dc6b2","45f36cf09d3067cd98b39a7d430e0e531f02911dd6d63b6d784b1955eef86435","507648bea5a53b9db3d6c27015b957ef5afaefbe918707ee01e9bb0eb1f781f4","97e320c56905d9fa6ac8bd652cea750265384f048505870831e273050e2878cc","456a9a12ad5d57af0094edf99ceab1804449f6e7bc773d85d09c56a18978a177","a8e2a77f445a8a1ce61bfd4b7b22664d98cf19b84ec6a966544d0decec18e143","467330ce00fbe3b3af0fe5c06c05fdfe223823f70a8338413eb491471b39200d","960b6e1edfb9aafbd560eceaae0093b31a9232ab273f4ed776c647b2fb9771da","3759c8a198e22de44eb968b3b01a3aafcc06194ea037ba6e05e1f624ef4c5692","70d48a1faa86f67c9cb8a39babc5049246d7c67b6617cd08f64e29c055897ca9","0a347c2088c3b1726b95ccde77953bede00dd9dd2fda84585fa6f9f6e9573c18","8cc3abb4586d574a3faeea6747111b291e0c9981003a0d72711351a6bcc01421","6ade56d2afdf75a9bd55cd9c8593ed1d78674804d9f6d9aba04f807f3179979e","b67acb619b761e91e3a11dddb98c51ee140361bc361eb17538f1c3617e3ec157","18ded7cfa305f7c85fb71888d06860b32287e9672214ff6291823bb0a59c063f","5d89ca552233ac2d61aee34b0587f49111a54a02492e7a1098e0701dedca60c9","9955d3828944f4f06c027494af4b3ba3ca72e7933130d1150505cc3c1e142aee","fdc4fd2c610b368104746960b45216bc32685927529dd871a5330f4871d14906","7b5d77c769a6f54ea64b22f1877d64436f038d9c81f1552ad11ed63f394bd351","4f7d54c603949113f45505330caae6f41e8dbb59841d4ae20b42307dc4579835","9daeb8d87cb8dc0fae773d8a82d420f9adbd59ba9531ea6736f1322876c6af12","1ed0dc05908eb15f46379bc1cb64423760e59d6c3de826a970b2e2f6da290bf5","db89ef053f209839606e770244031688c47624b771ff5c65f0fa1ec10a6919f1","4d45b88987f32b2ac744f633ff5ddb95cd10f64459703f91f1633ff457d6c30d","f9b0dc747f13dcc09e40c26ddcc118b1bafc3152f771fdc32757a7f8916a11fc","7035fc608c297fd38dfe757d44d3483a570e2d6c8824b2d6b20294d617da64c6","22160a296186123d2df75280a1fab70d2105ce1677af1ebb344ffcb88eef6e42","9067b3fd7d71165d4c34fcbbf29f883860fd722b7e8f92e87da036b355a6c625","8512fd4a480cd8ef8bf923a85ff5e97216fa93fb763ec871144a9026e1c9dade","2aa58b491183eedf2c8ae6ef9a610cd43433fcd854f4cc3e2492027fbe63f5ca","e01ab4b99cc4a775d06155e9cadd2ebd93e4af46e2723cb9361f24a4e1f178ef","9a13410635d5cc9c2882e67921c59fb26e77b9d99efa1a80b5a46fdc2954afce","ce1f3439cb1c5a207f47938e68752730892fc3e66222227effc6a8b693450b82","295ce2cf585c26a9b71ba34fbb026d2b5a5f0d738b06a356e514f39c20bf38ba","342f10cf9ba3fbf52d54253db5c0ac3de50360b0a3c28e648a449e28a4ac8a8c","c485987c684a51c30e375d70f70942576fa86e9d30ee8d5849b6017931fccc6f","320bd1aa480e22cdd7cd3d385157258cc252577f4948cbf7cfdf78ded9d6d0a8","4ee053dfa1fce5266ecfae2bf8b6b0cb78a6a76060a1dcf66fb7215b9ff46b0b","1f84d8b133284b596328df47453d3b3f3817ad206cf3facf5eb64b0a2c14f6d7","2f90e4a338adccf2f1906241a1f48ab1e6e5679fb8f923993fd0318ec6b4ebfc","cc2eb5b23140bbceadf000ef2b71d27ac011d1c325b0fc5ecd42a3221db5fb2e","fd75cc24ea5ec28a44c0afc2f8f33da5736be58737ba772318ae3bdc1c079dc3","27b8b19ae7809eb60ea1a03340116664ee1313393cbcdfc25aad7b9a5a1423d1","852ada6c746fdf599f1540afa26723241208fce45cc05c25a2700f705e3a895d","4d00e96ed93718f05a60474bd4cdd590b39aa0fd2e6397b969476d4eef1bfba1","8f5114796587946af995a7119b1543120ec76a3977006ce396027a8447e266af","f17a51aae728f9f1a2290919cf29a927621b27f6ae91697aee78f41d48851690","be02e3c3cb4e187fd252e7ae12f6383f274e82288c8772bb0daf1a4e4af571ad","82ca40fb541799273571b011cd9de6ee9b577ef68acc8408135504ae69365b74","8fb6646db72914d6ef0692ea88b25670bbf5e504891613a1f46b42783ec18cce","c3c1a321bb076181db17db31d4dd62802d7e9e09780074704bed228b8c433116","3df6fc700b8d787974651680ae6e37b6b50726cf5401b7887f669ab195c2f2ef","811cc213d4fd10c69b548fc3f3f8ae810592ce64dd76a03f624c970a79a39648","cf91b017e2baf1135361ad7a5c61379fa2d830c366e9ead13096999e352dee7a","be8e8c2b8957b03cb1f4017d773916b2965262e9116e9aa22a9b4b2f5102725c","9071b1edcf7f634f4bf1c9ae25bb43dd8632b2e9570bb73de87f2f9bbbb674d5","f9270d73acfea1ceade73f5f6406a8a54b117724df51bf68d93a67851e59b903","213aa21650a910d95c4d0bee4bb936ecd51e230c1a9e5361e008830dcc73bc86","874a8c5125ad187e47e4a8eacc809c866c0e71b619a863cc14794dd3ccf23940","c31db8e51e85ee67018ac2a40006910efbb58e46baea774cf1f245d99bf178b5","5b632299ebf0bde13a71e1a6fc8a964477c84810c50ea1652fc15b7d086a0e88","a9dfb793a7e10949f4f3ea9f282b53d3bd8bf59f5459bc6e618e3457ed2529f5","ec701426c068a4aecd654dc2c919c39eabf3bba90d8ab812785a45b78a0aa0c6","8ecdda946e3a155d87f9ac5a63ef5019ebffd2961b30ebaf8df42556865d32cd","2a77167687b0ec0c36ef581925103f1dc0c69993f61a9dbd299dcd30601af487","0f23b5ce60c754c2816c2542b9b164d6cb15243f4cbcd11cfafcab14b60e04d0","813ce40a8c02b172fdbeb8a07fdd427ac68e821f0e20e3dc699fb5f5bdf1ef0a","5ce6b24d5fd5ebb1e38fe817b8775e2e00c94145ad6eedaf26e3adf8bb3903d0","6babca69d3ae17be168cfceb91011eed881d41ce973302ee4e97d68a81c514b4","190fc165ae9c78ff8a714f9ff7ab8267ccaffc1131a9e4d9da64d72c1254f87e","342418c52b55f721b043183975052fb3956dae3c1f55f965fedfbbf4ad540501","8370f0eec60372cf6c9721a2aebd3dabad0324533c17d51eb082e66375f0a2ee","7e9b4669774e97f5dc435ddb679aa9e7d77a1e5a480072c1d1291892d54bf45c","de439ddbed60296fbd1e5b4d242ce12aad718dffe6432efcae1ad6cd996defd3","ce5fb71799f4dbb0a9622bf976a192664e6c574d125d3773d0fa57926387b8b2","b9c0de070a5876c81540b1340baac0d7098ea9657c6653731a3199fcb2917cef","cbc91ecd74d8f9ddcbcbdc2d9245f14eff5b2f6ae38371283c97ca7dc3c4a45f","3ca1d6f016f36c61a59483c80d8b9f9d50301fbe52a0dde288c1381862b13636","023e5a230aca8e6cdbf3351ec236f03be93fbbf31238d1d7021d08f3c57070fa","0ee2eb3f7c0106ccf6e388bc0a16e1b3d346e88ac31b6a5bbc15766e43992167","9df4f57d7279173b0810154c174aa03fd60f5a1f0c3acfe8805e55e935bdecd4","a02a51b68a60a06d4bd0c747d6fbade0cb87eefda5f985fb4650e343da424f12","0cf851e2f0ecf61cabe64efd72de360246bcb8c19c6ef7b5cbb702293e1ff755","0c0e0aaf37ab0552dffc13eb584d8c56423b597c1c49f7974695cb45e2973de6","e2e0cd8f6470bc69bbfbc5e758e917a4e0f9259da7ffc93c0930516b0aa99520","180de8975eff720420697e7b5d95c0ecaf80f25d0cea4f8df7fe9cf817d44884","424a7394f9704d45596dce70bd015c5afec74a1cc5760781dfda31bc300df88f","487aa46dfd11a25eb29cbeaadb27ac5e615afe0661860897b6d26351e8b59664","48f58fd08cffcaa262857d1c9c04ab99c467f4e0930a247c0a50561642c4d86c","e2a16f2a67c53de55bdea29beb3dda5f664d1d5700fd1016c2f2a253d8879074","e3f3964ff78dee11a07ae589f1319ff682f62f3c6c8afa935e3d8616cf21b431","d755902d4219c1ea027f0f2da81984c064153463ec9499fe5e6c761d953e607d","3903b01a9ba327aae8c7ea884cdabc115d27446fba889afc95fddca8a9b4f6e2","a0691153ccf5aa1b687b1500239722fff4d755481c20e16d9fcd7fb2d659c7c7","fe2201d73ae56b1b4946c10e18549a93bf4c390308af9d422f1ffd3c7989ffc8","7a5b421c9286ef3a387fbaa7529633bf1bbd7805f8217feec8e4cbee2243fa32","eb6813ed5340903591debd0924b282b23ba5f923ffae1dae2d2066380297b919","59c5a06fa4bf2fa320a3c5289b6f199a3e4f9562480f59c0987c91dc135a1adf","b41621db1226abb41d5a2709cf394afa0d87b06f364294e4117ea99a7c404e81","d78f9968070f2fd02289f3809f2b2a496000e9d8c8a7e308446d0ca98068fa57","2c7c38a7367ba9154ebe0ed393a6bee20e050ad950485021390592aac86e1abf","64d45d55ba6e42734ac326d2ea1f674c72837443eb7ff66c82f95e4544980713","99042827f8486f3478bf95d6a1f2cacc5247d1dccd29ad69c350a5ab626b3fd2","d9691c2fcb468eb71fd43e8decf940fb212506357bd2878603ed23e0870d501e","aaf3c2e268f27514eb28255835f38445a200cd8bcfdff2c07c6227f67aaaf657","a89af032d37ff997503c2ad941f6e8b81ea516a0fa2eb1026966187966a8d1c1","8afd4f91e3a060a886a249f22b23da880ec12d4a20b6404acc5e283ef01bdd46","2108aae2f80d17088ff60b38528db40cf7204bf964feabba9d8606285e8f9e22","fa8c21bafd5d8991019d58887add8971ccbe88243c79bbcaec2e2417a40af4e8","a445402c3628747496e09160023e3f6b527ba347142ece78ce5921f2ca5f8f3a","920cef603ae24233338b440ff40586d19f9d3cf641a7607e041c0393354a795e","e1468b42057c6841f5ddef03d14b385c905083e042198d948ddaa7c27ecc8400","583ad3cf91f470ea949ee6eaf5096a8ea66c6beacc851855684187f1a09be007","a0c6029c740656fd9a0bdb92c57b446dc10e7b9135db3e8ba0e5c84cbe3fd112","e405d8cf4684905734d451153c3259293d4fdf7b602f234d00518213b69fa9ea","b47f0f24523db0410eb4237b4422bed2aafcdf3d17bf8a3b374c8e3280f870ed","4231f486aae0f84d5ada3128d3c4a47766d756b33c2ae262308db6ef85fb5217","d4ed5a98777de192337cb00fc25bde31e88fbac12091bf1b0bb68ef55865ebba","57bf62609f7f4f3fedd76198dbfecf718863ad36a795d55763a745ce45904d45","8e68dc25f8bbc1eca7266259ee9c2689132a1dfaae7f88dbf3060a0c702d0978","2df62cd6db7d86f765cfc05606bbd27b38ed7bae502b5c4d927996bcf3638d64","1748c03e7a7d118f7f6648c709507971eb0d416f489958492c5ae625de445184","416709bcfe567baf0e0a1b507cf2a517a7f3365705f1d5f8b69306033680c2ba","a469528c72f7585708beb5d1709fa48b1b0e2f608cce7cf14e0a5a3d20ca340f","7aa417ef55dd4243e9ca56c74b039d6ca680456ca51add3d7fa075db3d3f5527","8fd36488fd6f6044b0373442961902580ffaafa64bc274cb0b4e4fc322ae67fe","b4b749d9fd0e30b43671def8724e5a02e7a9e2d971c934a6d8b4ba2b8caba5b5","182b40591d4958abb02a104aec91dc1ea84209ab52d259a4b6392b599086b4c3","d49fb63a2cf356aa5034611e0406dd4116fae87eab2b47ab8196ae684926b718","2ce8dfcdf3789a3983cf29069ad9ed7e56ef39c0e894d4c87e5cf5408f1707f1","f964ba426f140b14ac24ec00e1495063e69b9456fbbb04840d675b5ae22ddbfe","be374439e622e5a48e1c6267e73314403d6cb81bc2ab182e69541920bb0c09ef","8c16d7cede4eae9d779b69f0f222426f3c6aac26d3935bf28c46250f1eb1d662","1259ae1d5ee16b5a8a7e8f86bcaf19d24f19a713a063caa2111c190910e01c54","bb5e2efa891e1e1b248ef60fd23e7c91fe89915d45ea2284f4ea724ddf217adf","2d39f7ddea4af48deb8ef3e23105a2e24c5e7d3f9d89c42f61ef754492253abf","5a62d716ecc222cc3701d0a11af6e5155a6d9161fd27efafd837afb2a7d2cd93","cb46bbb55f7e2195c5a123a08df095d3d0c3eb69f0f4b8bb454e9be213526dce","ecb84a2bd7ea9b12c5203e08bef039b3621e79b9c31ad4287b330498e08fefe5","46799b1a64e0aa2b8ad739e5a6abf0422165f8e6c167ac00fa74a597a42a7363","e77505c8ddb21d6092fe0861c437dafdd9609a63cefa555de1ec98788d9f4a21","10080cb23168c834c49075da76d521be2390dc7e432096fd6896b9f948ced02b","f9d5be4110c92b98a5d47004754035d36814b4b5cc7e5ddfacfdd2580f702515","74a16d3477ff412d7276656cd1c8e40890096cad59a9296aae0c996b1b550d11","8aaf7bca4a7f859b9a3da24563754fec515738e55bb2f3d6f414fc9bd8d10a3d","addcf8f5d0ebaacb58b1dfe1c69ebbd014dffef39aa2249115c327adffcaf7ba","c84947626be78c25f75826e689a05833b711c965ea53e4726190639987a99ccc","22f24428aee22d02a45267fb477b0a4050d9361db42c1c1c78c4e1d86168ba74","caea4aaa8e7b52e17c01f491cdcaa9ad891cb7154ad45d79b3561307e04757a7","0a26b28b57847972550e4c9bd9bde5f01d875576a8ae3e973e360de92d4deaa9","eb48cfffd93c9208d974dd07beb391417a3c2db23ccbe8be0b62b3454382bf58","3464417844b6c74c8e5abe9adc9962ace41a738f4948077e7c2bb9cbe3a9d5fc","cbc6c6a65cb219d02f29469ef02182464e93b95fad2f1d4b67fe24c900e981ba","5a75d60a4aa4c395ff6a569f287180f19a74f1d68727f71a45db555ff583c5e8","bac79f0baed688589bfbb0a0c734458b41e00454bee04d0087261b4acd5b8611",{"version":"58fc594b580f58a86244118c7c5352535de486571facaea59bec9d92dfe661c1","signature":"0068959852e2d5bce26de65285e1e7f81e8b9db260f961618da03e179b9eddf8"},{"version":"510c7a358c2f5950120c9896810a9004fb7dbed8d37b8a93afd1d88a14d627fa","signature":"71b096a2026c8a82420505d93b406027b8dd19bb6d9bdef022c4ab8bdfe4232c"},{"version":"2ec9bb7ad978b453c6dae563998eb5d18639aa3e5d60b24fa971375ff5b05b12","signature":"60d7c5164f003854f8e6a714f8cceb52dbb27024da720559a1a23c33fa2234c8"},{"version":"2c89461426f7356d44f50e1b5ebba44885cecb685bd93909299f6499d7c4aaaf","signature":"54688087b615525286530f157690155eca0a720bfc3643495e4dfb064077c6e6"},{"version":"c824e2d39136a996f5155ec05bcd924a135ba27d9e182187ca40e09f3f4333ea","signature":"07f91b687759a7c668b0ad7784b649de4449515afba6809385c40af54e72f59c"},{"version":"d55712bde7c9d1b40da5b258140df1abffb54dcca8ce1d3a35603dab1fb5b3fc","signature":"f7b26390df016cdb1a5697abb980f40d605685efdbad8b94befb8290ede57dac"},{"version":"b346f475ea3373021dce65ffd51ffc728828351da227fc518ac3942131827af7","signature":"112dd5aca16f9a3ff8173c3d50c6a8380d53352677462b5c1240fb5d8a337b3f"},{"version":"66269453cc715706050df388c93f0e5693d9f546327183b7eed74b17d87e5a3f","signature":"b13d30d10b93a0505e18795ac91ed546adc391bb0d110146f85e5159262cef91"},"1ffae2cb0ce77b09ebb120657e2b715be0e18d46d533f4301b3879492b22dae6","5563d9c1afb7c0fb1bbc4af7a788b1904ddfa309131f5f373e80a772a8cd3bce","ca99f111fca1fbb3c2b8a244bac8e6efc212a5826d9b4a0e5f3f18df8713b9b4","6f11b0ff634663b73fca7e5c89ae6d0f58aecafcf9f5ae405f7925cb2140b635",{"version":"9a17624d72cf3e6ea714113730021a790e0aaac6fae24a8a6a93f9c13d4c90d3","signature":"01966878c615e546f69563945dbbe111db4c78cb7114f94fc2584c95683c5670"},{"version":"520a9256d365d4d65e43b81ecf71d1e7c0736c15deb996df74fdd37deb0a8e46","signature":"10d379c8a49c24a1d3c6b4f2ae810c9a6068d097a533f6b4a10822a863698408"},{"version":"7897a9d139bbcaceeada6965d48f3ae4f76bd3a3ea206dde20ee1f12c2d9bfc3","signature":"552baaa41d5aa98b898bee4fa77f07c9150f80481fdd041c59a36ff76a71a463"},"6dfde7923c14468ba97cb1a6673bc58993ba5d95b760713015ea0e2f67bf7ed1",{"version":"c49558eee63e74495342cb43f085a724f527e91bebc744dd3ec2708677d8b23e","signature":"92d58a65175224b1606dd7a6e7bae9fe1e09357d261864069ee1e6a9d137336e"},{"version":"2f2ea898113f0a3e987be46f232a9c0c99ef80d2c31a75a2136171768f5008fb","signature":"f20bbbf75e695be133a83cc02ebe72656696a6fc50bf129e4b7f1c95a323c5dc"},{"version":"8db91c73ec13d17accdaf817b7504db4102f683912b6b9deb451d214534b9628","signature":"9a844782435139b8530e89a8915f26de07fa2bb669d0f61e795b2f323b4822ae"},"e3074100a896f70ffa050c3c77a3fde88383fbd95f94bac6dc2572b8cf1955a8",{"version":"965db44e64e6e00f4467dc696b52b53c2e08bb6e78d26e6f1f75b679cda58def","signature":"9a33238a9b2323c213967424a9150d903000e6adb8b55a7f9c7047a005b43580"},{"version":"0a9c84d7b1126d36677ef77ec6ac166fd623f0a2d0be711ed2e18d14a75639f4","signature":"761341d824f8525759f3d47f53258a78fbef7d56ee98e43525e4f201e45a0a7b"},{"version":"fe9918ff4a61bea0fa8b85c96984120f561f6079ded0f79d52d9308a3d37f0e0","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},"d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","ee7d8894904b465b072be0d2e4b45cf6b887cdba16a467645c4e200982ece7ea","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","7d8ddf0f021c53099e34ee831a06c394d50371816caa98684812f089b4c6b3d4"],"root":[[413,415]],"options":{"allowSyntheticDefaultImports":true,"esModuleInterop":true,"module":7,"skipLibCheck":true,"strict":true,"target":7},"fileIdsList":[[158,166,201,253,276,355],[158,166,355,356],[158,166,201,276],[158,166,276,353],[158,166,353,354],[158,166,172,174,178,180,182,184,186,189,193,197,199,201,203,205,207,209,211,213,221,226,228,230,232,234,237,239,241,243,245,247,249,251,253,255,257,259,261,263,265,267,269,271,273,276,279,282,284,287,289,293,295,297,299,301,305,311,315,317,324,328,330,332,335,339,342,344,346,348,351],[158,166,401,402],[158,166],[158,166,201,248],[158,166,172,276],[158,166,173],[158,166,172,253,257,276],[158,166,258],[158,166,172,253,276],[158,166,177],[158,166,193,197,230,276],[158,166,288],[158,166,210],[158,166,204],[158,166,277,278],[158,166,276],[158,166,184,193,226,232,255,257,276,293],[158,166,294],[158,166,174,182,184,189,199,211,213,255,257,261,263,265,267,269,271,276],[158,166,296],[158,166,180,199,257,276],[158,166,298],[158,166,179],[158,166,260],[158,166,178,180,182,193,197,199,228,230,247,255,257,259,276],[158,166,300],[158,166,172,213,276],[158,166,238],[158,166,200],[158,166,234,255,276,303],[158,166,221,276,303],[158,166,184,197,221,234,253,257,276,302,304],[158,166,302,303,304],[158,166,213,234,255,257,276,308],[158,166,234,255,276,308],[158,166,197,234,253,257,276,307,309],[158,166,306,307,308,309,310],[158,166,234,255,276,313],[158,166,221,276,313],[158,166,184,197,221,234,253,257,276,312,314],[158,166,312,313,314],[158,166,181],[158,166,280,281],[158,166,172,174,178,180,182,184,186,189,193,197,199,201,203,205,207,209,211,213,221,228,230,234,237,241,243,245,247,249,251,255,259,261,263,265,267,269,271,273,276],[158,166,184,255,276],[158,166,256],[158,166,222,223,224,225],[158,166,224,234,255,257,276],[158,166,222,226,234,255,276],[158,166,197,207,209,213,221,276],[158,166,184,186,193,197,199,222,223,225,234,255,257,259,276],[158,166,316],[158,166,180,276],[158,166,208],[158,166,190,191,192],[158,166,184,189,190,237,276],[158,166,184,190,276],[158,166,276,319],[158,166,318,319,320,321,322,323],[158,166,213,234,255,257,276,319],[158,166,197,213,221,234,276,318],[158,166,227],[158,166,290,291,292],[158,166,234,255,257,276,291],[158,166,186,193,197,199,232,255,257,259,276],[158,166,197,207,213,234,257,276,290,292],[158,166,212],[158,166,175,176,233],[158,166,172,255,276],[158,166,175,176,178,180,182,189,193,197,199,213,226,228,230,232,237,255,257,259,276],[158,166,183],[158,166,240],[158,166,262],[158,166,206],[158,166,254],[158,166,172,189,237,253,257,276],[158,166,325,326,327],[158,166,234,255,276,326],[158,166,234,255,257,276,326],[158,166,186,193,197,226,234,255,257,276,325,327],[158,166,235,236],[158,166,234,235,255],[158,166,172,234,236,257,276],[158,166,329],[158,166,182,199,257,276],[158,166,333,334],[158,166,234,255,257,276,333],[158,166,186,189,193,197,234,237,255,257,276,332,334],[158,166,283],[158,166,336,337,338],[158,166,234,255,276,337],[158,166,234,255,257,276,337],[158,166,186,193,197,226,234,255,257,276,336,338],[158,166,229],[158,166,331],[158,166,189,237,276],[158,166,187,188],[158,166,187,234,255],[158,166,172,188,234,257,276],[158,166,244],[158,166,172,184,197,203,207,209,213,221,239,243,253,255,257,276],[158,166,185],[158,166,246],[158,166,242],[158,166,285,286],[158,166,340,341],[158,166,234,255,257,276,340],[158,166,186,189,193,197,234,237,255,257,276,332,341],[158,166,343],[158,166,193,197,199,276],[158,166,345],[158,166,182,276],[158,166,174,178,180,182,186,193,197,199,203,205,207,209,211,213,221,228,230,239,241,243,245,247,255,259,261,263,265,267,269,271,273,274],[158,166,274,275],[158,166,172],[158,166,231],[158,166,252],[158,166,178,180,182,186,189,193,197,199,228,230,237,239,241,245,247,249,251,255,257,259,276],[158,166,347],[158,166,202],[158,166,264],[158,166,171],[158,166,197,201,203,205,207,209,211,213,214,221],[158,166,197,201,205,213,214,215,221,257],[158,166,214,215,216,217,218,219,220],[158,166,201],[158,166,201,221],[158,166,197,203,205,207,211,213,221,257],[158,166,172,184,197,203,205,207,209,211,213,217,253,257,276],[158,166,197,213,219,253,257],[158,166,250],[158,166,198],[158,166,349,350],[158,166,178,180,182,211,228,230,243,261,265,267,269,273,276,289,299,317,330,346,349],[158,166,174,184,186,189,193,197,199,203,205,207,209,213,221,226,234,237,239,241,245,247,249,251,255,259,263,271,276,293,295,297,301,305,311,315,324,328,332,335,339,342,344],[158,166,266],[158,166,268],[158,166,194,195,196],[158,166,184,189,194,237,276],[158,166,184,194,276],[158,166,270],[158,166,248],[158,166,272],[158,166,201,253,276],[158,166,362],[158,166,364],[158,166,366],[158,166,368],[158,166,370],[158,166,372],[158,166,374],[158,166,194,201,202,212,253,254,270],[158,166,376],[158,166,378],[158,166,360],[158,166,380],[158,166,355,361,363,365,367,369,371,373,375,377,379,381,383,385,389,391],[158,166,382],[158,166,384],[158,166,201,276,355],[158,166,386,387,388],[158,166,390],[158,166,253,276,355,377,383],[158,166,167],[68,158,166],[103,158,166],[104,109,138,158,166],[105,116,117,124,135,146,158,166],[105,106,116,124,158,166],[107,147,158,166],[108,109,117,125,158,166],[109,135,143,158,166],[110,112,116,124,158,166],[103,111,158,166],[112,113,158,166],[116,158,166],[114,116,158,166],[103,116,158,166],[116,117,118,135,146,158,166],[116,117,118,131,135,138,158,159,166],[101,104,151,158,166],[112,116,119,124,135,146,158,166],[116,117,119,120,124,135,143,146,158,166],[119,121,135,143,146,158,166],[68,69,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,158,166],[116,122,158,166],[123,146,151,158,166],[112,116,124,135,158,166],[125,158,166],[126,158,166],[103,127,158,166],[124,125,128,145,151,158,166],[129,158,166],[130,158,166],[116,131,132,158,166],[131,133,147,149,158,166],[104,116,135,136,137,138,158,166],[104,135,137,158,166],[135,136,158,166],[138,158,166],[139,158,166],[103,135,158,166],[116,141,142,158,166],[141,142,158,166],[109,124,135,143,158,159,166],[144,158,166],[124,145,158,166],[104,119,130,146,158,166],[109,147,158,166],[135,148,158,166],[123,149,158,166],[150,158,166],[104,109,116,118,127,135,146,149,151,158,166],[135,152,158,166],[158,166,419,458],[158,166,419,443,458],[158,166,458],[158,166,419],[158,166,419,444,458],[158,166,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457],[158,166,444,458],[116,119,121,135,143,146,152,154,158,159,166],[109,147,166],[158],[101,158,166],[101,109,127,135,138,147,151,155,156,158,166],[154,155,156,157,158,159,160,161,162,163,164,165,166],[118,143,158,166],[158,161,166],[78,82,146,158,166],[78,135,146,158,166],[73,158,166],[75,78,143,146,158,159,166],[124,143,158,159,166],[154,158,166],[73,154,158,166],[75,78,124,146,158,166],[70,71,74,77,104,116,135,146,158,166],[70,76,158,166],[74,78,104,138,146,154,158,166],[104,154,158,166],[94,104,154,158,166],[72,73,154,158,166],[78,158,166],[72,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,95,96,97,98,99,100,158,166],[78,85,86,158,166],[76,78,86,87,158,166],[77,158,166],[70,73,78,158,166],[78,82,86,87,158,166],[82,158,166],[76,78,81,146,158,166],[70,75,76,78,82,85,158,166],[104,135,158,166],[73,78,94,104,151,154,158,166],[158,166,352,392,393,395,396,397,398,399,405,408,411],[158,166,393,397,398,399],[158,166,359,393,394,397,399],[158,166,393,394,395,397,398,399,408,411],[158,166,352,357,392,397,405],[158,166,359,393,394,397,398],[158,166,169,170,352,393,394,395,396,397,398,399,400,405,406,407,409,410],[158,166,399],[158,166,352,357,392,393,398,399,403,404,405],[158,166,170,352,357,358,393,394,398,405,411],[158,166,352,357,392,395,396,398,399,405,411],[158,166,352,357,393,394,399,405],[158,166,352,357,394,399,405,406],[158,161,166,411,412,413],[158,166,411],[158,161,166,411,412],[352,396,399,405,411],[393,397,398,399],[394,399],[393,394,399,411],[101,352,357,405],[101,394],[158,166,169,352,393,394,395,396,397,398,399,405,407,410],[399],[352,357,398,399,403,405],[101,158,166,352,357,396,398,399,405],[158,166,352,357,394,399,405],[411]],"referencedMap":[[356,1],[357,2],[353,3],[354,4],[355,5],[352,6],[403,7],[401,8],[402,9],[173,10],[174,11],[258,12],[259,13],[177,14],[178,15],[288,16],[289,17],[210,10],[211,18],[204,10],[205,19],[279,20],[277,21],[278,8],[294,22],[295,23],[296,24],[297,25],[298,26],[299,27],[179,12],[180,28],[260,10],[261,29],[300,30],[301,31],[238,32],[239,33],[200,8],[201,34],[304,35],[302,36],[303,37],[305,38],[306,3],[309,39],[307,40],[310,21],[308,41],[311,42],[314,43],[312,44],[313,45],[315,46],[181,12],[182,47],[282,48],[280,49],[281,8],[256,50],[257,51],[226,52],[225,53],[223,54],[222,55],[224,56],[317,57],[316,58],[209,59],[208,10],[193,60],[191,61],[190,14],[192,62],[320,63],[324,64],[318,65],[319,66],[321,63],[322,63],[323,63],[228,67],[227,14],[293,68],[292,69],[290,70],[291,71],[213,72],[212,10],[234,73],[175,10],[176,74],[233,75],[184,76],[183,10],[241,77],[240,14],[263,78],[262,10],[207,79],[206,10],[255,80],[254,81],[328,82],[327,83],[325,84],[326,85],[237,86],[236,87],[235,88],[330,89],[329,90],[335,91],[334,92],[333,93],[284,94],[283,8],[339,95],[338,96],[336,97],[337,98],[230,99],[229,14],[332,100],[331,101],[189,102],[188,103],[187,104],[245,105],[244,106],[186,107],[185,14],[247,108],[246,14],[243,109],[242,10],[285,8],[287,110],[286,8],[342,111],[341,112],[340,113],[344,114],[343,115],[346,116],[345,117],[275,118],[276,119],[274,120],[232,121],[231,8],[253,122],[252,123],[348,124],[347,21],[203,125],[202,10],[265,126],[264,10],[172,127],[171,8],[215,128],[216,129],[221,130],[214,131],[218,132],[217,133],[219,134],[220,135],[251,136],[250,14],[199,137],[198,14],[351,138],[350,139],[349,140],[267,141],[266,10],[269,142],[268,10],[197,143],[195,144],[194,14],[196,145],[271,146],[270,10],[249,147],[248,10],[273,148],[272,10],[362,149],[363,150],[364,149],[365,151],[366,21],[367,152],[368,8],[369,153],[370,21],[371,154],[372,149],[373,155],[374,21],[375,156],[376,157],[377,158],[378,8],[379,159],[360,8],[361,160],[380,131],[381,161],[392,162],[383,163],[382,131],[385,164],[384,131],[386,165],[387,165],[388,21],[389,166],[391,167],[390,168],[416,8],[168,169],[359,8],[417,8],[418,8],[68,170],[69,170],[103,171],[104,172],[105,173],[106,174],[107,175],[108,176],[109,177],[110,178],[111,179],[112,180],[113,180],[115,181],[114,182],[116,183],[117,184],[118,185],[102,186],[153,8],[119,187],[120,188],[121,189],[154,190],[122,191],[123,192],[124,193],[125,194],[126,195],[127,196],[128,197],[129,198],[130,199],[131,200],[132,200],[133,201],[134,8],[135,202],[137,203],[136,204],[138,205],[139,206],[140,207],[141,208],[142,209],[143,210],[144,211],[145,212],[146,213],[147,214],[148,215],[149,216],[150,217],[151,218],[152,219],[443,220],[444,221],[419,222],[422,222],[441,220],[442,220],[432,220],[431,223],[429,220],[424,220],[437,220],[435,220],[439,220],[423,220],[436,220],[440,220],[425,220],[426,220],[438,220],[420,220],[427,220],[428,220],[430,220],[434,220],[445,224],[433,220],[421,220],[458,225],[457,8],[452,224],[454,226],[453,224],[446,224],[447,224],[449,224],[451,224],[455,226],[456,226],[448,226],[450,226],[155,227],[158,228],[166,229],[156,230],[160,8],[157,231],[162,8],[167,232],[163,8],[159,233],[164,8],[161,234],[165,8],[170,8],[412,8],[408,8],[169,8],[358,8],[66,8],[67,8],[13,8],[12,8],[2,8],[14,8],[15,8],[16,8],[17,8],[18,8],[19,8],[20,8],[21,8],[3,8],[22,8],[4,8],[23,8],[27,8],[24,8],[25,8],[26,8],[28,8],[29,8],[30,8],[5,8],[31,8],[32,8],[33,8],[34,8],[6,8],[38,8],[35,8],[36,8],[37,8],[39,8],[7,8],[40,8],[45,8],[46,8],[41,8],[42,8],[43,8],[44,8],[8,8],[50,8],[47,8],[48,8],[49,8],[51,8],[9,8],[52,8],[53,8],[54,8],[57,8],[55,8],[56,8],[58,8],[59,8],[10,8],[1,8],[60,8],[11,8],[64,8],[62,8],[61,8],[65,8],[63,8],[85,235],[92,236],[84,235],[99,237],[76,238],[75,239],[98,240],[93,241],[96,242],[78,243],[77,244],[73,245],[72,246],[95,247],[74,248],[79,249],[80,8],[83,249],[70,8],[101,250],[100,249],[87,251],[88,252],[90,253],[86,254],[89,255],[94,240],[81,256],[82,257],[91,258],[71,259],[97,260],[409,261],[394,262],[398,263],[410,264],[393,265],[404,8],[395,266],[411,267],[396,268],[400,268],[405,269],[399,270],[397,271],[406,272],[407,273],[414,274],[413,275],[415,276]],"exportedModulesMap":[[356,1],[357,2],[353,3],[354,4],[355,5],[352,6],[403,7],[401,8],[402,9],[173,10],[174,11],[258,12],[259,13],[177,14],[178,15],[288,16],[289,17],[210,10],[211,18],[204,10],[205,19],[279,20],[277,21],[278,8],[294,22],[295,23],[296,24],[297,25],[298,26],[299,27],[179,12],[180,28],[260,10],[261,29],[300,30],[301,31],[238,32],[239,33],[200,8],[201,34],[304,35],[302,36],[303,37],[305,38],[306,3],[309,39],[307,40],[310,21],[308,41],[311,42],[314,43],[312,44],[313,45],[315,46],[181,12],[182,47],[282,48],[280,49],[281,8],[256,50],[257,51],[226,52],[225,53],[223,54],[222,55],[224,56],[317,57],[316,58],[209,59],[208,10],[193,60],[191,61],[190,14],[192,62],[320,63],[324,64],[318,65],[319,66],[321,63],[322,63],[323,63],[228,67],[227,14],[293,68],[292,69],[290,70],[291,71],[213,72],[212,10],[234,73],[175,10],[176,74],[233,75],[184,76],[183,10],[241,77],[240,14],[263,78],[262,10],[207,79],[206,10],[255,80],[254,81],[328,82],[327,83],[325,84],[326,85],[237,86],[236,87],[235,88],[330,89],[329,90],[335,91],[334,92],[333,93],[284,94],[283,8],[339,95],[338,96],[336,97],[337,98],[230,99],[229,14],[332,100],[331,101],[189,102],[188,103],[187,104],[245,105],[244,106],[186,107],[185,14],[247,108],[246,14],[243,109],[242,10],[285,8],[287,110],[286,8],[342,111],[341,112],[340,113],[344,114],[343,115],[346,116],[345,117],[275,118],[276,119],[274,120],[232,121],[231,8],[253,122],[252,123],[348,124],[347,21],[203,125],[202,10],[265,126],[264,10],[172,127],[171,8],[215,128],[216,129],[221,130],[214,131],[218,132],[217,133],[219,134],[220,135],[251,136],[250,14],[199,137],[198,14],[351,138],[350,139],[349,140],[267,141],[266,10],[269,142],[268,10],[197,143],[195,144],[194,14],[196,145],[271,146],[270,10],[249,147],[248,10],[273,148],[272,10],[362,149],[363,150],[364,149],[365,151],[366,21],[367,152],[368,8],[369,153],[370,21],[371,154],[372,149],[373,155],[374,21],[375,156],[376,157],[377,158],[378,8],[379,159],[360,8],[361,160],[380,131],[381,161],[392,162],[383,163],[382,131],[385,164],[384,131],[386,165],[387,165],[388,21],[389,166],[391,167],[390,168],[416,8],[168,169],[359,8],[417,8],[418,8],[68,170],[69,170],[103,171],[104,172],[105,173],[106,174],[107,175],[108,176],[109,177],[110,178],[111,179],[112,180],[113,180],[115,181],[114,182],[116,183],[117,184],[118,185],[102,186],[153,8],[119,187],[120,188],[121,189],[154,190],[122,191],[123,192],[124,193],[125,194],[126,195],[127,196],[128,197],[129,198],[130,199],[131,200],[132,200],[133,201],[134,8],[135,202],[137,203],[136,204],[138,205],[139,206],[140,207],[141,208],[142,209],[143,210],[144,211],[145,212],[146,213],[147,214],[148,215],[149,216],[150,217],[151,218],[152,219],[443,220],[444,221],[419,222],[422,222],[441,220],[442,220],[432,220],[431,223],[429,220],[424,220],[437,220],[435,220],[439,220],[423,220],[436,220],[440,220],[425,220],[426,220],[438,220],[420,220],[427,220],[428,220],[430,220],[434,220],[445,224],[433,220],[421,220],[458,225],[457,8],[452,224],[454,226],[453,224],[446,224],[447,224],[449,224],[451,224],[455,226],[456,226],[448,226],[450,226],[155,227],[158,228],[166,229],[156,230],[160,8],[157,231],[162,8],[167,232],[163,8],[159,233],[164,8],[161,234],[165,8],[170,8],[412,8],[408,8],[169,8],[358,8],[66,8],[67,8],[13,8],[12,8],[2,8],[14,8],[15,8],[16,8],[17,8],[18,8],[19,8],[20,8],[21,8],[3,8],[22,8],[4,8],[23,8],[27,8],[24,8],[25,8],[26,8],[28,8],[29,8],[30,8],[5,8],[31,8],[32,8],[33,8],[34,8],[6,8],[38,8],[35,8],[36,8],[37,8],[39,8],[7,8],[40,8],[45,8],[46,8],[41,8],[42,8],[43,8],[44,8],[8,8],[50,8],[47,8],[48,8],[49,8],[51,8],[9,8],[52,8],[53,8],[54,8],[57,8],[55,8],[56,8],[58,8],[59,8],[10,8],[1,8],[60,8],[11,8],[64,8],[62,8],[61,8],[65,8],[63,8],[85,235],[92,236],[84,235],[99,237],[76,238],[75,239],[98,240],[93,241],[96,242],[78,243],[77,244],[73,245],[72,246],[95,247],[74,248],[79,249],[80,8],[83,249],[70,8],[101,250],[100,249],[87,251],[88,252],[90,253],[86,254],[89,255],[94,240],[81,256],[82,257],[91,258],[71,259],[97,260],[409,277],[394,278],[398,279],[410,280],[393,281],[404,8],[395,282],[411,283],[396,284],[400,284],[405,285],[399,270],[397,286],[406,287],[407,273],[414,288],[413,288]],"semanticDiagnosticsPerFile":[356,357,353,354,355,352,403,401,402,173,174,258,259,177,178,288,289,210,211,204,205,279,277,278,294,295,296,297,298,299,179,180,260,261,300,301,238,239,200,201,304,302,303,305,306,309,307,310,308,311,314,312,313,315,181,182,282,280,281,256,257,226,225,223,222,224,317,316,209,208,193,191,190,192,320,324,318,319,321,322,323,228,227,293,292,290,291,213,212,234,175,176,233,184,183,241,240,263,262,207,206,255,254,328,327,325,326,237,236,235,330,329,335,334,333,284,283,339,338,336,337,230,229,332,331,189,188,187,245,244,186,185,247,246,243,242,285,287,286,342,341,340,344,343,346,345,275,276,274,232,231,253,252,348,347,203,202,265,264,172,171,215,216,221,214,218,217,219,220,251,250,199,198,351,350,349,267,266,269,268,197,195,194,196,271,270,249,248,273,272,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,360,361,380,381,392,383,382,385,384,386,387,388,389,391,390,416,168,359,417,418,68,69,103,104,105,106,107,108,109,110,111,112,113,115,114,116,117,118,102,153,119,120,121,154,122,123,124,125,126,127,128,129,130,131,132,133,134,135,137,136,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,443,444,419,422,441,442,432,431,429,424,437,435,439,423,436,440,425,426,438,420,427,428,430,434,445,433,421,458,457,452,454,453,446,447,449,451,455,456,448,450,155,158,166,156,160,157,162,167,163,159,164,161,165,170,412,408,169,358,66,67,13,12,2,14,15,16,17,18,19,20,21,3,22,4,23,27,24,25,26,28,29,30,5,31,32,33,34,6,38,35,36,37,39,7,40,45,46,41,42,43,44,8,50,47,48,49,51,9,52,53,54,57,55,56,58,59,10,1,60,11,64,62,61,65,63,85,92,84,99,76,75,98,93,96,78,77,73,72,95,74,79,80,83,70,101,100,87,88,90,86,89,94,81,82,91,71,97,409,394,398,410,393,404,395,411,396,400,405,399,397,406,407,414,413,415],"affectedFilesPendingEmit":[409,394,398,410,393,404,395,411,396,400,405,399,397,406,407,414,413,415]},"version":"5.4.5"}
1
+ {"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.es2023.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.es2022.regexp.d.ts","./node_modules/typescript/lib/lib.es2023.array.d.ts","./node_modules/typescript/lib/lib.es2023.collection.d.ts","./node_modules/typescript/lib/lib.esnext.collection.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/typescript/lib/lib.esnext.disposable.d.ts","./node_modules/typescript/lib/lib.esnext.promise.d.ts","./node_modules/typescript/lib/lib.esnext.decorators.d.ts","./node_modules/typescript/lib/lib.esnext.object.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/@types/ws/index.d.ts","./node_modules/bun-types/fetch.d.ts","./node_modules/bun-types/globals.d.ts","./node_modules/bun-types/bun.d.ts","./node_modules/bun-types/overrides.d.ts","./node_modules/bun-types/ffi.d.ts","./node_modules/bun-types/test.d.ts","./node_modules/bun-types/html-rewriter.d.ts","./node_modules/bun-types/jsc.d.ts","./node_modules/bun-types/sqlite.d.ts","./node_modules/bun-types/wasm.d.ts","./node_modules/bun-types/deprecated.d.ts","./node_modules/bun-types/index.d.ts","./node_modules/@types/bun/index.d.ts","./node_modules/memoirist/src/index.ts","./node_modules/eventemitter3/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/symbols/symbols.d.ts","./node_modules/@sinclair/typebox/build/require/type/symbols/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/any/any.d.ts","./node_modules/@sinclair/typebox/build/require/type/any/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/mapped/mapped-key.d.ts","./node_modules/@sinclair/typebox/build/require/type/mapped/mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/async-iterator/async-iterator.d.ts","./node_modules/@sinclair/typebox/build/require/type/async-iterator/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/constructor/constructor.d.ts","./node_modules/@sinclair/typebox/build/require/type/constructor/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/function/function.d.ts","./node_modules/@sinclair/typebox/build/require/type/function/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/never/never.d.ts","./node_modules/@sinclair/typebox/build/require/type/never/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/recursive/recursive.d.ts","./node_modules/@sinclair/typebox/build/require/type/recursive/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/readonly/readonly.d.ts","./node_modules/@sinclair/typebox/build/require/type/readonly/readonly-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/readonly/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/intersect/intersect-type.d.ts","./node_modules/@sinclair/typebox/build/require/type/intersect/intersect-evaluated.d.ts","./node_modules/@sinclair/typebox/build/require/type/intersect/intersect.d.ts","./node_modules/@sinclair/typebox/build/require/type/intersect/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/union/union-type.d.ts","./node_modules/@sinclair/typebox/build/require/type/union/union-evaluated.d.ts","./node_modules/@sinclair/typebox/build/require/type/union/union.d.ts","./node_modules/@sinclair/typebox/build/require/type/union/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/tuple/tuple.d.ts","./node_modules/@sinclair/typebox/build/require/type/tuple/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/error/error.d.ts","./node_modules/@sinclair/typebox/build/require/type/error/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/string/string.d.ts","./node_modules/@sinclair/typebox/build/require/type/string/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/boolean/boolean.d.ts","./node_modules/@sinclair/typebox/build/require/type/boolean/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/number/number.d.ts","./node_modules/@sinclair/typebox/build/require/type/number/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/integer/integer.d.ts","./node_modules/@sinclair/typebox/build/require/type/integer/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/bigint/bigint.d.ts","./node_modules/@sinclair/typebox/build/require/type/bigint/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/literal/literal.d.ts","./node_modules/@sinclair/typebox/build/require/type/literal/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/parse.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/finite.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/generate.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/syntax.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/pattern.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/template-literal.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/union.d.ts","./node_modules/@sinclair/typebox/build/require/type/template-literal/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/indexed/indexed-property-keys.d.ts","./node_modules/@sinclair/typebox/build/require/type/indexed/indexed-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/indexed/indexed.d.ts","./node_modules/@sinclair/typebox/build/require/type/indexed/indexed-from-mapped-key.d.ts","./node_modules/@sinclair/typebox/build/require/type/indexed/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/iterator/iterator.d.ts","./node_modules/@sinclair/typebox/build/require/type/iterator/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/promise/promise.d.ts","./node_modules/@sinclair/typebox/build/require/type/promise/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/sets/set.d.ts","./node_modules/@sinclair/typebox/build/require/type/sets/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/mapped/mapped.d.ts","./node_modules/@sinclair/typebox/build/require/type/mapped/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/optional/optional.d.ts","./node_modules/@sinclair/typebox/build/require/type/optional/optional-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/optional/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/enum/enum.d.ts","./node_modules/@sinclair/typebox/build/require/type/enum/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/not/not.d.ts","./node_modules/@sinclair/typebox/build/require/type/not/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/regexp/regexp.d.ts","./node_modules/@sinclair/typebox/build/require/type/regexp/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/record/record.d.ts","./node_modules/@sinclair/typebox/build/require/type/record/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/ref/ref.d.ts","./node_modules/@sinclair/typebox/build/require/type/ref/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/unsafe/unsafe.d.ts","./node_modules/@sinclair/typebox/build/require/type/unsafe/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/transform/transform.d.ts","./node_modules/@sinclair/typebox/build/require/type/transform/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/static/static.d.ts","./node_modules/@sinclair/typebox/build/require/type/static/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/object/object.d.ts","./node_modules/@sinclair/typebox/build/require/type/object/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/helpers/helpers.d.ts","./node_modules/@sinclair/typebox/build/require/type/helpers/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/array/array.d.ts","./node_modules/@sinclair/typebox/build/require/type/array/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/date/date.d.ts","./node_modules/@sinclair/typebox/build/require/type/date/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/null/null.d.ts","./node_modules/@sinclair/typebox/build/require/type/null/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/symbol/symbol.d.ts","./node_modules/@sinclair/typebox/build/require/type/symbol/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/uint8array/uint8array.d.ts","./node_modules/@sinclair/typebox/build/require/type/uint8array/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/undefined/undefined.d.ts","./node_modules/@sinclair/typebox/build/require/type/undefined/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/unknown/unknown.d.ts","./node_modules/@sinclair/typebox/build/require/type/unknown/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/void/void.d.ts","./node_modules/@sinclair/typebox/build/require/type/void/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/schema/schema.d.ts","./node_modules/@sinclair/typebox/build/require/type/schema/anyschema.d.ts","./node_modules/@sinclair/typebox/build/require/type/schema/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/clone/type.d.ts","./node_modules/@sinclair/typebox/build/require/type/clone/value.d.ts","./node_modules/@sinclair/typebox/build/require/type/clone/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/guard/type.d.ts","./node_modules/@sinclair/typebox/build/require/type/guard/value.d.ts","./node_modules/@sinclair/typebox/build/require/type/guard/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/patterns/patterns.d.ts","./node_modules/@sinclair/typebox/build/require/type/patterns/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/registry/format.d.ts","./node_modules/@sinclair/typebox/build/require/type/registry/type.d.ts","./node_modules/@sinclair/typebox/build/require/type/registry/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/awaited/awaited.d.ts","./node_modules/@sinclair/typebox/build/require/type/awaited/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/keyof/keyof-property-keys.d.ts","./node_modules/@sinclair/typebox/build/require/type/keyof/keyof.d.ts","./node_modules/@sinclair/typebox/build/require/type/keyof/keyof-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/keyof/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/composite/composite.d.ts","./node_modules/@sinclair/typebox/build/require/type/composite/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/const/const.d.ts","./node_modules/@sinclair/typebox/build/require/type/const/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/constructor-parameters/constructor-parameters.d.ts","./node_modules/@sinclair/typebox/build/require/type/constructor-parameters/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/deref/deref.d.ts","./node_modules/@sinclair/typebox/build/require/type/deref/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/exclude/exclude-from-template-literal.d.ts","./node_modules/@sinclair/typebox/build/require/type/exclude/exclude.d.ts","./node_modules/@sinclair/typebox/build/require/type/exclude/exclude-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/exclude/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/extends/extends-check.d.ts","./node_modules/@sinclair/typebox/build/require/type/extends/extends-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/extends/extends.d.ts","./node_modules/@sinclair/typebox/build/require/type/extends/extends-from-mapped-key.d.ts","./node_modules/@sinclair/typebox/build/require/type/extends/extends-undefined.d.ts","./node_modules/@sinclair/typebox/build/require/type/extends/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/extract/extract-from-template-literal.d.ts","./node_modules/@sinclair/typebox/build/require/type/extract/extract.d.ts","./node_modules/@sinclair/typebox/build/require/type/extract/extract-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/extract/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/instance-type/instance-type.d.ts","./node_modules/@sinclair/typebox/build/require/type/instance-type/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/intrinsic-from-mapped-key.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/intrinsic.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/capitalize.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/lowercase.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/uncapitalize.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/uppercase.d.ts","./node_modules/@sinclair/typebox/build/require/type/intrinsic/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/omit/omit-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/omit/omit.d.ts","./node_modules/@sinclair/typebox/build/require/type/omit/omit-from-mapped-key.d.ts","./node_modules/@sinclair/typebox/build/require/type/omit/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/parameters/parameters.d.ts","./node_modules/@sinclair/typebox/build/require/type/parameters/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/readonly-optional/readonly-optional.d.ts","./node_modules/@sinclair/typebox/build/require/type/readonly-optional/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/partial/partial.d.ts","./node_modules/@sinclair/typebox/build/require/type/partial/partial-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/partial/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/pick/pick-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/pick/pick.d.ts","./node_modules/@sinclair/typebox/build/require/type/pick/pick-from-mapped-key.d.ts","./node_modules/@sinclair/typebox/build/require/type/pick/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/required/required.d.ts","./node_modules/@sinclair/typebox/build/require/type/required/required-from-mapped-result.d.ts","./node_modules/@sinclair/typebox/build/require/type/required/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/rest/rest.d.ts","./node_modules/@sinclair/typebox/build/require/type/rest/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/return-type/return-type.d.ts","./node_modules/@sinclair/typebox/build/require/type/return-type/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/strict/strict.d.ts","./node_modules/@sinclair/typebox/build/require/type/strict/index.d.ts","./node_modules/@sinclair/typebox/build/require/type/type/json.d.ts","./node_modules/@sinclair/typebox/build/require/type/type/javascript.d.ts","./node_modules/@sinclair/typebox/build/require/type/type/index.d.ts","./node_modules/@sinclair/typebox/build/require/index.d.ts","./node_modules/@sinclair/typebox/build/require/errors/errors.d.ts","./node_modules/@sinclair/typebox/build/require/errors/function.d.ts","./node_modules/@sinclair/typebox/build/require/errors/index.d.ts","./node_modules/@sinclair/typebox/build/require/compiler/compiler.d.ts","./node_modules/@sinclair/typebox/build/require/compiler/index.d.ts","./node_modules/openapi-types/dist/index.d.ts","./node_modules/@types/cookie/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/guard/guard.d.ts","./node_modules/@sinclair/typebox/build/require/value/guard/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/cast/cast.d.ts","./node_modules/@sinclair/typebox/build/require/value/cast/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/check/check.d.ts","./node_modules/@sinclair/typebox/build/require/value/check/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/clean/clean.d.ts","./node_modules/@sinclair/typebox/build/require/value/clean/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/clone/clone.d.ts","./node_modules/@sinclair/typebox/build/require/value/clone/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/convert/convert.d.ts","./node_modules/@sinclair/typebox/build/require/value/convert/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/create/create.d.ts","./node_modules/@sinclair/typebox/build/require/value/create/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/default/default.d.ts","./node_modules/@sinclair/typebox/build/require/value/default/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/delta/delta.d.ts","./node_modules/@sinclair/typebox/build/require/value/delta/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/equal/equal.d.ts","./node_modules/@sinclair/typebox/build/require/value/equal/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/hash/hash.d.ts","./node_modules/@sinclair/typebox/build/require/value/hash/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/mutate/mutate.d.ts","./node_modules/@sinclair/typebox/build/require/value/mutate/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/pointer/pointer.d.ts","./node_modules/@sinclair/typebox/build/require/value/pointer/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/transform/decode.d.ts","./node_modules/@sinclair/typebox/build/require/value/transform/encode.d.ts","./node_modules/@sinclair/typebox/build/require/value/transform/has.d.ts","./node_modules/@sinclair/typebox/build/require/value/transform/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/value/value.d.ts","./node_modules/@sinclair/typebox/build/require/value/value/index.d.ts","./node_modules/@sinclair/typebox/build/require/value/index.d.ts","./src/error.ts","./src/context.ts","./src/handler.ts","./src/sucrose.ts","./src/utils.ts","./src/cookies.ts","./src/types.ts","./src/trace.ts","./node_modules/@sinclair/typebox/build/require/system/policy.d.ts","./node_modules/@sinclair/typebox/build/require/system/system.d.ts","./node_modules/@sinclair/typebox/build/require/system/index.d.ts","./src/formats.ts","./src/type-system.ts","./src/ws/index.ts","./src/ws/types.ts","./node_modules/fast-querystring/lib/index.d.ts","./src/compose.ts","./src/dynamic-handle.ts","./src/index.ts","./node_modules/expect-type/dist/index.d.ts","./test/types/plugins.ts","./test/types/index.ts","./test/types/scoped.ts","./node_modules/@types/benchmark/index.d.ts","./node_modules/@types/estree/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/semver/classes/semver.d.ts","./node_modules/@types/semver/functions/parse.d.ts","./node_modules/@types/semver/functions/valid.d.ts","./node_modules/@types/semver/functions/clean.d.ts","./node_modules/@types/semver/functions/inc.d.ts","./node_modules/@types/semver/functions/diff.d.ts","./node_modules/@types/semver/functions/major.d.ts","./node_modules/@types/semver/functions/minor.d.ts","./node_modules/@types/semver/functions/patch.d.ts","./node_modules/@types/semver/functions/prerelease.d.ts","./node_modules/@types/semver/functions/compare.d.ts","./node_modules/@types/semver/functions/rcompare.d.ts","./node_modules/@types/semver/functions/compare-loose.d.ts","./node_modules/@types/semver/functions/compare-build.d.ts","./node_modules/@types/semver/functions/sort.d.ts","./node_modules/@types/semver/functions/rsort.d.ts","./node_modules/@types/semver/functions/gt.d.ts","./node_modules/@types/semver/functions/lt.d.ts","./node_modules/@types/semver/functions/eq.d.ts","./node_modules/@types/semver/functions/neq.d.ts","./node_modules/@types/semver/functions/gte.d.ts","./node_modules/@types/semver/functions/lte.d.ts","./node_modules/@types/semver/functions/cmp.d.ts","./node_modules/@types/semver/functions/coerce.d.ts","./node_modules/@types/semver/classes/comparator.d.ts","./node_modules/@types/semver/classes/range.d.ts","./node_modules/@types/semver/functions/satisfies.d.ts","./node_modules/@types/semver/ranges/max-satisfying.d.ts","./node_modules/@types/semver/ranges/min-satisfying.d.ts","./node_modules/@types/semver/ranges/to-comparators.d.ts","./node_modules/@types/semver/ranges/min-version.d.ts","./node_modules/@types/semver/ranges/valid.d.ts","./node_modules/@types/semver/ranges/outside.d.ts","./node_modules/@types/semver/ranges/gtr.d.ts","./node_modules/@types/semver/ranges/ltr.d.ts","./node_modules/@types/semver/ranges/intersects.d.ts","./node_modules/@types/semver/ranges/simplify.d.ts","./node_modules/@types/semver/ranges/subset.d.ts","./node_modules/@types/semver/internals/identifiers.d.ts","./node_modules/@types/semver/index.d.ts"],"fileInfos":[{"version":"824cb491a40f7e8fdeb56f1df5edf91b23f3e3ee6b4cde84d4a99be32338faee","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","1c0cdb8dc619bc549c3e5020643e7cf7ae7940058e8c7e5aefa5871b6d86f44b","886e50ef125efb7878f744e86908884c0133e7a6d9d80013f421b0cd8fb2af94",{"version":"138fb588d26538783b78d1e3b2c2cc12d55840b97bf5e08bca7f7a174fbe2f17","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"b20fe0eca9a4e405f1a5ae24a2b3290b37cf7f21eba6cbe4fc3fab979237d4f3","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"49ed889be54031e1044af0ad2c603d627b8bda8b50c1a68435fe85583901d072","affectsGlobalScope":true},{"version":"e93d098658ce4f0c8a0779e6cab91d0259efb88a318137f686ad76f8410ca270","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"8073890e29d2f46fdbc19b8d6d2eb9ea58db9a2052f8640af20baff9afbc8640","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"51e547984877a62227042850456de71a5c45e7fe86b7c975c6e68896c86fa23b","affectsGlobalScope":true},{"version":"956d27abdea9652e8368ce029bb1e0b9174e9678a273529f426df4b3d90abd60","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"d8670852241d4c6e03f2b89d67497a4bbefe29ecaa5a444e2c11a9b05e6fccc6","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"caccc56c72713969e1cfe5c3d44e5bab151544d9d2b373d7dbe5a1e4166652be","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"08a58483392df5fcc1db57d782e87734f77ae9eab42516028acbfe46f29a3ef7","affectsGlobalScope":true},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true},{"version":"13f6e6380c78e15e140243dc4be2fa546c287c6d61f4729bc2dd7cf449605471","affectsGlobalScope":true},{"version":"15b98a533864d324e5f57cd3cfc0579b231df58c1c0f6063ea0fcb13c3c74ff9","affectsGlobalScope":true},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"d78c698fa755ef94e3af591883bfee3a330ffec36392e00aaacdff3541cf5382","7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1",{"version":"a14ed46fa3f5ffc7a8336b497cd07b45c2084213aaca933a22443fcb2eef0d07","affectsGlobalScope":true},"6968359c8dbc693224fd1ea0b1f96b135f14d8eee3d6e23296d68c3a9da3ea00",{"version":"79d75a353f29d9f7fc63e879ccebe213baaaea26676fb3e47cc96cf221b27b4f","affectsGlobalScope":true},"dfdc7699360a0d512d7e31c69f75cb6a419cf415c98673e24499793170db5d6b","dcf46daa1e04481b1c2f360c7a77bf019885bd70353a92aa698b9c22b7fe3d6b",{"version":"033350619c2cfcbeab2a483f4b221e0866e17cc4ac514240d285d35c35eecf7c","affectsGlobalScope":true},"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb",{"version":"b197fb2d5fa71cebc66e5d10e15c7d02f15fcd3194fbdaafeb964262582f2a82","affectsGlobalScope":true},"1a7f593d587f49ca97710c021c453ab1b95db5e39e58567f4af644f97a5fb0e0","dd4705d1d78af32c407e93e5df009962bed324599d6a5b2a9d661ba44dd99e43","3a02975d4a7034567425e529a0770f7f895ed605d2b576f7831668b7beea9fea","7525257b4aa35efc7a1bbc00f205a9a96c4e4ab791da90db41b77938c4e0c18e","cf87b355c4f531e98a9bba2b0e62d413b49b58b26bf8a9865e60a22d3af1fcd3",{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true},{"version":"1a08fe5930473dcae34b831b3440cd51ff2c682cf03bd70e28812751dd1644dd","affectsGlobalScope":true},"6f3e00b838cf23f7837ffca5da88ae25f0a81742af9ccadce5cb85ac72050929","304f66274aa8119e8d65a49b1cff84cbf803def6afe1b2cc987386e9a9890e22","cbcb993f1fa22b7769074eb09c1307756e6380659a2990d6f50cfd8943bd8333","55a93997681797056da069cfac92878bff4d2a35e61c1c16280ee0cba38702f2","ea25afcaf96904668f7eebc1b834f89b5b5e5acafd430c29990028a1aaa0bcbe","df981b2ce32930887db27eeae29e48b9b841e4ba0bbba1162ebed04c778cd7e1",{"version":"ea455cc68871b049bcecd9f56d4cf27b852d6dafd5e3b54468ca87cc11604e4d","affectsGlobalScope":true},"3be96458790a77cb357856dab45d1cc8383ac63ba4e085f620b202fb62a6e1db","02d85d03fd4a4f63cba0b133f0e0192368dfeb4338bd33f87788a4f6302de873","bb3a0ce56babb71d7c208ed848b4aafe545e7a7e06304fc0c8cfe3ad328cab7a",{"version":"43bb766c0dc5f1150021f161aa6831eb2cc75dab278172408515cb6e47f697a9","affectsGlobalScope":true},{"version":"8bcf09ba67bd0ec12a9f1efc1e58e1ba2cb1ff78920ce6cf67ebfe6003c54b82","affectsGlobalScope":true},"13ce7518e39051544dd1e3124c185665adda05a5021676f2606c2c74ad2c964f","4ac5899be65d5e2cabe3aaf3dfc2cf7641e54dde23db198d9f683dfabe228145","124dacf89c97915479ed6ad81b09ba42fd40962d069c0642fed42e2d9719f2ba","139ad1dc93a503da85b7a0d5f615bddbae61ad796bc68fedd049150db67a1e26","ad06959073c066bb9543ef9c1dee37fc3140d2ecaae42b97bf4e27f2f03d6511","9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","41c800136d52bf8d9ea3a81094708100f339494572f47f4f351b0d798657300f","269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","3c1f19c7abcda6b3a4cf9438a15c7307a080bd3b51dfd56b198d9f86baf19447","98e7b7220dad76c509d584c9b7b1ec4dcbd7df5e3a2d37d28c54f74461ec0975",{"version":"c61b5fad633f25bb0de0f95612191c1df9a6671cd66f451507b5223bff41b50d","affectsGlobalScope":true},{"version":"d21966ba3284ade60cb94eb2c533ab5b2af7fd0b4b28462043f6ebcb8400bd21","affectsGlobalScope":true},"98e00f3613402504bc2a2c9a621800ab48e0a463d1eed062208a4ae98ad8f84c","b8e9e44ce8eba70af569523ff31d669cc239a93f548899a259f3224392a75e6c","005d1caa2a5d9bc096f75b598d0fd184bc848dd2665b050a17a17d5dc1ef652d","619735e4e221e1bf137ae3efa5330beee4a06039dccb876c822f9d8913a392da",{"version":"3560d0809b0677d77e39d0459ae6129c0e045cb3d43d1f345df06cf7ab7d6029","affectsGlobalScope":true},{"version":"5ab086d9457abbc69cca270e5475073f2e8eb35b2fb810c516400de7b7c7d575","affectsGlobalScope":true},"2a2fd53f2d963624b596fb720b390cbfe8d744e92cb55b48a8090a8fd42a302d","1f01c8fde66abc4ff6aed1db050a928b3bcb6f29bc89630a0d748a0649e14074","60223439b7ee9b26a08d527cacc8b34ea6c6741589ef4949f4669c9aeb97978e",{"version":"48fffe7824c2e8cf8c812f528c33d4c4f502767582083df35920a7f56fe794b3","affectsGlobalScope":true},"561bf7d1d3163db272980f9167b4b98f6a9ee8698c5955e9d9584e84088aad51",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"a42be67ed1ddaec743582f41fc219db96a1b69719fccac6d1464321178d610fc","f7163a5d37d21f636f6a5cd1c064ce95fada21917859a64b6cc49a8b6fd5c1a8","720f5d028d71bc22ed4a5311a6ea884329db475d994f805ea86470111eccc1a1",{"version":"af674bd72a6717a27e95dcc3eea6522f46596da680f30c9fcfeb3ec425a4ef00","affectsGlobalScope":true},{"version":"5c2dcfec6c12b7725bb8178ce2692dc04dadc4d51b80fe503a7422fb7e2f84cb","affectsGlobalScope":true},{"version":"9603687f2c76dc11c02cca33e4b6672a8942934109f727a619feef030d24bd4b","affectsGlobalScope":true},"7f33db341488580a55f30ecfdf04e70c8312fd26fc2692903c7186217ae34eff",{"version":"95f57e08c3c9a85cb77dcea65e5c5d0106d3217defed801de3db7a0e27a3e590","affectsGlobalScope":true},{"version":"2b8af6e8cf44313406800b820bffc49e83a8ec4598772db25954d03a86c96818","affectsGlobalScope":true},"6813c4ebad2ed9fd49be7805c4084cbbc2d484cca1dfafc6a8a196689b5d476a","965984634a4c933d7178f1e6f6e4e0a83560eee5d187c90d9e5a5738d0391a34",{"version":"d2e66d9477edaa0e4dea79d699f0855a5a7419915da740e28fbfdb322c6a60a6","affectsGlobalScope":true},{"version":"ca69bbf884a17e7a485bb4fcd129386874050916b275e414af14b2170b4ea728","affectsGlobalScope":true},"b52c121cd491cfdbea04c3a77d23e193c23cb411e7598a04ba13a4592842fe2f","37be812b06e518320ba82e2aff3ac2ca37370a9df917db708f081b9043fa3315","950b04ccdffb6758539b5319778e4b84d7bb37088a01d3dffeb73f17498d0519","27679e96d1bd38c5938178aaf4abe8627493090b63d6bae2ce8436e6a87ebe4d","b104e2da53231a529373174880dc0abfbc80184bb473b6bf2a9a0746bebb663d","ee91a5fbbd1627c632df89cce5a4054f9cc6e7413ebdccc82b27c7ffeedf982d","85c8731ca285809fc248abf21b921fe00a67b6121d27060d6194eddc0e042b1a","6bac0cbdf1bc85ae707f91fdf037e1b600e39fb05df18915d4ecab04a1e59d3c","5688b21a05a2a11c25f56e53359e2dcda0a34cb1a582dbeb1eaacdeca55cb699","35558bf15f773acbe3ed5ac07dd27c278476630d85245f176e85f9a95128b6e0","951f54e4a63e82b310439993170e866dba0f28bb829cbc14d2f2103935cea381","4454a999dc1676b866450e8cddd9490be87b391b5526a33f88c7e45129d30c5d","b9555068bb9238efcb5a251c949292fe4ea2d265cf4fc4e009d4a917242cf743","f497cad2b33824d8b566fa276cfe3561553f905fdc6b40406c92bcfcaec96552","2e9fd4d6893aa8c311ca62ca211b07167bb6a9e707ad304db93e7ccdf349564c","5aa046aaab44da1a63d229bd67a7a1344afbd6f64db20c2bbe3981ceb2db3b07","c9ecb910b3b4c0cf67bc74833fc41585141c196b5660d2eb3a74cfffbf5aa266","33dcfba8a7e4acbe23974d342c44c36d7382c3d1d261f8aef28261a7a5df2969","a7b6046c44d5fda21d39b3266805d37a2811c2f639bf6b40a633b9a5fb4f5d88","80b036a132f3def4623aad73d526c6261dcae3c5f7013857f9ecf6589b72951f","99013139312db746c142f27515a14cdebb61ff37f20ee1de6a58ce30d36a4f0d","71da852f38ac50d2ae43a7b7f2899b10a2000727fee293b0b72123ed2e7e2ad6","74dd1096fca1fec76b951cf5eacf609feaf919e67e13af02fed49ec3b77ea797","de26700eb7277e8cfdde32ebb21b3d9ad1d713b64fdc2019068b857611e8f0c4","eead81512c6e4dee768ba9adf615c04b6d8e55c19ebce10bbd5e8795f161bd56","dc6d963e0fecd7ddcc6dcf15f1a618eb6d0f121d6286860c4b7bccc67a13d3a6","457fd1e6d6f359d7fa2ca453353f4317efccae5c902b13f15c587597015212bc","473b2b42af720ebdb539988c06e040fd9600facdeb23cb297d72ee0098d8598f","05888e854039bca80d459ba465dbda944ec5574547de184da176b2598ba804e5","325b1b1c165201b7e18feb7102c0e6ef40c31d320d1e81007ac2258cf1274c38","5b1ef94b03042629c76350fe18be52e17ab70f1c3be8f606102b30a5cd86c1b3","45295299c53bc46a2b4049c0ffe494df4d59c62c85f5d07b07f9c4089e1c324c","082b818038423de54be877cebdb344a2e3cf3f6abcfc48218d8acf95c030426a","813514ef625cb8fc3befeec97afddfb3b80b80ced859959339d99f3ad538d8fe","039cd54028eb988297e189275764df06c18f9299b14c063e93bd3f30c046fee6","e91cfd040e6da28427c5c4396912874902c26605240bdc3457cc75b6235a80f2","b4347f0b45e4788c18241ac4dee20ceab96d172847f1c11d42439d3de3c09a3e","16fe6721dc0b4144a0cdcef98857ee19025bf3c2a3cc210bcd0b9d0e25f7cec8","346d903799e8ea99e9674ba5745642d47c0d77b003cc7bb93e1d4c21c9e37101","3997421bb1889118b1bbfc53dd198c3f653bf566fd13c663e02eb08649b985c4","2d1ac54184d897cb5b2e732d501fa4591f751678717fd0c1fd4a368236b75cba","bade30041d41945c54d16a6ec7046fba6d1a279aade69dfdef9e70f71f2b7226","56fbea100bd7dd903dc49a1001995d3c6eee10a419c66a79cdb194bff7250eb7","fe8d26b2b3e519e37ceea31b1790b17d7c5ab30334ca2b56d376501388ba80d6","37ad0a0c2b296442072cd928d55ef6a156d50793c46c2e2497da1c2750d27c1e","eb58c4dbc6fec60617d80f8ccf23900a64d3190fda7cfb2558b389506ec69be0","578929b1c1e3adaed503c0a0f9bda8ba3fea598cc41ad5c38932f765684d9888","be93d07586d09e1b6625e51a1591d6119c9f1cbd95718497636a406ec42babee","a062b507ed5fc23fbc5850fd101bc9a39e9a0940bb52a45cd4624176337ad6b8","4160c37eac7870ef6c5691e03c85409e2c6e107dd634a60c62b9179a64f86f6c","da99da798b968bf8d73e261ff363f820b9a407052deb724a0f727b9929f0a2ca","5bde81e8b0efb2d977c6795f9425f890770d54610764b1d8df340ce35778c4f8","20fd0402351907669405355eeae8db00b3cf0331a3a86d8142f7b33805174f57","da6949af729eca1ec1fe867f93a601988b5b206b6049c027d0c849301d20af6f","7008f240ea3a5a344be4e5f9b5dbf26721aad3c5cfef5ff79d133fa7450e48fa","6b9834994379cc338869c9fb039491de1073781e36b4e24aa5d509dbf49d55bd","32ac7684c856eac88fde19999aca35546d7d0cb4b9f72da529f424abc3598bf3","63867d1e2b04e11f4303b7ed5902c8594ef533442de774377652cb33da7ad880","2a02d7f8c22d297167269aff17fddeeaf6fa70ca464fab1abedfb16209997da4","d5e9d32cc9813a5290a17492f554999e33f1aa083a128d3e857779548537a778","776f49489fa2e461b40370e501d8e775ddb32433c2d1b973f79d9717e1d79be5","be94ea1bfaa2eeef1e821a024914ef94cf0cba05be8f2e7df7e9556231870a1d","40cd13782413c7195ad8f189f81174850cc083967d056b23d529199d64f02c79","05e041810faf710c1dcd03f3ffde100c4a744672d93512314b1f3cfffccdaf20","15a8f79b1557978d752c0be488ee5a70daa389638d79570507a3d4cfc620d49d","968ee57037c469cffb3b0e268ab824a9c31e4205475b230011895466a1e72da4","adea48f7cbb6168c4b9e71c357d5648220b68a880d5468745853add4efd62e5f","921e3bd6325acb712cd319eaec9392c9ad81f893dead509ab2f4e688f265e536","60f6768c96f54b870966957fb9a1b176336cd82895ded088980fb506c032be1c","755d9b267084db4ea40fa29653ea5fc43e125792b1940f2909ec70a4c7f712d8","7e3056d5333f2d8a9e54324c2e2293027e4cd9874615692a53ad69090894d116","7cc9d600b2070b1e5c220044a8d5a58b40da1c11399b6c8968711de9663dc6b2","45f36cf09d3067cd98b39a7d430e0e531f02911dd6d63b6d784b1955eef86435","507648bea5a53b9db3d6c27015b957ef5afaefbe918707ee01e9bb0eb1f781f4","97e320c56905d9fa6ac8bd652cea750265384f048505870831e273050e2878cc","456a9a12ad5d57af0094edf99ceab1804449f6e7bc773d85d09c56a18978a177","a8e2a77f445a8a1ce61bfd4b7b22664d98cf19b84ec6a966544d0decec18e143","467330ce00fbe3b3af0fe5c06c05fdfe223823f70a8338413eb491471b39200d","960b6e1edfb9aafbd560eceaae0093b31a9232ab273f4ed776c647b2fb9771da","3759c8a198e22de44eb968b3b01a3aafcc06194ea037ba6e05e1f624ef4c5692","70d48a1faa86f67c9cb8a39babc5049246d7c67b6617cd08f64e29c055897ca9","0a347c2088c3b1726b95ccde77953bede00dd9dd2fda84585fa6f9f6e9573c18","8cc3abb4586d574a3faeea6747111b291e0c9981003a0d72711351a6bcc01421","6ade56d2afdf75a9bd55cd9c8593ed1d78674804d9f6d9aba04f807f3179979e","b67acb619b761e91e3a11dddb98c51ee140361bc361eb17538f1c3617e3ec157","18ded7cfa305f7c85fb71888d06860b32287e9672214ff6291823bb0a59c063f","5d89ca552233ac2d61aee34b0587f49111a54a02492e7a1098e0701dedca60c9","9955d3828944f4f06c027494af4b3ba3ca72e7933130d1150505cc3c1e142aee","fdc4fd2c610b368104746960b45216bc32685927529dd871a5330f4871d14906","7b5d77c769a6f54ea64b22f1877d64436f038d9c81f1552ad11ed63f394bd351","4f7d54c603949113f45505330caae6f41e8dbb59841d4ae20b42307dc4579835","9daeb8d87cb8dc0fae773d8a82d420f9adbd59ba9531ea6736f1322876c6af12","1ed0dc05908eb15f46379bc1cb64423760e59d6c3de826a970b2e2f6da290bf5","db89ef053f209839606e770244031688c47624b771ff5c65f0fa1ec10a6919f1","4d45b88987f32b2ac744f633ff5ddb95cd10f64459703f91f1633ff457d6c30d","f9b0dc747f13dcc09e40c26ddcc118b1bafc3152f771fdc32757a7f8916a11fc","7035fc608c297fd38dfe757d44d3483a570e2d6c8824b2d6b20294d617da64c6","22160a296186123d2df75280a1fab70d2105ce1677af1ebb344ffcb88eef6e42","9067b3fd7d71165d4c34fcbbf29f883860fd722b7e8f92e87da036b355a6c625","8512fd4a480cd8ef8bf923a85ff5e97216fa93fb763ec871144a9026e1c9dade","2aa58b491183eedf2c8ae6ef9a610cd43433fcd854f4cc3e2492027fbe63f5ca","e01ab4b99cc4a775d06155e9cadd2ebd93e4af46e2723cb9361f24a4e1f178ef","9a13410635d5cc9c2882e67921c59fb26e77b9d99efa1a80b5a46fdc2954afce","ce1f3439cb1c5a207f47938e68752730892fc3e66222227effc6a8b693450b82","295ce2cf585c26a9b71ba34fbb026d2b5a5f0d738b06a356e514f39c20bf38ba","342f10cf9ba3fbf52d54253db5c0ac3de50360b0a3c28e648a449e28a4ac8a8c","c485987c684a51c30e375d70f70942576fa86e9d30ee8d5849b6017931fccc6f","320bd1aa480e22cdd7cd3d385157258cc252577f4948cbf7cfdf78ded9d6d0a8","4ee053dfa1fce5266ecfae2bf8b6b0cb78a6a76060a1dcf66fb7215b9ff46b0b","1f84d8b133284b596328df47453d3b3f3817ad206cf3facf5eb64b0a2c14f6d7","2f90e4a338adccf2f1906241a1f48ab1e6e5679fb8f923993fd0318ec6b4ebfc","cc2eb5b23140bbceadf000ef2b71d27ac011d1c325b0fc5ecd42a3221db5fb2e","fd75cc24ea5ec28a44c0afc2f8f33da5736be58737ba772318ae3bdc1c079dc3","27b8b19ae7809eb60ea1a03340116664ee1313393cbcdfc25aad7b9a5a1423d1","852ada6c746fdf599f1540afa26723241208fce45cc05c25a2700f705e3a895d","4d00e96ed93718f05a60474bd4cdd590b39aa0fd2e6397b969476d4eef1bfba1","8f5114796587946af995a7119b1543120ec76a3977006ce396027a8447e266af","f17a51aae728f9f1a2290919cf29a927621b27f6ae91697aee78f41d48851690","be02e3c3cb4e187fd252e7ae12f6383f274e82288c8772bb0daf1a4e4af571ad","82ca40fb541799273571b011cd9de6ee9b577ef68acc8408135504ae69365b74","8fb6646db72914d6ef0692ea88b25670bbf5e504891613a1f46b42783ec18cce","c3c1a321bb076181db17db31d4dd62802d7e9e09780074704bed228b8c433116","3df6fc700b8d787974651680ae6e37b6b50726cf5401b7887f669ab195c2f2ef","811cc213d4fd10c69b548fc3f3f8ae810592ce64dd76a03f624c970a79a39648","cf91b017e2baf1135361ad7a5c61379fa2d830c366e9ead13096999e352dee7a","be8e8c2b8957b03cb1f4017d773916b2965262e9116e9aa22a9b4b2f5102725c","9071b1edcf7f634f4bf1c9ae25bb43dd8632b2e9570bb73de87f2f9bbbb674d5","f9270d73acfea1ceade73f5f6406a8a54b117724df51bf68d93a67851e59b903","213aa21650a910d95c4d0bee4bb936ecd51e230c1a9e5361e008830dcc73bc86","874a8c5125ad187e47e4a8eacc809c866c0e71b619a863cc14794dd3ccf23940","c31db8e51e85ee67018ac2a40006910efbb58e46baea774cf1f245d99bf178b5","5b632299ebf0bde13a71e1a6fc8a964477c84810c50ea1652fc15b7d086a0e88","a9dfb793a7e10949f4f3ea9f282b53d3bd8bf59f5459bc6e618e3457ed2529f5","ec701426c068a4aecd654dc2c919c39eabf3bba90d8ab812785a45b78a0aa0c6","8ecdda946e3a155d87f9ac5a63ef5019ebffd2961b30ebaf8df42556865d32cd","2a77167687b0ec0c36ef581925103f1dc0c69993f61a9dbd299dcd30601af487","0f23b5ce60c754c2816c2542b9b164d6cb15243f4cbcd11cfafcab14b60e04d0","813ce40a8c02b172fdbeb8a07fdd427ac68e821f0e20e3dc699fb5f5bdf1ef0a","5ce6b24d5fd5ebb1e38fe817b8775e2e00c94145ad6eedaf26e3adf8bb3903d0","6babca69d3ae17be168cfceb91011eed881d41ce973302ee4e97d68a81c514b4","190fc165ae9c78ff8a714f9ff7ab8267ccaffc1131a9e4d9da64d72c1254f87e","342418c52b55f721b043183975052fb3956dae3c1f55f965fedfbbf4ad540501","8370f0eec60372cf6c9721a2aebd3dabad0324533c17d51eb082e66375f0a2ee","7e9b4669774e97f5dc435ddb679aa9e7d77a1e5a480072c1d1291892d54bf45c","de439ddbed60296fbd1e5b4d242ce12aad718dffe6432efcae1ad6cd996defd3","ce5fb71799f4dbb0a9622bf976a192664e6c574d125d3773d0fa57926387b8b2","b9c0de070a5876c81540b1340baac0d7098ea9657c6653731a3199fcb2917cef","cbc91ecd74d8f9ddcbcbdc2d9245f14eff5b2f6ae38371283c97ca7dc3c4a45f","3ca1d6f016f36c61a59483c80d8b9f9d50301fbe52a0dde288c1381862b13636","023e5a230aca8e6cdbf3351ec236f03be93fbbf31238d1d7021d08f3c57070fa","0ee2eb3f7c0106ccf6e388bc0a16e1b3d346e88ac31b6a5bbc15766e43992167","9df4f57d7279173b0810154c174aa03fd60f5a1f0c3acfe8805e55e935bdecd4","a02a51b68a60a06d4bd0c747d6fbade0cb87eefda5f985fb4650e343da424f12","0cf851e2f0ecf61cabe64efd72de360246bcb8c19c6ef7b5cbb702293e1ff755","0c0e0aaf37ab0552dffc13eb584d8c56423b597c1c49f7974695cb45e2973de6","e2e0cd8f6470bc69bbfbc5e758e917a4e0f9259da7ffc93c0930516b0aa99520","180de8975eff720420697e7b5d95c0ecaf80f25d0cea4f8df7fe9cf817d44884","424a7394f9704d45596dce70bd015c5afec74a1cc5760781dfda31bc300df88f","487aa46dfd11a25eb29cbeaadb27ac5e615afe0661860897b6d26351e8b59664","48f58fd08cffcaa262857d1c9c04ab99c467f4e0930a247c0a50561642c4d86c","e2a16f2a67c53de55bdea29beb3dda5f664d1d5700fd1016c2f2a253d8879074","e3f3964ff78dee11a07ae589f1319ff682f62f3c6c8afa935e3d8616cf21b431","d755902d4219c1ea027f0f2da81984c064153463ec9499fe5e6c761d953e607d","3903b01a9ba327aae8c7ea884cdabc115d27446fba889afc95fddca8a9b4f6e2","a0691153ccf5aa1b687b1500239722fff4d755481c20e16d9fcd7fb2d659c7c7","fe2201d73ae56b1b4946c10e18549a93bf4c390308af9d422f1ffd3c7989ffc8","7a5b421c9286ef3a387fbaa7529633bf1bbd7805f8217feec8e4cbee2243fa32","eb6813ed5340903591debd0924b282b23ba5f923ffae1dae2d2066380297b919","59c5a06fa4bf2fa320a3c5289b6f199a3e4f9562480f59c0987c91dc135a1adf","b41621db1226abb41d5a2709cf394afa0d87b06f364294e4117ea99a7c404e81","d78f9968070f2fd02289f3809f2b2a496000e9d8c8a7e308446d0ca98068fa57","2c7c38a7367ba9154ebe0ed393a6bee20e050ad950485021390592aac86e1abf","64d45d55ba6e42734ac326d2ea1f674c72837443eb7ff66c82f95e4544980713","99042827f8486f3478bf95d6a1f2cacc5247d1dccd29ad69c350a5ab626b3fd2","d9691c2fcb468eb71fd43e8decf940fb212506357bd2878603ed23e0870d501e","aaf3c2e268f27514eb28255835f38445a200cd8bcfdff2c07c6227f67aaaf657","a89af032d37ff997503c2ad941f6e8b81ea516a0fa2eb1026966187966a8d1c1","8afd4f91e3a060a886a249f22b23da880ec12d4a20b6404acc5e283ef01bdd46","2108aae2f80d17088ff60b38528db40cf7204bf964feabba9d8606285e8f9e22","fa8c21bafd5d8991019d58887add8971ccbe88243c79bbcaec2e2417a40af4e8","a445402c3628747496e09160023e3f6b527ba347142ece78ce5921f2ca5f8f3a","920cef603ae24233338b440ff40586d19f9d3cf641a7607e041c0393354a795e","e1468b42057c6841f5ddef03d14b385c905083e042198d948ddaa7c27ecc8400","583ad3cf91f470ea949ee6eaf5096a8ea66c6beacc851855684187f1a09be007","a0c6029c740656fd9a0bdb92c57b446dc10e7b9135db3e8ba0e5c84cbe3fd112","e405d8cf4684905734d451153c3259293d4fdf7b602f234d00518213b69fa9ea","b47f0f24523db0410eb4237b4422bed2aafcdf3d17bf8a3b374c8e3280f870ed","4231f486aae0f84d5ada3128d3c4a47766d756b33c2ae262308db6ef85fb5217","d4ed5a98777de192337cb00fc25bde31e88fbac12091bf1b0bb68ef55865ebba","57bf62609f7f4f3fedd76198dbfecf718863ad36a795d55763a745ce45904d45","8e68dc25f8bbc1eca7266259ee9c2689132a1dfaae7f88dbf3060a0c702d0978","2df62cd6db7d86f765cfc05606bbd27b38ed7bae502b5c4d927996bcf3638d64","1748c03e7a7d118f7f6648c709507971eb0d416f489958492c5ae625de445184","416709bcfe567baf0e0a1b507cf2a517a7f3365705f1d5f8b69306033680c2ba","a469528c72f7585708beb5d1709fa48b1b0e2f608cce7cf14e0a5a3d20ca340f","7aa417ef55dd4243e9ca56c74b039d6ca680456ca51add3d7fa075db3d3f5527","8fd36488fd6f6044b0373442961902580ffaafa64bc274cb0b4e4fc322ae67fe","b4b749d9fd0e30b43671def8724e5a02e7a9e2d971c934a6d8b4ba2b8caba5b5","182b40591d4958abb02a104aec91dc1ea84209ab52d259a4b6392b599086b4c3","d49fb63a2cf356aa5034611e0406dd4116fae87eab2b47ab8196ae684926b718","2ce8dfcdf3789a3983cf29069ad9ed7e56ef39c0e894d4c87e5cf5408f1707f1","f964ba426f140b14ac24ec00e1495063e69b9456fbbb04840d675b5ae22ddbfe","be374439e622e5a48e1c6267e73314403d6cb81bc2ab182e69541920bb0c09ef","8c16d7cede4eae9d779b69f0f222426f3c6aac26d3935bf28c46250f1eb1d662","1259ae1d5ee16b5a8a7e8f86bcaf19d24f19a713a063caa2111c190910e01c54","bb5e2efa891e1e1b248ef60fd23e7c91fe89915d45ea2284f4ea724ddf217adf","2d39f7ddea4af48deb8ef3e23105a2e24c5e7d3f9d89c42f61ef754492253abf","5a62d716ecc222cc3701d0a11af6e5155a6d9161fd27efafd837afb2a7d2cd93","cb46bbb55f7e2195c5a123a08df095d3d0c3eb69f0f4b8bb454e9be213526dce","ecb84a2bd7ea9b12c5203e08bef039b3621e79b9c31ad4287b330498e08fefe5","46799b1a64e0aa2b8ad739e5a6abf0422165f8e6c167ac00fa74a597a42a7363","e77505c8ddb21d6092fe0861c437dafdd9609a63cefa555de1ec98788d9f4a21","10080cb23168c834c49075da76d521be2390dc7e432096fd6896b9f948ced02b","f9d5be4110c92b98a5d47004754035d36814b4b5cc7e5ddfacfdd2580f702515","74a16d3477ff412d7276656cd1c8e40890096cad59a9296aae0c996b1b550d11","8aaf7bca4a7f859b9a3da24563754fec515738e55bb2f3d6f414fc9bd8d10a3d","addcf8f5d0ebaacb58b1dfe1c69ebbd014dffef39aa2249115c327adffcaf7ba","c84947626be78c25f75826e689a05833b711c965ea53e4726190639987a99ccc","22f24428aee22d02a45267fb477b0a4050d9361db42c1c1c78c4e1d86168ba74","caea4aaa8e7b52e17c01f491cdcaa9ad891cb7154ad45d79b3561307e04757a7","0a26b28b57847972550e4c9bd9bde5f01d875576a8ae3e973e360de92d4deaa9","eb48cfffd93c9208d974dd07beb391417a3c2db23ccbe8be0b62b3454382bf58","3464417844b6c74c8e5abe9adc9962ace41a738f4948077e7c2bb9cbe3a9d5fc","cbc6c6a65cb219d02f29469ef02182464e93b95fad2f1d4b67fe24c900e981ba","5a75d60a4aa4c395ff6a569f287180f19a74f1d68727f71a45db555ff583c5e8","bac79f0baed688589bfbb0a0c734458b41e00454bee04d0087261b4acd5b8611",{"version":"58fc594b580f58a86244118c7c5352535de486571facaea59bec9d92dfe661c1","signature":"0068959852e2d5bce26de65285e1e7f81e8b9db260f961618da03e179b9eddf8"},{"version":"510c7a358c2f5950120c9896810a9004fb7dbed8d37b8a93afd1d88a14d627fa","signature":"71b096a2026c8a82420505d93b406027b8dd19bb6d9bdef022c4ab8bdfe4232c"},{"version":"2ec9bb7ad978b453c6dae563998eb5d18639aa3e5d60b24fa971375ff5b05b12","signature":"60d7c5164f003854f8e6a714f8cceb52dbb27024da720559a1a23c33fa2234c8"},{"version":"2c89461426f7356d44f50e1b5ebba44885cecb685bd93909299f6499d7c4aaaf","signature":"54688087b615525286530f157690155eca0a720bfc3643495e4dfb064077c6e6"},{"version":"c72fc099fb9d7d59620c5c2c99d2abf35a60c46a4ceaedfce76e2bb1d12f5dff","signature":"31a272d181749b12d9f0c74b260616af52d498fcb555cb85ef688d294cf7c12f"},{"version":"d55712bde7c9d1b40da5b258140df1abffb54dcca8ce1d3a35603dab1fb5b3fc","signature":"a92b51a14f58f6243898d59c0c38de0d7b4917b9d32655bb76881d431284f5d7"},{"version":"db38c38e1a80668119cdb79709612edae5de374c9de0d34f479fecd38612ea92","signature":"9cb1ee844aa713ed104e7146e11d9473fb16bff92cab74ade43b5a6f0d1d389d"},{"version":"66269453cc715706050df388c93f0e5693d9f546327183b7eed74b17d87e5a3f","signature":"b13d30d10b93a0505e18795ac91ed546adc391bb0d110146f85e5159262cef91"},"1ffae2cb0ce77b09ebb120657e2b715be0e18d46d533f4301b3879492b22dae6","5563d9c1afb7c0fb1bbc4af7a788b1904ddfa309131f5f373e80a772a8cd3bce","ca99f111fca1fbb3c2b8a244bac8e6efc212a5826d9b4a0e5f3f18df8713b9b4","6f11b0ff634663b73fca7e5c89ae6d0f58aecafcf9f5ae405f7925cb2140b635",{"version":"9a17624d72cf3e6ea714113730021a790e0aaac6fae24a8a6a93f9c13d4c90d3","signature":"01966878c615e546f69563945dbbe111db4c78cb7114f94fc2584c95683c5670"},{"version":"520a9256d365d4d65e43b81ecf71d1e7c0736c15deb996df74fdd37deb0a8e46","signature":"10d379c8a49c24a1d3c6b4f2ae810c9a6068d097a533f6b4a10822a863698408"},{"version":"7897a9d139bbcaceeada6965d48f3ae4f76bd3a3ea206dde20ee1f12c2d9bfc3","signature":"552baaa41d5aa98b898bee4fa77f07c9150f80481fdd041c59a36ff76a71a463"},"6dfde7923c14468ba97cb1a6673bc58993ba5d95b760713015ea0e2f67bf7ed1",{"version":"c49558eee63e74495342cb43f085a724f527e91bebc744dd3ec2708677d8b23e","signature":"92d58a65175224b1606dd7a6e7bae9fe1e09357d261864069ee1e6a9d137336e"},{"version":"2f2ea898113f0a3e987be46f232a9c0c99ef80d2c31a75a2136171768f5008fb","signature":"f20bbbf75e695be133a83cc02ebe72656696a6fc50bf129e4b7f1c95a323c5dc"},{"version":"8db91c73ec13d17accdaf817b7504db4102f683912b6b9deb451d214534b9628","signature":"9a844782435139b8530e89a8915f26de07fa2bb669d0f61e795b2f323b4822ae"},"e3074100a896f70ffa050c3c77a3fde88383fbd95f94bac6dc2572b8cf1955a8","965db44e64e6e00f4467dc696b52b53c2e08bb6e78d26e6f1f75b679cda58def","0a9c84d7b1126d36677ef77ec6ac166fd623f0a2d0be711ed2e18d14a75639f4","fe9918ff4a61bea0fa8b85c96984120f561f6079ded0f79d52d9308a3d37f0e0","d64fc2b6e71cc0aa542509bf15c62001e4b57a2a45a22c730fafbb58e192a91c","ee7d8894904b465b072be0d2e4b45cf6b887cdba16a467645c4e200982ece7ea","f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","cf3d384d082b933d987c4e2fe7bfb8710adfd9dc8155190056ed6695a25a559e","9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","c2576a4083232b0e2d9bd06875dd43d371dee2e090325a9eac0133fd5650c1cb","4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","f40ac11d8859092d20f953aae14ba967282c3bb056431a37fced1866ec7a2681","cc11e9e79d4746cc59e0e17473a59d6f104692fd0eeea1bdb2e206eabed83b03","b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","7d8ddf0f021c53099e34ee831a06c394d50371816caa98684812f089b4c6b3d4"],"root":[[413,415]],"options":{"allowSyntheticDefaultImports":true,"esModuleInterop":true,"module":7,"skipLibCheck":true,"strict":true,"target":7},"fileIdsList":[[158,166,201,253,276,355],[158,166,355,356],[158,166,201,276],[158,166,276,353],[158,166,353,354],[158,166,172,174,178,180,182,184,186,189,193,197,199,201,203,205,207,209,211,213,221,226,228,230,232,234,237,239,241,243,245,247,249,251,253,255,257,259,261,263,265,267,269,271,273,276,279,282,284,287,289,293,295,297,299,301,305,311,315,317,324,328,330,332,335,339,342,344,346,348,351],[158,166,401,402],[158,166],[158,166,201,248],[158,166,172,276],[158,166,173],[158,166,172,253,257,276],[158,166,258],[158,166,172,253,276],[158,166,177],[158,166,193,197,230,276],[158,166,288],[158,166,210],[158,166,204],[158,166,277,278],[158,166,276],[158,166,184,193,226,232,255,257,276,293],[158,166,294],[158,166,174,182,184,189,199,211,213,255,257,261,263,265,267,269,271,276],[158,166,296],[158,166,180,199,257,276],[158,166,298],[158,166,179],[158,166,260],[158,166,178,180,182,193,197,199,228,230,247,255,257,259,276],[158,166,300],[158,166,172,213,276],[158,166,238],[158,166,200],[158,166,234,255,276,303],[158,166,221,276,303],[158,166,184,197,221,234,253,257,276,302,304],[158,166,302,303,304],[158,166,213,234,255,257,276,308],[158,166,234,255,276,308],[158,166,197,234,253,257,276,307,309],[158,166,306,307,308,309,310],[158,166,234,255,276,313],[158,166,221,276,313],[158,166,184,197,221,234,253,257,276,312,314],[158,166,312,313,314],[158,166,181],[158,166,280,281],[158,166,172,174,178,180,182,184,186,189,193,197,199,201,203,205,207,209,211,213,221,228,230,234,237,241,243,245,247,249,251,255,259,261,263,265,267,269,271,273,276],[158,166,184,255,276],[158,166,256],[158,166,222,223,224,225],[158,166,224,234,255,257,276],[158,166,222,226,234,255,276],[158,166,197,207,209,213,221,276],[158,166,184,186,193,197,199,222,223,225,234,255,257,259,276],[158,166,316],[158,166,180,276],[158,166,208],[158,166,190,191,192],[158,166,184,189,190,237,276],[158,166,184,190,276],[158,166,276,319],[158,166,318,319,320,321,322,323],[158,166,213,234,255,257,276,319],[158,166,197,213,221,234,276,318],[158,166,227],[158,166,290,291,292],[158,166,234,255,257,276,291],[158,166,186,193,197,199,232,255,257,259,276],[158,166,197,207,213,234,257,276,290,292],[158,166,212],[158,166,175,176,233],[158,166,172,255,276],[158,166,175,176,178,180,182,189,193,197,199,213,226,228,230,232,237,255,257,259,276],[158,166,183],[158,166,240],[158,166,262],[158,166,206],[158,166,254],[158,166,172,189,237,253,257,276],[158,166,325,326,327],[158,166,234,255,276,326],[158,166,234,255,257,276,326],[158,166,186,193,197,226,234,255,257,276,325,327],[158,166,235,236],[158,166,234,235,255],[158,166,172,234,236,257,276],[158,166,329],[158,166,182,199,257,276],[158,166,333,334],[158,166,234,255,257,276,333],[158,166,186,189,193,197,234,237,255,257,276,332,334],[158,166,283],[158,166,336,337,338],[158,166,234,255,276,337],[158,166,234,255,257,276,337],[158,166,186,193,197,226,234,255,257,276,336,338],[158,166,229],[158,166,331],[158,166,189,237,276],[158,166,187,188],[158,166,187,234,255],[158,166,172,188,234,257,276],[158,166,244],[158,166,172,184,197,203,207,209,213,221,239,243,253,255,257,276],[158,166,185],[158,166,246],[158,166,242],[158,166,285,286],[158,166,340,341],[158,166,234,255,257,276,340],[158,166,186,189,193,197,234,237,255,257,276,332,341],[158,166,343],[158,166,193,197,199,276],[158,166,345],[158,166,182,276],[158,166,174,178,180,182,186,193,197,199,203,205,207,209,211,213,221,228,230,239,241,243,245,247,255,259,261,263,265,267,269,271,273,274],[158,166,274,275],[158,166,172],[158,166,231],[158,166,252],[158,166,178,180,182,186,189,193,197,199,228,230,237,239,241,245,247,249,251,255,257,259,276],[158,166,347],[158,166,202],[158,166,264],[158,166,171],[158,166,197,201,203,205,207,209,211,213,214,221],[158,166,197,201,205,213,214,215,221,257],[158,166,214,215,216,217,218,219,220],[158,166,201],[158,166,201,221],[158,166,197,203,205,207,211,213,221,257],[158,166,172,184,197,203,205,207,209,211,213,217,253,257,276],[158,166,197,213,219,253,257],[158,166,250],[158,166,198],[158,166,349,350],[158,166,178,180,182,211,228,230,243,261,265,267,269,273,276,289,299,317,330,346,349],[158,166,174,184,186,189,193,197,199,203,205,207,209,213,221,226,234,237,239,241,245,247,249,251,255,259,263,271,276,293,295,297,301,305,311,315,324,328,332,335,339,342,344],[158,166,266],[158,166,268],[158,166,194,195,196],[158,166,184,189,194,237,276],[158,166,184,194,276],[158,166,270],[158,166,248],[158,166,272],[158,166,201,253,276],[158,166,362],[158,166,364],[158,166,366],[158,166,368],[158,166,370],[158,166,372],[158,166,374],[158,166,194,201,202,212,253,254,270],[158,166,376],[158,166,378],[158,166,360],[158,166,380],[158,166,355,361,363,365,367,369,371,373,375,377,379,381,383,385,389,391],[158,166,382],[158,166,384],[158,166,201,276,355],[158,166,386,387,388],[158,166,390],[158,166,253,276,355,377,383],[158,166,167],[68,158,166],[103,158,166],[104,109,138,158,166],[105,116,117,124,135,146,158,166],[105,106,116,124,158,166],[107,147,158,166],[108,109,117,125,158,166],[109,135,143,158,166],[110,112,116,124,158,166],[103,111,158,166],[112,113,158,166],[116,158,166],[114,116,158,166],[103,116,158,166],[116,117,118,135,146,158,166],[116,117,118,131,135,138,158,159,166],[101,104,151,158,166],[112,116,119,124,135,146,158,166],[116,117,119,120,124,135,143,146,158,166],[119,121,135,143,146,158,166],[68,69,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,158,166],[116,122,158,166],[123,146,151,158,166],[112,116,124,135,158,166],[125,158,166],[126,158,166],[103,127,158,166],[124,125,128,145,151,158,166],[129,158,166],[130,158,166],[116,131,132,158,166],[131,133,147,149,158,166],[104,116,135,136,137,138,158,166],[104,135,137,158,166],[135,136,158,166],[138,158,166],[139,158,166],[103,135,158,166],[116,141,142,158,166],[141,142,158,166],[109,124,135,143,158,159,166],[144,158,166],[124,145,158,166],[104,119,130,146,158,166],[109,147,158,166],[135,148,158,166],[123,149,158,166],[150,158,166],[104,109,116,118,127,135,146,149,151,158,166],[135,152,158,166],[158,166,419,458],[158,166,419,443,458],[158,166,458],[158,166,419],[158,166,419,444,458],[158,166,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457],[158,166,444,458],[116,119,121,135,143,146,152,154,158,159,166],[109,147,166],[158],[101,158,166],[101,109,127,135,138,147,151,155,156,158,166],[154,155,156,157,158,159,160,161,162,163,164,165,166],[118,143,158,166],[158,161,166],[78,82,146,158,166],[78,135,146,158,166],[73,158,166],[75,78,143,146,158,159,166],[124,143,158,159,166],[154,158,166],[73,154,158,166],[75,78,124,146,158,166],[70,71,74,77,104,116,135,146,158,166],[70,76,158,166],[74,78,104,138,146,154,158,166],[104,154,158,166],[94,104,154,158,166],[72,73,154,158,166],[78,158,166],[72,73,74,75,76,77,78,79,80,82,83,84,85,86,87,88,89,90,91,92,93,95,96,97,98,99,100,158,166],[78,85,86,158,166],[76,78,86,87,158,166],[77,158,166],[70,73,78,158,166],[78,82,86,87,158,166],[82,158,166],[76,78,81,146,158,166],[70,75,76,78,82,85,158,166],[104,135,158,166],[73,78,94,104,151,154,158,166],[158,166,352,392,393,395,396,397,398,399,405,408,411],[158,166,393,397,398,399],[158,166,359,393,394,397,399],[158,166,393,394,395,397,398,399,408,411],[158,166,352,357,392,397,405],[158,166,359,393,394,397,398],[158,166,169,170,352,393,394,395,396,397,398,399,400,405,406,407,409,410],[158,166,399],[158,166,352,357,392,393,398,399,403,404,405],[158,166,170,352,357,358,393,394,398,405,411],[158,166,352,357,392,395,396,398,399,405,411],[158,166,352,357,393,394,399,405],[158,166,352,357,394,399,405,406],[158,161,166,411,412,413],[158,166,411],[158,161,166,411,412],[352,396,399,405,411],[393,397,398,399],[394,399],[393,394,399,411],[101,352,357,405],[101,394],[158,166,169,352,393,394,395,396,397,398,399,405,407,410],[399],[352,357,398,399,403,405],[101,158,166,352,357,396,398,399,405],[158,166,352,357,394,399,405]],"referencedMap":[[356,1],[357,2],[353,3],[354,4],[355,5],[352,6],[403,7],[401,8],[402,9],[173,10],[174,11],[258,12],[259,13],[177,14],[178,15],[288,16],[289,17],[210,10],[211,18],[204,10],[205,19],[279,20],[277,21],[278,8],[294,22],[295,23],[296,24],[297,25],[298,26],[299,27],[179,12],[180,28],[260,10],[261,29],[300,30],[301,31],[238,32],[239,33],[200,8],[201,34],[304,35],[302,36],[303,37],[305,38],[306,3],[309,39],[307,40],[310,21],[308,41],[311,42],[314,43],[312,44],[313,45],[315,46],[181,12],[182,47],[282,48],[280,49],[281,8],[256,50],[257,51],[226,52],[225,53],[223,54],[222,55],[224,56],[317,57],[316,58],[209,59],[208,10],[193,60],[191,61],[190,14],[192,62],[320,63],[324,64],[318,65],[319,66],[321,63],[322,63],[323,63],[228,67],[227,14],[293,68],[292,69],[290,70],[291,71],[213,72],[212,10],[234,73],[175,10],[176,74],[233,75],[184,76],[183,10],[241,77],[240,14],[263,78],[262,10],[207,79],[206,10],[255,80],[254,81],[328,82],[327,83],[325,84],[326,85],[237,86],[236,87],[235,88],[330,89],[329,90],[335,91],[334,92],[333,93],[284,94],[283,8],[339,95],[338,96],[336,97],[337,98],[230,99],[229,14],[332,100],[331,101],[189,102],[188,103],[187,104],[245,105],[244,106],[186,107],[185,14],[247,108],[246,14],[243,109],[242,10],[285,8],[287,110],[286,8],[342,111],[341,112],[340,113],[344,114],[343,115],[346,116],[345,117],[275,118],[276,119],[274,120],[232,121],[231,8],[253,122],[252,123],[348,124],[347,21],[203,125],[202,10],[265,126],[264,10],[172,127],[171,8],[215,128],[216,129],[221,130],[214,131],[218,132],[217,133],[219,134],[220,135],[251,136],[250,14],[199,137],[198,14],[351,138],[350,139],[349,140],[267,141],[266,10],[269,142],[268,10],[197,143],[195,144],[194,14],[196,145],[271,146],[270,10],[249,147],[248,10],[273,148],[272,10],[362,149],[363,150],[364,149],[365,151],[366,21],[367,152],[368,8],[369,153],[370,21],[371,154],[372,149],[373,155],[374,21],[375,156],[376,157],[377,158],[378,8],[379,159],[360,8],[361,160],[380,131],[381,161],[392,162],[383,163],[382,131],[385,164],[384,131],[386,165],[387,165],[388,21],[389,166],[391,167],[390,168],[416,8],[168,169],[359,8],[417,8],[418,8],[68,170],[69,170],[103,171],[104,172],[105,173],[106,174],[107,175],[108,176],[109,177],[110,178],[111,179],[112,180],[113,180],[115,181],[114,182],[116,183],[117,184],[118,185],[102,186],[153,8],[119,187],[120,188],[121,189],[154,190],[122,191],[123,192],[124,193],[125,194],[126,195],[127,196],[128,197],[129,198],[130,199],[131,200],[132,200],[133,201],[134,8],[135,202],[137,203],[136,204],[138,205],[139,206],[140,207],[141,208],[142,209],[143,210],[144,211],[145,212],[146,213],[147,214],[148,215],[149,216],[150,217],[151,218],[152,219],[443,220],[444,221],[419,222],[422,222],[441,220],[442,220],[432,220],[431,223],[429,220],[424,220],[437,220],[435,220],[439,220],[423,220],[436,220],[440,220],[425,220],[426,220],[438,220],[420,220],[427,220],[428,220],[430,220],[434,220],[445,224],[433,220],[421,220],[458,225],[457,8],[452,224],[454,226],[453,224],[446,224],[447,224],[449,224],[451,224],[455,226],[456,226],[448,226],[450,226],[155,227],[158,228],[166,229],[156,230],[160,8],[157,231],[162,8],[167,232],[163,8],[159,233],[164,8],[161,234],[165,8],[170,8],[412,8],[408,8],[169,8],[358,8],[66,8],[67,8],[13,8],[12,8],[2,8],[14,8],[15,8],[16,8],[17,8],[18,8],[19,8],[20,8],[21,8],[3,8],[22,8],[4,8],[23,8],[27,8],[24,8],[25,8],[26,8],[28,8],[29,8],[30,8],[5,8],[31,8],[32,8],[33,8],[34,8],[6,8],[38,8],[35,8],[36,8],[37,8],[39,8],[7,8],[40,8],[45,8],[46,8],[41,8],[42,8],[43,8],[44,8],[8,8],[50,8],[47,8],[48,8],[49,8],[51,8],[9,8],[52,8],[53,8],[54,8],[57,8],[55,8],[56,8],[58,8],[59,8],[10,8],[1,8],[60,8],[11,8],[64,8],[62,8],[61,8],[65,8],[63,8],[85,235],[92,236],[84,235],[99,237],[76,238],[75,239],[98,240],[93,241],[96,242],[78,243],[77,244],[73,245],[72,246],[95,247],[74,248],[79,249],[80,8],[83,249],[70,8],[101,250],[100,249],[87,251],[88,252],[90,253],[86,254],[89,255],[94,240],[81,256],[82,257],[91,258],[71,259],[97,260],[409,261],[394,262],[398,263],[410,264],[393,265],[404,8],[395,266],[411,267],[396,268],[400,268],[405,269],[399,270],[397,271],[406,272],[407,273],[414,274],[413,275],[415,276]],"exportedModulesMap":[[356,1],[357,2],[353,3],[354,4],[355,5],[352,6],[403,7],[401,8],[402,9],[173,10],[174,11],[258,12],[259,13],[177,14],[178,15],[288,16],[289,17],[210,10],[211,18],[204,10],[205,19],[279,20],[277,21],[278,8],[294,22],[295,23],[296,24],[297,25],[298,26],[299,27],[179,12],[180,28],[260,10],[261,29],[300,30],[301,31],[238,32],[239,33],[200,8],[201,34],[304,35],[302,36],[303,37],[305,38],[306,3],[309,39],[307,40],[310,21],[308,41],[311,42],[314,43],[312,44],[313,45],[315,46],[181,12],[182,47],[282,48],[280,49],[281,8],[256,50],[257,51],[226,52],[225,53],[223,54],[222,55],[224,56],[317,57],[316,58],[209,59],[208,10],[193,60],[191,61],[190,14],[192,62],[320,63],[324,64],[318,65],[319,66],[321,63],[322,63],[323,63],[228,67],[227,14],[293,68],[292,69],[290,70],[291,71],[213,72],[212,10],[234,73],[175,10],[176,74],[233,75],[184,76],[183,10],[241,77],[240,14],[263,78],[262,10],[207,79],[206,10],[255,80],[254,81],[328,82],[327,83],[325,84],[326,85],[237,86],[236,87],[235,88],[330,89],[329,90],[335,91],[334,92],[333,93],[284,94],[283,8],[339,95],[338,96],[336,97],[337,98],[230,99],[229,14],[332,100],[331,101],[189,102],[188,103],[187,104],[245,105],[244,106],[186,107],[185,14],[247,108],[246,14],[243,109],[242,10],[285,8],[287,110],[286,8],[342,111],[341,112],[340,113],[344,114],[343,115],[346,116],[345,117],[275,118],[276,119],[274,120],[232,121],[231,8],[253,122],[252,123],[348,124],[347,21],[203,125],[202,10],[265,126],[264,10],[172,127],[171,8],[215,128],[216,129],[221,130],[214,131],[218,132],[217,133],[219,134],[220,135],[251,136],[250,14],[199,137],[198,14],[351,138],[350,139],[349,140],[267,141],[266,10],[269,142],[268,10],[197,143],[195,144],[194,14],[196,145],[271,146],[270,10],[249,147],[248,10],[273,148],[272,10],[362,149],[363,150],[364,149],[365,151],[366,21],[367,152],[368,8],[369,153],[370,21],[371,154],[372,149],[373,155],[374,21],[375,156],[376,157],[377,158],[378,8],[379,159],[360,8],[361,160],[380,131],[381,161],[392,162],[383,163],[382,131],[385,164],[384,131],[386,165],[387,165],[388,21],[389,166],[391,167],[390,168],[416,8],[168,169],[359,8],[417,8],[418,8],[68,170],[69,170],[103,171],[104,172],[105,173],[106,174],[107,175],[108,176],[109,177],[110,178],[111,179],[112,180],[113,180],[115,181],[114,182],[116,183],[117,184],[118,185],[102,186],[153,8],[119,187],[120,188],[121,189],[154,190],[122,191],[123,192],[124,193],[125,194],[126,195],[127,196],[128,197],[129,198],[130,199],[131,200],[132,200],[133,201],[134,8],[135,202],[137,203],[136,204],[138,205],[139,206],[140,207],[141,208],[142,209],[143,210],[144,211],[145,212],[146,213],[147,214],[148,215],[149,216],[150,217],[151,218],[152,219],[443,220],[444,221],[419,222],[422,222],[441,220],[442,220],[432,220],[431,223],[429,220],[424,220],[437,220],[435,220],[439,220],[423,220],[436,220],[440,220],[425,220],[426,220],[438,220],[420,220],[427,220],[428,220],[430,220],[434,220],[445,224],[433,220],[421,220],[458,225],[457,8],[452,224],[454,226],[453,224],[446,224],[447,224],[449,224],[451,224],[455,226],[456,226],[448,226],[450,226],[155,227],[158,228],[166,229],[156,230],[160,8],[157,231],[162,8],[167,232],[163,8],[159,233],[164,8],[161,234],[165,8],[170,8],[412,8],[408,8],[169,8],[358,8],[66,8],[67,8],[13,8],[12,8],[2,8],[14,8],[15,8],[16,8],[17,8],[18,8],[19,8],[20,8],[21,8],[3,8],[22,8],[4,8],[23,8],[27,8],[24,8],[25,8],[26,8],[28,8],[29,8],[30,8],[5,8],[31,8],[32,8],[33,8],[34,8],[6,8],[38,8],[35,8],[36,8],[37,8],[39,8],[7,8],[40,8],[45,8],[46,8],[41,8],[42,8],[43,8],[44,8],[8,8],[50,8],[47,8],[48,8],[49,8],[51,8],[9,8],[52,8],[53,8],[54,8],[57,8],[55,8],[56,8],[58,8],[59,8],[10,8],[1,8],[60,8],[11,8],[64,8],[62,8],[61,8],[65,8],[63,8],[85,235],[92,236],[84,235],[99,237],[76,238],[75,239],[98,240],[93,241],[96,242],[78,243],[77,244],[73,245],[72,246],[95,247],[74,248],[79,249],[80,8],[83,249],[70,8],[101,250],[100,249],[87,251],[88,252],[90,253],[86,254],[89,255],[94,240],[81,256],[82,257],[91,258],[71,259],[97,260],[409,277],[394,278],[398,279],[410,280],[393,281],[404,8],[395,282],[411,283],[396,284],[400,284],[405,285],[399,270],[397,286],[406,287],[407,273],[414,274],[413,275],[415,276]],"semanticDiagnosticsPerFile":[356,357,353,354,355,352,403,401,402,173,174,258,259,177,178,288,289,210,211,204,205,279,277,278,294,295,296,297,298,299,179,180,260,261,300,301,238,239,200,201,304,302,303,305,306,309,307,310,308,311,314,312,313,315,181,182,282,280,281,256,257,226,225,223,222,224,317,316,209,208,193,191,190,192,320,324,318,319,321,322,323,228,227,293,292,290,291,213,212,234,175,176,233,184,183,241,240,263,262,207,206,255,254,328,327,325,326,237,236,235,330,329,335,334,333,284,283,339,338,336,337,230,229,332,331,189,188,187,245,244,186,185,247,246,243,242,285,287,286,342,341,340,344,343,346,345,275,276,274,232,231,253,252,348,347,203,202,265,264,172,171,215,216,221,214,218,217,219,220,251,250,199,198,351,350,349,267,266,269,268,197,195,194,196,271,270,249,248,273,272,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,360,361,380,381,392,383,382,385,384,386,387,388,389,391,390,416,168,359,417,418,68,69,103,104,105,106,107,108,109,110,111,112,113,115,114,116,117,118,102,153,119,120,121,154,122,123,124,125,126,127,128,129,130,131,132,133,134,135,137,136,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,443,444,419,422,441,442,432,431,429,424,437,435,439,423,436,440,425,426,438,420,427,428,430,434,445,433,421,458,457,452,454,453,446,447,449,451,455,456,448,450,155,158,166,156,160,157,162,167,163,159,164,161,165,170,412,408,169,358,66,67,13,12,2,14,15,16,17,18,19,20,21,3,22,4,23,27,24,25,26,28,29,30,5,31,32,33,34,6,38,35,36,37,39,7,40,45,46,41,42,43,44,8,50,47,48,49,51,9,52,53,54,57,55,56,58,59,10,1,60,11,64,62,61,65,63,85,92,84,99,76,75,98,93,96,78,77,73,72,95,74,79,80,83,70,101,100,87,88,90,86,89,94,81,82,91,71,97,409,394,398,410,393,404,395,411,396,400,405,399,397,406,407,414,413,415],"affectedFilesPendingEmit":[409,394,398,410,393,404,395,411,396,400,405,399,397,406,407,414,413,415]},"version":"5.4.5"}