{"version":3,"file":"microsandbox-Dgc_M_4t-KkiuivLV.cjs","names":["NetworkPolicy","Sandbox","AGENT_MOUNT","SESSION_MOUNT","posix","ensureWorkspaceDir","createCodingTools"],"sources":["../../sandbox/dist/microsandbox-Dgc_M_4t.mjs"],"sourcesContent":["import { t as ensureWorkspaceDir } from \"./sandbox-dirs-DMDj1_61.mjs\";\nimport { n as AGENT_MOUNT, r as SESSION_MOUNT, t as createCodingTools } from \"./create-coding-tools-chPT-SGh.mjs\";\nimport \"node:module\";\nimport { dirname, join, posix } from \"node:path\";\nimport { mkdir, readFile, readdir, rm, writeFile } from \"node:fs/promises\";\nimport { existsSync, readFileSync, watch } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { createHash } from \"node:crypto\";\nimport { Image, ImageNotFoundError, NetworkPolicy, Sandbox, isInstalled } from \"microsandbox\";\n//#region \\0rolldown/runtime.js\nvar __defProp = Object.defineProperty;\nvar __exportAll = (all, no_symbols) => {\n\tlet target = {};\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n\tif (!no_symbols) __defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\treturn target;\n};\n//#endregion\n//#region src/providers/microsandbox/build-sandbox.ts\nconst DEFAULT_IMAGE = \"node:22\";\nconst DEFAULT_VM_IMAGE = DEFAULT_IMAGE;\nconst DEFAULT_NETWORK = \"public-only\";\nfunction applyNetwork(builder, preset) {\n\tswitch (preset) {\n\t\tcase \"none\": return builder.disableNetwork();\n\t\tcase \"allow-all\": return builder.network((n) => n.policy(NetworkPolicy.allowAll()));\n\t\tcase \"non-local\": return builder.network((n) => n.policy(NetworkPolicy.nonLocal()));\n\t\tdefault: return builder.network((n) => n.policy(NetworkPolicy.publicOnly()));\n\t}\n}\nfunction applyVolume(builder, mount) {\n\treturn builder.volume(mount.guestPath, (m) => {\n\t\tif (\"bind\" in mount) {\n\t\t\tlet bind = m.bind(mount.bind);\n\t\t\tif (mount.readonly) bind = bind.readonly();\n\t\t\treturn bind;\n\t\t}\n\t\tif (\"named\" in mount) {\n\t\t\tlet named = m.named(mount.named);\n\t\t\tif (mount.readonly) named = named.readonly();\n\t\t\treturn named;\n\t\t}\n\t\tconst tmpfs = m.tmpfs();\n\t\treturn mount.sizeMiB !== void 0 ? tmpfs.size(mount.sizeMiB) : tmpfs;\n\t});\n}\nfunction buildMicrosandbox(name, agentRoot, sessionRoot, options = {}) {\n\tconst workdir = options.workdir ?? \"/workspace\";\n\tlet builder = Sandbox.builder(name).workdir(workdir);\n\tif (options.snapshot) builder = builder.fromSnapshot(options.snapshot);\n\telse builder = builder.image(options.image ?? DEFAULT_IMAGE);\n\tif (options.memory !== void 0) builder = builder.memory(options.memory);\n\tif (options.cpus !== void 0) builder = builder.cpus(options.cpus);\n\tif (options.env) builder = builder.envs(options.env);\n\tif (options.idleTimeout !== void 0) builder = builder.idleTimeout(options.idleTimeout);\n\tif (options.maxDuration !== void 0) builder = builder.maxDuration(options.maxDuration);\n\tif (options.replace !== false) builder = builder.replace();\n\tbuilder = applyNetwork(builder, options.network ?? DEFAULT_NETWORK);\n\tbuilder = builder.volume(AGENT_MOUNT, (m) => m.bind(agentRoot));\n\tbuilder = builder.volume(SESSION_MOUNT, (m) => m.bind(sessionRoot));\n\tfor (const mount of options.volumes ?? []) builder = applyVolume(builder, mount);\n\treturn builder;\n}\n//#endregion\n//#region src/providers/microsandbox/codemode/node-runtime.ts\nconst NODE_RUNTIME_REQUIRED_MESSAGE = \"js-exec requires Node.js in the VM image. Use a Node-based image such as node:22 (the default VM image), or install Node in your custom image.\";\nfunction nodeRuntimeMissingResult(image) {\n\treturn {\n\t\tstdout: \"\",\n\t\tstderr: `${NODE_RUNTIME_REQUIRED_MESSAGE}${image ? ` Configured image: ${image}.` : \"\"}\\n`,\n\t\texitCode: 127\n\t};\n}\nasync function probeNodeRuntime(sb) {\n\treturn (await sb.execWith(\"sh\", (builder) => builder.args([\"-lc\", \"command -v node >/dev/null 2>&1\"]))).code === 0;\n}\n//#endregion\n//#region src/providers/microsandbox/codemode/parse-js-exec-command.ts\n/** Split a shell-style argument string, respecting single and double quotes. */\nfunction splitShellArgs(input) {\n\tconst args = [];\n\tlet current = \"\";\n\tlet quote = null;\n\tlet escaped = false;\n\tfor (let i = 0; i < input.length; i++) {\n\t\tconst char = input[i];\n\t\tif (escaped) {\n\t\t\tcurrent += char;\n\t\t\tescaped = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (quote === \"'\") {\n\t\t\tif (char === \"'\") quote = null;\n\t\t\telse current += char;\n\t\t\tcontinue;\n\t\t}\n\t\tif (quote === \"\\\"\") {\n\t\t\tif (char === \"\\\\\") escaped = true;\n\t\t\telse if (char === \"\\\"\") quote = null;\n\t\t\telse current += char;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"'\" || char === \"\\\"\") {\n\t\t\tquote = char;\n\t\t\tcontinue;\n\t\t}\n\t\tif (/\\s/.test(char)) {\n\t\t\tif (current.length > 0) {\n\t\t\t\targs.push(current);\n\t\t\t\tcurrent = \"\";\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tcurrent += char;\n\t}\n\tif (current.length > 0) args.push(current);\n\treturn args;\n}\n/** Return js-exec argv when `script` is a direct js-exec invocation. */\nfunction parseJsExecCommand(script) {\n\tconst trimmed = script.trim();\n\tif (!trimmed.startsWith(\"js-exec\")) return null;\n\tconst rest = trimmed.slice(7).trim();\n\tif (rest.length === 0) return null;\n\treturn { argv: splitShellArgs(rest) };\n}\n//#endregion\n//#region src/providers/microsandbox/codemode/resolve-runner-path.ts\nconst CODEMODE_GUEST_DIR = \"/opt/keystroke\";\nconst CODEMODE_GUEST_RUNNER = `${CODEMODE_GUEST_DIR}/runner.mjs`;\nfunction findPackageRoot(from) {\n\tlet dir = from;\n\twhile (dir !== dirname(dir)) {\n\t\tconst manifest = join(dir, \"package.json\");\n\t\tif (existsSync(manifest)) {\n\t\t\tif (JSON.parse(readFileSync(manifest, \"utf8\")).name === \"@keystrokehq/sandbox\") return dir;\n\t\t}\n\t\tdir = dirname(dir);\n\t}\n\tthrow new Error(\"@keystrokehq/sandbox package root not found\");\n}\n/** Locate the shipped codemode runner on the host filesystem. */\nfunction resolveCodemodeRunnerDir(fromModuleUrl) {\n\tconst packageRoot = findPackageRoot(dirname(fileURLToPath(fromModuleUrl)));\n\tconst candidates = [join(packageRoot, \"dist\", \"providers\", \"microsandbox\", \"codemode\"), join(packageRoot, \"src\", \"providers\", \"microsandbox\", \"codemode\")];\n\tfor (const candidate of candidates) if (existsSync(join(candidate, \"runner.mjs\"))) return candidate;\n\tthrow new Error(\"codemode runner.mjs not found on host\");\n}\n//#endregion\n//#region src/providers/microsandbox/codemode/run-codemode.ts\nfunction codemodeDir(sessionRoot) {\n\treturn join(sessionRoot, \".codemode\");\n}\nasync function prepareCodemodeDir(sessionRoot) {\n\tawait rm(codemodeDir(sessionRoot), {\n\t\trecursive: true,\n\t\tforce: true\n\t});\n\tawait mkdir(codemodeDir(sessionRoot), { recursive: true });\n}\nasync function handleToolRequest(sessionRoot, filename, invokeTool, handled) {\n\tif (!filename.endsWith(\".request.json\")) return;\n\tif (handled.has(filename)) return;\n\thandled.add(filename);\n\tconst requestPath = join(codemodeDir(sessionRoot), filename);\n\tlet request;\n\ttry {\n\t\trequest = JSON.parse(await readFile(requestPath, \"utf8\"));\n\t} catch {\n\t\thandled.delete(filename);\n\t\treturn;\n\t}\n\tconst responsePath = join(codemodeDir(sessionRoot), `${request.id}.response.json`);\n\ttry {\n\t\tconst result = await invokeTool(request.path, request.argsJson);\n\t\tconst response = {\n\t\t\tid: request.id,\n\t\t\tresult\n\t\t};\n\t\tawait writeFile(responsePath, JSON.stringify(response));\n\t} catch (error) {\n\t\tconst response = {\n\t\t\tid: request.id,\n\t\t\terror: error instanceof Error ? error.message : String(error)\n\t\t};\n\t\tawait writeFile(responsePath, JSON.stringify(response));\n\t}\n}\n/** Poll interval (ms) backing up fs.watch, which silently drops events under load. */\nconst REQUEST_POLL_INTERVAL_MS = 25;\nfunction watchToolRequests(sessionRoot, invokeTool) {\n\tconst dir = codemodeDir(sessionRoot);\n\tconst handled = /* @__PURE__ */ new Set();\n\tconst handle = (filename) => {\n\t\tif (!filename) return;\n\t\thandleToolRequest(sessionRoot, filename, invokeTool, handled).catch(() => {});\n\t};\n\tconst watcher = watch(dir, (_event, filename) => handle(filename));\n\tconst poll = setInterval(() => {\n\t\treaddir(dir).then((entries) => {\n\t\t\tfor (const entry of entries) handle(entry);\n\t\t}).catch(() => {});\n\t}, REQUEST_POLL_INTERVAL_MS);\n\treturn { close: () => {\n\t\twatcher.close();\n\t\tclearInterval(poll);\n\t} };\n}\nfunction isJsExecCommand(script) {\n\treturn parseJsExecCommand(script) !== null;\n}\nasync function runCodemode(options) {\n\tconst invocation = parseJsExecCommand(options.script);\n\tif (!invocation) return {\n\t\tstdout: \"\",\n\t\tstderr: \"js-exec: malformed command\\n\",\n\t\texitCode: 2\n\t};\n\tawait prepareCodemodeDir(options.sessionRoot);\n\tconst requestWatcher = options.invokeTool !== void 0 ? watchToolRequests(options.sessionRoot, options.invokeTool) : null;\n\ttry {\n\t\tconst cwd = options.execOptions?.cwd ?? options.workdir ?? \"/workspace\";\n\t\tconst runnerArgs = options.invokeTool ? [\"--tools\", ...invocation.argv] : [...invocation.argv];\n\t\tconst out = await options.sb.execWith(\"node\", (builder) => {\n\t\t\tlet configured = builder.args([CODEMODE_GUEST_RUNNER, ...runnerArgs]).cwd(cwd);\n\t\t\tif (options.execOptions?.env) configured = configured.envs(options.execOptions.env);\n\t\t\treturn configured;\n\t\t});\n\t\treturn {\n\t\t\tstdout: out.stdout(),\n\t\t\tstderr: out.stderr(),\n\t\t\texitCode: out.code\n\t\t};\n\t} finally {\n\t\trequestWatcher?.close();\n\t\tawait rm(codemodeDir(options.sessionRoot), {\n\t\t\trecursive: true,\n\t\t\tforce: true\n\t\t});\n\t}\n}\n//#endregion\n//#region src/providers/microsandbox/provider.ts\nfunction sandboxName(agentId, sessionId) {\n\treturn `agent-${createHash(\"sha256\").update(`${agentId}:${sessionId}`).digest(\"hex\").slice(0, 16)}`;\n}\nfunction hookContext(options) {\n\treturn {\n\t\tagentId: options.agentId,\n\t\tsessionId: options.sessionId,\n\t\tagentRoot: options.agentRoot,\n\t\tsessionRoot: options.sessionRoot\n\t};\n}\n/** Recursively create the parent directory of a guest file (mkdir is non-recursive). */\nasync function ensureGuestDir(fs, filePath) {\n\tconst segments = posix.dirname(filePath).split(\"/\").filter(Boolean);\n\tlet current = \"\";\n\tfor (const segment of segments) {\n\t\tcurrent += `/${segment}`;\n\t\ttry {\n\t\t\tawait fs.mkdir(current);\n\t\t} catch {}\n\t}\n}\nfunction createMicrosandboxProvider(options = {}) {\n\tconst codemode = options.codemode ?? false;\n\treturn { async create(providerOptions) {\n\t\tawait ensureWorkspaceDir(providerOptions.agentRoot);\n\t\tawait ensureWorkspaceDir(providerOptions.sessionRoot);\n\t\tconst runnerHostDir = resolveCodemodeRunnerDir(import.meta.url);\n\t\tconst sb = await buildMicrosandbox(sandboxName(providerOptions.agentId, providerOptions.sessionId), providerOptions.agentRoot, providerOptions.sessionRoot, {\n\t\t\t...options,\n\t\t\tvolumes: [...options.volumes ?? [], {\n\t\t\t\tguestPath: CODEMODE_GUEST_DIR,\n\t\t\t\tbind: runnerHostDir,\n\t\t\t\treadonly: true\n\t\t\t}]\n\t\t}).create();\n\t\tconst hooks = providerOptions.hooks;\n\t\tconst guestFs = sb.fs();\n\t\tlet nodeAvailable;\n\t\tasync function ensureNodeRuntime() {\n\t\t\tif (nodeAvailable === void 0) nodeAvailable = await probeNodeRuntime(sb);\n\t\t\tif (!nodeAvailable) return nodeRuntimeMissingResult(options.image);\n\t\t\treturn null;\n\t\t}\n\t\tconst runtime = {\n\t\t\tagentId: providerOptions.agentId,\n\t\t\tsessionId: providerOptions.sessionId,\n\t\t\tagentRoot: providerOptions.agentRoot,\n\t\t\tsessionRoot: providerOptions.sessionRoot,\n\t\t\tasync exec(script, execOptions) {\n\t\t\t\tconst ctx = hookContext(providerOptions);\n\t\t\t\tawait hooks?.beforeExec?.({\n\t\t\t\t\t...ctx,\n\t\t\t\t\tscript\n\t\t\t\t});\n\t\t\t\tlet execResult;\n\t\t\t\tif (codemode && isJsExecCommand(script)) execResult = await ensureNodeRuntime() ?? await runCodemode({\n\t\t\t\t\tsb,\n\t\t\t\t\tsessionRoot: providerOptions.sessionRoot,\n\t\t\t\t\tscript,\n\t\t\t\t\texecOptions,\n\t\t\t\t\tinvokeTool: providerOptions.invokeTool,\n\t\t\t\t\tworkdir: options.workdir\n\t\t\t\t});\n\t\t\t\telse {\n\t\t\t\t\tconst out = await sb.execWith(\"sh\", (e) => {\n\t\t\t\t\t\tlet builder = e.args([\"-lc\", script]).cwd(execOptions?.cwd ?? options.workdir ?? \"/workspace\");\n\t\t\t\t\t\tif (execOptions?.env) builder = builder.envs(execOptions.env);\n\t\t\t\t\t\tif (execOptions?.stdin !== void 0) builder = builder.stdinBytes(typeof execOptions.stdin === \"string\" ? Buffer.from(execOptions.stdin) : execOptions.stdin);\n\t\t\t\t\t\treturn builder;\n\t\t\t\t\t});\n\t\t\t\t\texecResult = {\n\t\t\t\t\t\tstdout: out.stdout(),\n\t\t\t\t\t\tstderr: out.stderr(),\n\t\t\t\t\t\texitCode: out.code\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tawait hooks?.afterExec?.({\n\t\t\t\t\t...ctx,\n\t\t\t\t\tscript,\n\t\t\t\t\tresult: execResult\n\t\t\t\t});\n\t\t\t\treturn execResult;\n\t\t\t},\n\t\t\tasync readFile(path) {\n\t\t\t\treturn guestFs.readToString(path);\n\t\t\t},\n\t\t\tasync writeFile(path, content) {\n\t\t\t\tawait ensureGuestDir(guestFs, path);\n\t\t\t\tawait guestFs.write(path, content);\n\t\t\t},\n\t\t\tasync dispose() {\n\t\t\t\tawait hooks?.onDispose?.(hookContext(providerOptions));\n\t\t\t\tawait sb.stopAndWait();\n\t\t\t}\n\t\t};\n\t\treturn {\n\t\t\truntime,\n\t\t\ttools: createCodingTools(runtime, { codemode })\n\t\t};\n\t} };\n}\n//#endregion\n//#region src/providers/microsandbox/warm-images.ts\nasync function isImageCached(reference) {\n\ttry {\n\t\tawait Image.get(reference);\n\t\treturn true;\n\t} catch (error) {\n\t\tif (error instanceof ImageNotFoundError) return false;\n\t\tthrow error;\n\t}\n}\nfunction warmupSandboxName(reference) {\n\treturn `__warm-${createHash(\"sha256\").update(reference).digest(\"hex\").slice(0, 12)}`;\n}\nasync function pullImage(reference, options) {\n\tconst name = warmupSandboxName(reference);\n\toptions.onProgress?.(reference, \"pulling\");\n\tconst sandbox = await (await Sandbox.builder(name).image(reference).pullPolicy(\"if-missing\").disableNetwork().memory(128).cpus(1).replace().createWithPullProgress()).awaitSandbox();\n\ttry {\n\t\tawait sandbox.stopAndWait();\n\t} finally {\n\t\ttry {\n\t\t\tawait Sandbox.remove(name);\n\t\t} catch {}\n\t}\n\toptions.onProgress?.(reference, \"ready\");\n}\n/**\n* Ensure VM OCI images are present in the microsandbox cache.\n* Skips when microsandbox is not installed. No-op for an empty list.\n*/\nasync function warmVmImages(references, options = {}) {\n\tif (!isInstalled() || references.length === 0) return;\n\tfor (const reference of [...new Set(references)]) {\n\t\tif (await isImageCached(reference)) {\n\t\t\toptions.onProgress?.(reference, \"cached\");\n\t\t\tcontinue;\n\t\t}\n\t\tawait pullImage(reference, options);\n\t}\n}\n//#endregion\n//#region src/providers/microsandbox/collect-vm-images.ts\n/** OCI image a VM runtime will boot, or undefined when using `snapshot` only. */\nfunction vmImageForOptions(options) {\n\tif (options.snapshot) return;\n\treturn options.image ?? \"node:22\";\n}\n/** Dedupe OCI images referenced by VM runtime options. */\nfunction collectVmImages(configs) {\n\tconst images = /* @__PURE__ */ new Set();\n\tfor (const config of configs) {\n\t\tif (!config) continue;\n\t\tconst image = vmImageForOptions(config);\n\t\tif (image) images.add(image);\n\t}\n\treturn [...images];\n}\n//#endregion\n//#region src/providers/microsandbox/availability.ts\nlet cached;\n/** True when the optional `microsandbox` package is installed and usable. */\nasync function isMicrosandboxAvailable() {\n\tif (cached !== void 0) return cached;\n\ttry {\n\t\tcached = (await import(\"microsandbox\")).isInstalled();\n\t} catch {\n\t\tcached = false;\n\t}\n\treturn cached;\n}\n//#endregion\n//#region src/providers/microsandbox/index.ts\nvar microsandbox_exports = /* @__PURE__ */ __exportAll({\n\tDEFAULT_VM_IMAGE: () => DEFAULT_VM_IMAGE,\n\tcreateMicrosandboxProvider: () => createMicrosandboxProvider,\n\tisMicrosandboxAvailable: () => isMicrosandboxAvailable\n});\n//#endregion\nexport { warmVmImages as a, buildMicrosandbox as c, vmImageForOptions as i, isMicrosandboxAvailable as n, createMicrosandboxProvider as o, collectVmImages as r, DEFAULT_VM_IMAGE as s, microsandbox_exports as t };\n\n//# sourceMappingURL=microsandbox-Dgc_M_4t.mjs.map"],"mappings":";;;;;;;;;AAUA,IAAI,YAAY,OAAO;AACvB,IAAI,eAAe,KAAK,eAAe;CACtC,IAAI,SAAS,CAAC;CACd,KAAK,IAAI,QAAQ,KAAK,UAAU,QAAQ,MAAM;EAC7C,KAAK,IAAI;EACT,YAAY;CACb,CAAC;CACD,IAAI,CAAC,YAAY,UAAU,QAAQ,OAAO,aAAa,EAAE,OAAO,SAAS,CAAC;CAC1E,OAAO;AACR;AAGA,MAAM,gBAAgB;AACtB,MAAM,mBAAmB;AACzB,MAAM,kBAAkB;AACxB,SAAS,aAAa,SAAS,QAAQ;CACtC,QAAQ,QAAR;EACC,KAAK,QAAQ,OAAO,QAAQ,eAAe;EAC3C,KAAK,aAAa,OAAO,QAAQ,SAAS,MAAM,EAAE,OAAOA,aAAAA,cAAc,SAAS,CAAC,CAAC;EAClF,KAAK,aAAa,OAAO,QAAQ,SAAS,MAAM,EAAE,OAAOA,aAAAA,cAAc,SAAS,CAAC,CAAC;EAClF,SAAS,OAAO,QAAQ,SAAS,MAAM,EAAE,OAAOA,aAAAA,cAAc,WAAW,CAAC,CAAC;CAC5E;AACD;AACA,SAAS,YAAY,SAAS,OAAO;CACpC,OAAO,QAAQ,OAAO,MAAM,YAAY,MAAM;EAC7C,IAAI,UAAU,OAAO;GACpB,IAAI,OAAO,EAAE,KAAK,MAAM,IAAI;GAC5B,IAAI,MAAM,UAAU,OAAO,KAAK,SAAS;GACzC,OAAO;EACR;EACA,IAAI,WAAW,OAAO;GACrB,IAAI,QAAQ,EAAE,MAAM,MAAM,KAAK;GAC/B,IAAI,MAAM,UAAU,QAAQ,MAAM,SAAS;GAC3C,OAAO;EACR;EACA,MAAM,QAAQ,EAAE,MAAM;EACtB,OAAO,MAAM,YAAY,KAAK,IAAI,MAAM,KAAK,MAAM,OAAO,IAAI;CAC/D,CAAC;AACF;AACA,SAAS,kBAAkB,MAAM,WAAW,aAAa,UAAU,CAAC,GAAG;CACtE,MAAM,UAAU,QAAQ,WAAW;CACnC,IAAI,UAAUC,aAAAA,QAAQ,QAAQ,IAAI,EAAE,QAAQ,OAAO;CACnD,IAAI,QAAQ,UAAU,UAAU,QAAQ,aAAa,QAAQ,QAAQ;MAChE,UAAU,QAAQ,MAAM,QAAQ,SAAS,aAAa;CAC3D,IAAI,QAAQ,WAAW,KAAK,GAAG,UAAU,QAAQ,OAAO,QAAQ,MAAM;CACtE,IAAI,QAAQ,SAAS,KAAK,GAAG,UAAU,QAAQ,KAAK,QAAQ,IAAI;CAChE,IAAI,QAAQ,KAAK,UAAU,QAAQ,KAAK,QAAQ,GAAG;CACnD,IAAI,QAAQ,gBAAgB,KAAK,GAAG,UAAU,QAAQ,YAAY,QAAQ,WAAW;CACrF,IAAI,QAAQ,gBAAgB,KAAK,GAAG,UAAU,QAAQ,YAAY,QAAQ,WAAW;CACrF,IAAI,QAAQ,YAAY,OAAO,UAAU,QAAQ,QAAQ;CACzD,UAAU,aAAa,SAAS,QAAQ,WAAW,eAAe;CAClE,UAAU,QAAQ,OAAOC,aAAAA,cAAc,MAAM,EAAE,KAAK,SAAS,CAAC;CAC9D,UAAU,QAAQ,OAAOC,aAAAA,gBAAgB,MAAM,EAAE,KAAK,WAAW,CAAC;CAClE,KAAK,MAAM,SAAS,QAAQ,WAAW,CAAC,GAAG,UAAU,YAAY,SAAS,KAAK;CAC/E,OAAO;AACR;AAGA,MAAM,gCAAgC;AACtC,SAAS,yBAAyB,OAAO;CACxC,OAAO;EACN,QAAQ;EACR,QAAQ,GAAG,gCAAgC,QAAQ,sBAAsB,MAAM,KAAK,GAAG;EACvF,UAAU;CACX;AACD;AACA,eAAe,iBAAiB,IAAI;CACnC,QAAQ,MAAM,GAAG,SAAS,OAAO,YAAY,QAAQ,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC,GAAG,SAAS;AAClH;;AAIA,SAAS,eAAe,OAAO;CAC9B,MAAM,OAAO,CAAC;CACd,IAAI,UAAU;CACd,IAAI,QAAQ;CACZ,IAAI,UAAU;CACd,KAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;EACtC,MAAM,OAAO,MAAM;EACnB,IAAI,SAAS;GACZ,WAAW;GACX,UAAU;GACV;EACD;EACA,IAAI,UAAU,KAAK;GAClB,IAAI,SAAS,KAAK,QAAQ;QACrB,WAAW;GAChB;EACD;EACA,IAAI,UAAU,MAAM;GACnB,IAAI,SAAS,MAAM,UAAU;QACxB,IAAI,SAAS,MAAM,QAAQ;QAC3B,WAAW;GAChB;EACD;EACA,IAAI,SAAS,OAAO,SAAS,MAAM;GAClC,QAAQ;GACR;EACD;EACA,IAAI,KAAK,KAAK,IAAI,GAAG;GACpB,IAAI,QAAQ,SAAS,GAAG;IACvB,KAAK,KAAK,OAAO;IACjB,UAAU;GACX;GACA;EACD;EACA,WAAW;CACZ;CACA,IAAI,QAAQ,SAAS,GAAG,KAAK,KAAK,OAAO;CACzC,OAAO;AACR;;AAEA,SAAS,mBAAmB,QAAQ;CACnC,MAAM,UAAU,OAAO,KAAK;CAC5B,IAAI,CAAC,QAAQ,WAAW,SAAS,GAAG,OAAO;CAC3C,MAAM,OAAO,QAAQ,MAAM,CAAC,EAAE,KAAK;CACnC,IAAI,KAAK,WAAW,GAAG,OAAO;CAC9B,OAAO,EAAE,MAAM,eAAe,IAAI,EAAE;AACrC;AAGA,MAAM,qBAAqB;AAC3B,MAAM,wBAAwB,GAAG,mBAAmB;AACpD,SAAS,gBAAgB,MAAM;CAC9B,IAAI,MAAM;CACV,OAAO,SAAA,GAAA,UAAA,SAAgB,GAAG,GAAG;EAC5B,MAAM,YAAA,GAAA,UAAA,MAAgB,KAAK,cAAc;EACzC,KAAA,GAAA,QAAA,YAAe,QAAQ;OAClB,KAAK,OAAA,GAAA,QAAA,cAAmB,UAAU,MAAM,CAAC,EAAE,SAAS,wBAAwB,OAAO;EAAA;EAExF,OAAA,GAAA,UAAA,SAAc,GAAG;CAClB;CACA,MAAM,IAAI,MAAM,6CAA6C;AAC9D;;AAEA,SAAS,yBAAyB,eAAe;CAChD,MAAM,cAAc,iBAAA,GAAA,UAAA,UAAA,GAAA,SAAA,eAAsC,aAAa,CAAC,CAAC;CACzE,MAAM,aAAa,EAAA,GAAA,UAAA,MAAM,aAAa,QAAQ,aAAa,gBAAgB,UAAU,IAAA,GAAA,UAAA,MAAQ,aAAa,OAAO,aAAa,gBAAgB,UAAU,CAAC;CACzJ,KAAK,MAAM,aAAa,YAAY,KAAA,GAAA,QAAA,aAAA,GAAA,UAAA,MAAoB,WAAW,YAAY,CAAC,GAAG,OAAO;CAC1F,MAAM,IAAI,MAAM,uCAAuC;AACxD;AAGA,SAAS,YAAY,aAAa;CACjC,QAAA,GAAA,UAAA,MAAY,aAAa,WAAW;AACrC;AACA,eAAe,mBAAmB,aAAa;CAC9C,OAAA,GAAA,iBAAA,IAAS,YAAY,WAAW,GAAG;EAClC,WAAW;EACX,OAAO;CACR,CAAC;CACD,OAAA,GAAA,iBAAA,OAAY,YAAY,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AAC1D;AACA,eAAe,kBAAkB,aAAa,UAAU,YAAY,SAAS;CAC5E,IAAI,CAAC,SAAS,SAAS,eAAe,GAAG;CACzC,IAAI,QAAQ,IAAI,QAAQ,GAAG;CAC3B,QAAQ,IAAI,QAAQ;CACpB,MAAM,eAAA,GAAA,UAAA,MAAmB,YAAY,WAAW,GAAG,QAAQ;CAC3D,IAAI;CACJ,IAAI;EACH,UAAU,KAAK,MAAM,OAAA,GAAA,iBAAA,UAAe,aAAa,MAAM,CAAC;CACzD,QAAQ;EACP,QAAQ,OAAO,QAAQ;EACvB;CACD;CACA,MAAM,gBAAA,GAAA,UAAA,MAAoB,YAAY,WAAW,GAAG,GAAG,QAAQ,GAAG,eAAe;CACjF,IAAI;EACH,MAAM,SAAS,MAAM,WAAW,QAAQ,MAAM,QAAQ,QAAQ;EAC9D,MAAM,WAAW;GAChB,IAAI,QAAQ;GACZ;EACD;EACA,OAAA,GAAA,iBAAA,WAAgB,cAAc,KAAK,UAAU,QAAQ,CAAC;CACvD,SAAS,OAAO;EACf,MAAM,WAAW;GAChB,IAAI,QAAQ;GACZ,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;EAC7D;EACA,OAAA,GAAA,iBAAA,WAAgB,cAAc,KAAK,UAAU,QAAQ,CAAC;CACvD;AACD;;AAEA,MAAM,2BAA2B;AACjC,SAAS,kBAAkB,aAAa,YAAY;CACnD,MAAM,MAAM,YAAY,WAAW;CACnC,MAAM,0BAA0B,IAAI,IAAI;CACxC,MAAM,UAAU,aAAa;EAC5B,IAAI,CAAC,UAAU;EACf,kBAAkB,aAAa,UAAU,YAAY,OAAO,EAAE,YAAY,CAAC,CAAC;CAC7E;CACA,MAAM,WAAA,GAAA,QAAA,OAAgB,MAAM,QAAQ,aAAa,OAAO,QAAQ,CAAC;CACjE,MAAM,OAAO,kBAAkB;EAC9B,CAAA,GAAA,iBAAA,SAAQ,GAAG,EAAE,MAAM,YAAY;GAC9B,KAAK,MAAM,SAAS,SAAS,OAAO,KAAK;EAC1C,CAAC,EAAE,YAAY,CAAC,CAAC;CAClB,GAAG,wBAAwB;CAC3B,OAAO,EAAE,aAAa;EACrB,QAAQ,MAAM;EACd,cAAc,IAAI;CACnB,EAAE;AACH;AACA,SAAS,gBAAgB,QAAQ;CAChC,OAAO,mBAAmB,MAAM,MAAM;AACvC;AACA,eAAe,YAAY,SAAS;CACnC,MAAM,aAAa,mBAAmB,QAAQ,MAAM;CACpD,IAAI,CAAC,YAAY,OAAO;EACvB,QAAQ;EACR,QAAQ;EACR,UAAU;CACX;CACA,MAAM,mBAAmB,QAAQ,WAAW;CAC5C,MAAM,iBAAiB,QAAQ,eAAe,KAAK,IAAI,kBAAkB,QAAQ,aAAa,QAAQ,UAAU,IAAI;CACpH,IAAI;EACH,MAAM,MAAM,QAAQ,aAAa,OAAO,QAAQ,WAAW;EAC3D,MAAM,aAAa,QAAQ,aAAa,CAAC,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC,GAAG,WAAW,IAAI;EAC7F,MAAM,MAAM,MAAM,QAAQ,GAAG,SAAS,SAAS,YAAY;GAC1D,IAAI,aAAa,QAAQ,KAAK,CAAC,uBAAuB,GAAG,UAAU,CAAC,EAAE,IAAI,GAAG;GAC7E,IAAI,QAAQ,aAAa,KAAK,aAAa,WAAW,KAAK,QAAQ,YAAY,GAAG;GAClF,OAAO;EACR,CAAC;EACD,OAAO;GACN,QAAQ,IAAI,OAAO;GACnB,QAAQ,IAAI,OAAO;GACnB,UAAU,IAAI;EACf;CACD,UAAU;EACT,gBAAgB,MAAM;EACtB,OAAA,GAAA,iBAAA,IAAS,YAAY,QAAQ,WAAW,GAAG;GAC1C,WAAW;GACX,OAAO;EACR,CAAC;CACF;AACD;AAGA,SAAS,YAAY,SAAS,WAAW;CACxC,OAAO,UAAA,GAAA,YAAA,YAAoB,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,EAAE,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE;AACjG;AACA,SAAS,YAAY,SAAS;CAC7B,OAAO;EACN,SAAS,QAAQ;EACjB,WAAW,QAAQ;EACnB,WAAW,QAAQ;EACnB,aAAa,QAAQ;CACtB;AACD;;AAEA,eAAe,eAAe,IAAI,UAAU;CAC3C,MAAM,WAAWC,UAAAA,MAAM,QAAQ,QAAQ,EAAE,MAAM,GAAG,EAAE,OAAO,OAAO;CAClE,IAAI,UAAU;CACd,KAAK,MAAM,WAAW,UAAU;EAC/B,WAAW,IAAI;EACf,IAAI;GACH,MAAM,GAAG,MAAM,OAAO;EACvB,QAAQ,CAAC;CACV;AACD;AACA,SAAS,2BAA2B,UAAU,CAAC,GAAG;CACjD,MAAM,WAAW,QAAQ,YAAY;CACrC,OAAO,EAAE,MAAM,OAAO,iBAAiB;EACtC,MAAMC,aAAAA,mBAAmB,gBAAgB,SAAS;EAClD,MAAMA,aAAAA,mBAAmB,gBAAgB,WAAW;EACpD,MAAM,gBAAgB,yBAAA,QAAA,KAAA,EAAA,cAAA,UAAA,EAAA,IAAwC;EAC9D,MAAM,KAAK,MAAM,kBAAkB,YAAY,gBAAgB,SAAS,gBAAgB,SAAS,GAAG,gBAAgB,WAAW,gBAAgB,aAAa;GAC3J,GAAG;GACH,SAAS,CAAC,GAAG,QAAQ,WAAW,CAAC,GAAG;IACnC,WAAW;IACX,MAAM;IACN,UAAU;GACX,CAAC;EACF,CAAC,EAAE,OAAO;EACV,MAAM,QAAQ,gBAAgB;EAC9B,MAAM,UAAU,GAAG,GAAG;EACtB,IAAI;EACJ,eAAe,oBAAoB;GAClC,IAAI,kBAAkB,KAAK,GAAG,gBAAgB,MAAM,iBAAiB,EAAE;GACvE,IAAI,CAAC,eAAe,OAAO,yBAAyB,QAAQ,KAAK;GACjE,OAAO;EACR;EACA,MAAM,UAAU;GACf,SAAS,gBAAgB;GACzB,WAAW,gBAAgB;GAC3B,WAAW,gBAAgB;GAC3B,aAAa,gBAAgB;GAC7B,MAAM,KAAK,QAAQ,aAAa;IAC/B,MAAM,MAAM,YAAY,eAAe;IACvC,MAAM,OAAO,aAAa;KACzB,GAAG;KACH;IACD,CAAC;IACD,IAAI;IACJ,IAAI,YAAY,gBAAgB,MAAM,GAAG,aAAa,MAAM,kBAAkB,KAAK,MAAM,YAAY;KACpG;KACA,aAAa,gBAAgB;KAC7B;KACA;KACA,YAAY,gBAAgB;KAC5B,SAAS,QAAQ;IAClB,CAAC;SACI;KACJ,MAAM,MAAM,MAAM,GAAG,SAAS,OAAO,MAAM;MAC1C,IAAI,UAAU,EAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,IAAI,aAAa,OAAO,QAAQ,WAAW,YAAY;MAC7F,IAAI,aAAa,KAAK,UAAU,QAAQ,KAAK,YAAY,GAAG;MAC5D,IAAI,aAAa,UAAU,KAAK,GAAG,UAAU,QAAQ,WAAW,OAAO,YAAY,UAAU,WAAW,OAAO,KAAK,YAAY,KAAK,IAAI,YAAY,KAAK;MAC1J,OAAO;KACR,CAAC;KACD,aAAa;MACZ,QAAQ,IAAI,OAAO;MACnB,QAAQ,IAAI,OAAO;MACnB,UAAU,IAAI;KACf;IACD;IACA,MAAM,OAAO,YAAY;KACxB,GAAG;KACH;KACA,QAAQ;IACT,CAAC;IACD,OAAO;GACR;GACA,MAAM,SAAS,MAAM;IACpB,OAAO,QAAQ,aAAa,IAAI;GACjC;GACA,MAAM,UAAU,MAAM,SAAS;IAC9B,MAAM,eAAe,SAAS,IAAI;IAClC,MAAM,QAAQ,MAAM,MAAM,OAAO;GAClC;GACA,MAAM,UAAU;IACf,MAAM,OAAO,YAAY,YAAY,eAAe,CAAC;IACrD,MAAM,GAAG,YAAY;GACtB;EACD;EACA,OAAO;GACN;GACA,OAAOC,aAAAA,kBAAkB,SAAS,EAAE,SAAS,CAAC;EAC/C;CACD,EAAE;AACH;AA6DA,IAAI;;AAEJ,eAAe,0BAA0B;CACxC,IAAI,WAAW,KAAK,GAAG,OAAO;CAC9B,IAAI;EACH,UAAU,MAAM,OAAO,iBAAiB,YAAY;CACrD,QAAQ;EACP,SAAS;CACV;CACA,OAAO;AACR;AAGA,IAAI,uBAAuC,4BAAY;CACtD,wBAAwB;CACxB,kCAAkC;CAClC,+BAA+B;AAChC,CAAC"}