From 53f854d05b6859093e3c8346968dac9b4b0e2f98 Mon Sep 17 00:00:00 2001 From: NotASithLord <48842926+NotASithLord@users.noreply.github.com> Date: Sun, 9 Aug 2026 07:23:58 +0200 Subject: [PATCH] Add first-class Firefox Notebook modules --- .../03-module-imports-via-egress.md | 18 +- docs/security/RED-TEAM-RESULTS.md | 2 +- docs/security/THREAT-MODEL.md | 8 +- extension/background/notebook-client.js | 23 +- extension/background/routes/engine.js | 38 +- extension/engine-tabs/notebook-tab/index.html | 12 +- .../engine-tabs/notebook-tab/linker-worker.js | 24 + .../notebook-tab/notebook-neutralizers.js | 16 +- .../engine-tabs/notebook-tab/notebook-tab.js | 412 ++++++++++++-- .../engine-tabs/notebook-tab/realm-seal.js | 23 +- .../engine-tabs/notebook-tab/worker-host.html | 124 ++++ .../engine-tabs/notebook-tab/worker-source.js | 48 +- extension/manifest.json | 3 +- extension/peerd-engine/errors.js | 15 + extension/peerd-engine/index.js | 3 + extension/peerd-engine/module-resolver.js | 5 +- .../peerd-engine/single-module-linker.js | 172 ++++++ .../peerd-runtime/tools/defs/js-notebook.js | 28 +- extension/shared/channel-config.js | 1 + extension/vendor/rollup/LICENSE.md | 163 ++++++ extension/vendor/rollup/SOURCE.txt | 38 ++ extension/vendor/rollup/bindings_wasm_bg.wasm | Bin 0 -> 565801 bytes extension/vendor/rollup/rollup.browser.js | 10 + extension/vendor/vendor.lock.json | 4 + manifests/base.json | 2 +- packaging/check-tscheck.ts | 2 +- packaging/gen-channel-config.ts | 11 +- packaging/security-baseline.json | 9 +- scripts/cdp/states.mjs | 98 ++++ scripts/firefox/run-runtime-tests.mjs | 532 +++++++++++++++++- .../background/notebook-resolve-lane.test.ts | 8 + tests/background/routes-engine.test.ts | 47 ++ .../notebook-tab/worker-source.test.ts | 9 +- .../peerd-engine/single-module-linker.test.ts | 56 ++ .../tools/remote-import-policy.test.ts | 43 ++ tests/red-team/scenarios/06-sandbox-escape.ts | 2 + tests/store/store-posture.test.ts | 4 +- 37 files changed, 1875 insertions(+), 138 deletions(-) create mode 100644 extension/engine-tabs/notebook-tab/linker-worker.js create mode 100644 extension/engine-tabs/notebook-tab/worker-host.html create mode 100644 extension/peerd-engine/single-module-linker.js create mode 100644 extension/vendor/rollup/LICENSE.md create mode 100644 extension/vendor/rollup/SOURCE.txt create mode 100644 extension/vendor/rollup/bindings_wasm_bg.wasm create mode 100644 extension/vendor/rollup/rollup.browser.js create mode 100644 tests/peerd-engine/single-module-linker.test.ts diff --git a/docs/design/js-superpower/03-module-imports-via-egress.md b/docs/design/js-superpower/03-module-imports-via-egress.md index 6632f948..dd39e787 100644 --- a/docs/design/js-superpower/03-module-imports-via-egress.md +++ b/docs/design/js-superpower/03-module-imports-via-egress.md @@ -2,14 +2,14 @@ Remote module imports are a package policy, not a worker capability. `REMOTE_MODULE_IMPORTS_ENABLED` is generated with the channel configuration. -Supported Preview targets enable it. Store, web, and Firefox packages disable it. +Chrome and Firefox Preview packages enable it. Store and web packages disable it. ## Supported imports Notebook and Script entry code can use literal static imports and re-exports. Relative files, `peerd:std`, `peerd:wasi`, and `peerd:toolbox/` resolve -through the host where the browser loader supports them. Chrome Preview also -accepts literal static HTTP and HTTPS imports. +through the host. Chrome and Firefox Preview also accept literal static HTTP +and HTTPS imports. Dynamic imports, `peerd.self.import`, computed specifiers, import attributes, other URL schemes, and extension-absolute paths are refused with a stable @@ -52,10 +52,12 @@ provider, browser, site, and dweb clients. Host relays refuse forged requests. A remote module cannot import a local toolbox module. Returned values, logs, and errors cross the untrusted-content fence before reaching the model. -Firefox refuses remote imports before fetching because its worker loader cannot -run the generated child module URLs. Native Firefox loading for local and -remote static graphs is tracked separately. The broader policy for executing -code fetched as ordinary data is also tracked separately. +Firefox uses the same resolver and policy, then links the authorized graph into +one strict worker script. A disposable packaged compiler Worker performs the +link and is terminated on Stop or deadline. The code Worker runs inside a +sandboxed, opaque-origin host with no extension APIs, no string compilation, +and `connect-src 'none'`. Store still refuses remote imports before fetching. +Preview enables them under the same compute-only profile as Chrome. ## Authoritative sources @@ -64,6 +66,8 @@ code fetched as ordinary data is also tracked separately. syntax. - `extension/peerd-engine/module-resolver.js` enforces policy and builds static module graphs. +- `extension/peerd-engine/single-module-linker.js` emits the Firefox worker + entry without child module loads. - `extension/engine-tabs/notebook-tab/notebook-tab.js` and `extension/offscreen/job-runner.js` wire the browser hosts. - `packaging/verify-store-artifact.ts`, the packaged page check, and the diff --git a/docs/security/RED-TEAM-RESULTS.md b/docs/security/RED-TEAM-RESULTS.md index c03a7a6e..50514c22 100644 --- a/docs/security/RED-TEAM-RESULTS.md +++ b/docs/security/RED-TEAM-RESULTS.md @@ -147,7 +147,7 @@ _Generated from the current checkout by the command above._ - Claim checked: Across all three sandbox kinds, confinement holds: the Notebook realm exposes only the audited fetch bridge (raw channels throw, native fetch unrecoverable, bridge un-unseatable) and no same-origin durable store; the Cache API and IndexedDB both throw, so the sealed extension-origin worker cannot reach the `peerd` database; a remote module restricts its whole run to compute only and all remote-controlled output is fenced; an App cannot break out of its iframe or impersonate the service worker to issue actor commands; and the WebVM HTTP bridge refuses non-http(s) schemes, scrubs CRLF header injection, drops any smuggled auth field, and confirms body-bearing verbs. - Threat-model invariant: INV-6 - Defenses exercised: applyRealmSeal (raw-channel block + native deletion + bridge pin), resolveRelativePath (OPFS ".." collapse), buildWorkerSource + formatEvalResult (remote graph capability collapse + output fence), composeApp + stripMetaRefresh (App iframe breakout/navigation defense), isServiceWorkerSender (actor-command source pin), normalizeRequest + needsWebWriteConfirm (WebVM bridge scheme/CRLF/auth/confirm) -- Verified in the browser by: `extension/tests/unit/engine-tabs/notebook-tab/notebook-seal.test.js (real worker realm); extension/tests/unit/offscreen/job-runner.test.js (a2a run denied egress + delegation); tests/peerd-engine/module-resolver-toolbox.test.ts (remote-to-local toolbox refusal); tests/engine-tabs/notebook-tab/worker-caps-profile.test.ts (remote whole-run profile); tests/peerd-runtime/tools/remote-import-policy.test.ts (remote output fence); extension/tests/unit/red-team/sandbox-escape.test.js (in-browser red-team framing); scripts/cdp/states.mjs actor-command-sender-pin (live engine-tab forgery); scripts/cdp/states.mjs notebook-remote-restricted (live visible-Notebook host wall)` +- Verified in the browser by: `extension/tests/unit/engine-tabs/notebook-tab/notebook-seal.test.js (real worker realm); extension/tests/unit/offscreen/job-runner.test.js (a2a run denied egress + delegation); tests/peerd-engine/module-resolver-toolbox.test.ts (remote-to-local toolbox refusal); tests/engine-tabs/notebook-tab/worker-caps-profile.test.ts (remote whole-run profile); tests/peerd-runtime/tools/remote-import-policy.test.ts (remote output fence); tests/peerd-engine/single-module-linker.test.ts (seal-first graph with no child loads); extension/tests/unit/red-team/sandbox-escape.test.js (in-browser red-team framing); scripts/firefox/run-runtime-tests.mjs (opaque worker host, string-compilation refusal, cancellable compiler and fetch, local and remote graph parity); scripts/cdp/states.mjs actor-command-sender-pin (live engine-tab forgery); scripts/cdp/states.mjs notebook-remote-restricted (live visible-Notebook host wall)` | Probe (adversary action) | Result | Evidence | |--------------------------|--------|----------| diff --git a/docs/security/THREAT-MODEL.md b/docs/security/THREAT-MODEL.md index 1a891bb8..bb41bdcc 100644 --- a/docs/security/THREAT-MODEL.md +++ b/docs/security/THREAT-MODEL.md @@ -217,8 +217,12 @@ caps, and may carry an optional SHA-256 pin. Any remote module marks the whole resolved graph as untrusted compute. Runtime network and file access, agents, model calls, browser and site clients, and dweb are disabled for that run. A remote module cannot import a local toolbox module. Generated worker shims and -independent host relay checks enforce the same profile. Returned values, -console output, and errors are fenced as untrusted. +independent host relay checks enforce the same profile. Firefox links the +authorized graph and realm seal in a disposable compiler Worker, then runs the +result through a sandboxed opaque-origin host with no extension APIs, string +compilation, or network. Stop terminates the compiler or code Worker and +cancels the host fetch operation. Returned values, console output, and errors +are fenced as untrusted. Pins verify exact bytes and improve reproducibility. They do not grant trust or authority. Dynamic imports are refused in every package. Remote modules run inside a sealed worker. The store build strips diff --git a/extension/background/notebook-client.js b/extension/background/notebook-client.js index 392ec961..026ce33a 100644 --- a/extension/background/notebook-client.js +++ b/extension/background/notebook-client.js @@ -60,8 +60,8 @@ export const createJsClient = ({ registry, tracker }) => { return queue.enqueue(`resolve:${opts.sessionId}`, () => resolveId(opts)); }; - /** @param {string} notebookId @param {{ type: string, [k: string]: unknown }} message */ - const callTab = async (notebookId, message) => { + /** @param {string} notebookId @param {{ type: string, [k: string]: unknown }} message @param {AbortSignal} [abortSignal] */ + const callTab = async (notebookId, message, abortSignal) => { // background: agent-driven Notebook tabs never steal focus (DESIGN-12, // 2026-06-18). sandbox_create already dropped a "go there" card; an auto-create // here opens quietly too. ensureTab early-returns for a live tab. @@ -81,13 +81,24 @@ export const createJsClient = ({ registry, tracker }) => { }); /** @type {JsTabReply} */ let response; + const onAbort = () => { + browser.tabs.sendMessage(tabId, { + type: 'js/abort', notebookId, runId: message.runId, + }).catch(() => {}); + }; + // why dispatch first: an already-aborted signal must not let js/abort race + // ahead of the exact js/eval it terminates in the receiving tab. + const messagePromise = browser.tabs.sendMessage(tabId, { ...message, notebookId }); + if (abortSignal?.aborted) onAbort(); + else abortSignal?.addEventListener('abort', onAbort, { once: true }); try { response = /** @type {JsTabReply} */ (await Promise.race([ - browser.tabs.sendMessage(tabId, { ...message, notebookId }), + messagePromise, timeoutPromise, ])); } finally { clearTimeout(timeoutId); + abortSignal?.removeEventListener('abort', onAbort); } if (!response || response.ok !== true) { const err = new Error(response?.error ?? 'js call returned no response'); @@ -104,14 +115,16 @@ export const createJsClient = ({ registry, tracker }) => { return { resolveId, - /** @param {string} code @param {{ sessionId?: string, notebookId?: string, timeoutMs?: number }} [opts] */ + /** @param {string} code @param {{ sessionId?: string, notebookId?: string, timeoutMs?: number, signal?: AbortSignal }} [opts] */ eval: async (code, opts = {}) => { const id = await resolveIdQueued(opts); + const runId = crypto.randomUUID(); const response = await callTab(id, { type: 'js/eval', + runId, code, timeoutMs: opts.timeoutMs, - }); + }, opts.signal); return response.result; }, diff --git a/extension/background/routes/engine.js b/extension/background/routes/engine.js index 3a04f297..b5bcfa3b 100644 --- a/extension/background/routes/engine.js +++ b/extension/background/routes/engine.js @@ -22,6 +22,21 @@ export const makeEngineRoutes = (deps) => { listOffscreenContexts, scriptRuns, isOffscreenSender, } = deps; + /** @type {Map} */ + const notebookFetchControllers = new Map(); + /** @param {unknown} abortToken @param {unknown} notebookId @param {any} sender */ + const notebookFetchKey = (abortToken, notebookId, sender) => { + if (typeof abortToken !== 'string' || abortToken.length > 128 + || typeof notebookId !== 'string' || notebookId.length > 128) return null; + const notebookRoot = browser.runtime.getURL('engine-tabs/notebook-tab/'); + const senderUrl = sender?.url ?? sender?.tab?.url; + if (!senderUrl?.startsWith(notebookRoot)) return null; + try { + if (new URL(senderUrl).hash.slice(1).split(/[?&]/)[0] !== notebookId) return null; + } catch { return null; } + return `${notebookId}:${abortToken}`; + }; + return { // VM-originated HTTP egress. The VM tab's HTTP-marker dispatcher // calls this when it sees a wrapper script's request marker. webFetch @@ -33,7 +48,7 @@ export const makeEngineRoutes = (deps) => { // an IO-injected factory (vm-net/vm-http-fetch.js) so it's bun-testable — it // layers the revalidating IDB GET cache + host-bound git-auth + body cap + // chunked base64 on top of webFetch's denylist/SSRF/audit chokepoint. - 'sw/web-fetch': async ({ url, method, headers, body, gitAuth, noCache, extract, runId, ownerSessionId, deadlineAt }, sender = undefined) => { + 'sw/web-fetch': async ({ url, method, headers, body, gitAuth, noCache, extract, runId, ownerSessionId, deadlineAt, abortToken, notebookId }, sender = undefined) => { if (typeof url !== 'string' || url.length === 0) { return { ok: false, error: 'url-required' }; } @@ -45,6 +60,7 @@ export const makeEngineRoutes = (deps) => { let onAbort = null; /** @type {ReturnType | null} */ let deadlineTimer = null; + const notebookKey = notebookFetchKey(abortToken, notebookId, sender); const carriesRun = runId !== undefined || ownerSessionId !== undefined; if (carriesRun) { if (typeof runId !== 'string' || typeof ownerSessionId !== 'string' @@ -64,6 +80,17 @@ export const makeEngineRoutes = (deps) => { if (remaining <= 0) runController.abort(); else deadlineTimer = setTimeout(() => runController?.abort(), remaining); } + } else if (notebookKey) { + if (notebookFetchControllers.has(notebookKey)) { + return { ok: false, error: 'duplicate_notebook_fetch_token' }; + } + runController = new AbortController(); + notebookFetchControllers.set(notebookKey, runController); + if (typeof deadlineAt === 'number' && Number.isFinite(deadlineAt)) { + const remaining = deadlineAt - Date.now(); + if (remaining <= 0) runController.abort(); + else deadlineTimer = setTimeout(() => runController?.abort(), remaining); + } } // GET callers (the VM HTTP marker fast path) pass only { url } and behave // exactly as before; the rich VM path + the Notebook code-mode bridge pass @@ -87,8 +114,17 @@ export const makeEngineRoutes = (deps) => { } finally { if (deadlineTimer) clearTimeout(deadlineTimer); if (sourceSignal && onAbort) sourceSignal.removeEventListener('abort', onAbort); + if (notebookKey && notebookFetchControllers.get(notebookKey) === runController) { + notebookFetchControllers.delete(notebookKey); + } } }, + 'sw/web-fetch-abort': async ({ abortToken, notebookId }, sender = undefined) => { + const key = notebookFetchKey(abortToken, notebookId, sender); + const controller = key ? notebookFetchControllers.get(key) : null; + controller?.abort(); + return { ok: true, aborted: controller != null }; + }, // --- App metadata fetch ----------------------------------------------- // app-tab/index.html requests its name + entry filename here at load diff --git a/extension/engine-tabs/notebook-tab/index.html b/extension/engine-tabs/notebook-tab/index.html index 186715c4..adde3537 100644 --- a/extension/engine-tabs/notebook-tab/index.html +++ b/extension/engine-tabs/notebook-tab/index.html @@ -17,8 +17,9 @@ nor any realm that somehow escaped the seal can open a connection-class request to ANY host, ours included. Store and web builds refuse remote URL imports without requesting the module source. Preview resolves permitted - URL imports through the audited SW relay and re-blobs them, so the native - loader never receives a third-party script URL. + URL imports through the audited SW relay. Chrome uses the resolved module + graph directly. Firefox links it into one strict script and runs it in the + opaque sandboxed worker host below, whose CSP also has connect-src 'none'. The SW keeps its own (manifest) CSP with https:, so webFetch still works. --> @@ -28,6 +29,8 @@ +

Starting Notebook…

@@ -57,7 +60,8 @@

Starting Notebook…

- + @@ -67,7 +71,7 @@

Starting Notebook…

-
+

diff --git a/extension/engine-tabs/notebook-tab/linker-worker.js b/extension/engine-tabs/notebook-tab/linker-worker.js new file mode 100644 index 00000000..24f3ffeb --- /dev/null +++ b/extension/engine-tabs/notebook-tab/linker-worker.js @@ -0,0 +1,24 @@ +// @ts-check +// Disposable Firefox Notebook compiler host. + +import { linkSingleModuleWorkerDetailed } from '/peerd-engine/index.js'; + +self.addEventListener('message', async (event) => { + const message = event.data; + if (!message || message.type !== 'link') return; + try { + const linked = await linkSingleModuleWorkerDetailed( + String(message.source), + new Map(Array.isArray(message.cache) ? message.cache : []), + Array.isArray(message.packagedEntryUrls) ? message.packagedEntryUrls : [], + undefined, undefined, Number(message.entryBodyLine), + ); + self.postMessage({ type: 'linked', ...linked }); + } catch (error) { + self.postMessage({ + type: 'link-failed', + error: /** @type {{ message?: string }} */ (error)?.message ?? String(error), + errorCode: /** @type {{ code?: string }} */ (error)?.code, + }); + } +}); diff --git a/extension/engine-tabs/notebook-tab/notebook-neutralizers.js b/extension/engine-tabs/notebook-tab/notebook-neutralizers.js index 8e2c4332..a81d4455 100644 --- a/extension/engine-tabs/notebook-tab/notebook-neutralizers.js +++ b/extension/engine-tabs/notebook-tab/notebook-neutralizers.js @@ -16,11 +16,9 @@ // worker loader, dead in module workers, sealed anyway), and the // nested Worker / SharedWorker constructors — a nested worker is a // FRESH realm with un-sealed natives, so it must not exist at all. -// 3. The seal runs as the worker entry's FIRST static import (notebook-tab.js -// emits `import ""` ahead of the agent's imports). Module -// graphs evaluate depth-first in declaration order, so the seal -// executes before any agent module's top-level body — closing the -// old gap where statically-imported agent code ran pre-stub. +// 3. The seal is the worker graph's first edge. Chrome evaluates that import +// first. Firefox's single-entry linker emits the seal body first. Both +// execute it before any agent module body, closing the old pre-seal gap. // // What this still is NOT: the outermost fence. The host page's CSP // (notebook-tab/index.html, connect-src 'none') backstops the seal in the @@ -32,12 +30,12 @@ // realm itself, not deferred to the page CSP. // Module loads are NOT an open channel. Store and web builds refuse remote // URL imports without requesting the module source. Preview's HOST resolver -// fetches permitted module source through the audited data relay and hands the -// worker a same-realm blob, so the native loader still sees no third-party URL. +// fetches permitted module source through the audited data relay. The worker +// receives only host-resolved code, never a third-party network URL. // import() itself is syntax, not a global, so there is nothing to seal here. // -// One implementation, three callers: realm-seal.js (the worker entry's -// first static import — the production path), the bun unit tests (mock +// One implementation, three callers: realm-seal.js (the worker graph's +// first edge, linked into Firefox's single script), the bun unit tests (mock // globals), and the in-browser tests (real worker realms). All import // applyRealmSeal from here, so production and tests cannot drift. /** diff --git a/extension/engine-tabs/notebook-tab/notebook-tab.js b/extension/engine-tabs/notebook-tab/notebook-tab.js index d8e40532..1b000953 100644 --- a/extension/engine-tabs/notebook-tab/notebook-tab.js +++ b/extension/engine-tabs/notebook-tab/notebook-tab.js @@ -21,9 +21,13 @@ import { import { renderReturnValue } from './output-render.js'; // The sealed worker source (realm seal + peerd.* surface + bridges) is shared // with the headless offscreen job runner so the security surface can't diverge. -import { buildWorkerSource, mapWorkerError, NOTEBOOK_BUILTINS } from './worker-source.js'; +import { + buildWorkerSource, mapWorkerError, NOTEBOOK_BUILTINS, SEAL_MODULE_URL, +} from './worker-source.js'; import { mountPullInPeerd } from '/shared/pull-in-peerd.js'; -import { REMOTE_MODULE_IMPORTS_ENABLED } from '/shared/channel-config.js'; +import { + NOTEBOOK_MODULE_LOADER, REMOTE_MODULE_IMPORTS_ENABLED, +} from '/shared/channel-config.js'; const notebookId = location.hash.slice(1).split(/[?&]/)[0]; if (!notebookId) { @@ -59,6 +63,7 @@ const els = { idChip: byId('notebook-id-chip'), saveStatus: byId('save-status'), runStatus: byId('run-status'), + workerHost: /** @type {HTMLIFrameElement} */ (byId('worker-host')), }; els.idChip.textContent = notebookId; @@ -130,12 +135,6 @@ const clearModuleCache = () => { }; /** @param {string} [url] */ -const shortenBlob = (url) => { - if (!url) return ''; - const m = url.match(/[^/]+$/); - return m ? `blob:…${m[0].slice(-8)}` : url; -}; - // design 06 rot bookkeeping: when a run settles, report which toolbox modules // it imported and whether it succeeded (runCount/failCount on the meta the // agent reads via toolbox_list). Fire-and-forget — bookkeeping never fails a run. @@ -149,10 +148,24 @@ const recordToolboxUse = (ok) => { } }; -/** @param {() => void} [onRemoteFetch] */ -const makeResolverDeps = (onRemoteFetch) => ({ +/** @param {AbortSignal | undefined} signal */ +const throwIfAborted = (signal) => { + if (!signal?.aborted) return; + const deadline = signal.reason === 'deadline'; + const error = new Error(deadline ? 'Notebook run timed out' : 'Notebook run stopped'); + error.name = deadline ? 'TimeoutError' : 'AbortError'; + throw error; +}; + +/** @param {() => void} [onRemoteFetch] @param {AbortSignal} [signal] @param {number} [deadlineAt] */ +const makeResolverDeps = (onRemoteFetch, signal, deadlineAt) => ({ /** @param {string} path */ - readFile: (path) => editor.opfs.read(path), + readFile: async (path) => { + throwIfAborted(signal); + const source = await editor.opfs.read(path); + throwIfAborted(signal); + return source; + }, /** @param {string} source */ makeBlobUrl: (source) => URL.createObjectURL( new Blob([source], { type: 'application/javascript' }), @@ -163,16 +176,31 @@ const makeResolverDeps = (onRemoteFetch) => ({ remoteModulesEnabled: REMOTE_MODULE_IMPORTS_ENABLED, ...(REMOTE_MODULE_IMPORTS_ENABLED ? { fetchRemote: makeFetchRemote( - (req) => { + async (req) => { + throwIfAborted(signal); onRemoteFetch?.(); - return /** @type {Promise} */ (browser.runtime.sendMessage({ type: 'sw/web-fetch', ...req })); + const abortToken = crypto.randomUUID(); + const onAbort = () => browser.runtime.sendMessage({ + type: 'sw/web-fetch-abort', abortToken, notebookId, + }).catch(() => {}); + signal?.addEventListener('abort', onAbort, { once: true }); + try { + const response = await browser.runtime.sendMessage({ + type: 'sw/web-fetch', ...req, abortToken, notebookId, deadlineAt, + }); + throwIfAborted(signal); + return /** @type {any} */ (response); + } finally { + signal?.removeEventListener('abort', onAbort); + } }), } : {}), /** @param {{ type: string, path: string, blobUrl?: string, error?: string, errorCode?: string }} entry */ log: (entry) => { + if (signal?.aborted) return; const label = isRemoteSpecifier(entry.path) ? entry.path : `./${entry.path}`; if (entry.type === 'resolved') { - appendLine('log-info', `[import] ${label} → ${shortenBlob(entry.blobUrl)}`); + appendLine('log-info', `[import] ${label}`); } else if (entry.type === 'resolve-failed' && !moduleImportPolicyMessage(entry.errorCode)) { appendLine('log-error', `[import] FAILED ${label}: ${entry.error}`); @@ -186,7 +214,9 @@ const makeResolverDeps = (onRemoteFetch) => ({ // never inject it). /** @param {string} name */ readToolboxModule: async (name) => { + throwIfAborted(signal); const resp = /** @type {any} */ (await browser.runtime.sendMessage({ type: 'toolbox/read', name })); + throwIfAborted(signal); if (!resp?.ok) throw new Error(resp?.error ?? 'toolbox read failed'); return String(resp.body); }, @@ -214,46 +244,217 @@ const dimPreviousOutput = () => { for (const child of els.output.children) child.classList.add('nb-prev'); }; -/** @param {string} code @param {number} [timeoutMs] @param {string} [entryPath] */ -const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { +let hostedWorkerSequence = 0; +const workerHostPort = new Promise((resolve, reject) => { + const channel = new MessageChannel(); + const timer = setTimeout(() => reject(new Error('Notebook worker host did not start')), 10_000); + channel.port1.addEventListener('message', (event) => { + if (event.data?.type !== 'notebook-worker-host-ready') return; + clearTimeout(timer); + resolve(channel.port1); + }); + channel.port1.start(); + els.workerHost.addEventListener('load', () => { + els.workerHost.contentWindow?.postMessage( + { type: 'notebook-worker-host-init' }, '*', [channel.port2], + ); + }, { once: true }); + els.workerHost.src = 'worker-host.html'; +}); + +/** @param {string} source @param {string} markerNonce */ +const spawnHostedWorker = async (source, markerNonce) => { + const port = /** @type {MessagePort} */ (await workerHostPort); + const runId = `run-${hostedWorkerSequence += 1}`; + /** @type {Record<'message' | 'error', Array<{ listener: (event: any) => void, once: boolean }>>} */ + const listeners = { message: [], error: [] }; + let active = true; + /** @param {MessageEvent} event */ + const onHostMessage = (event) => { + const message = event.data; + if (!active || message?.type !== 'worker-event' || message.runId !== runId) return; + const eventType = /** @type {'message' | 'error'} */ (message.eventType); + const payload = eventType === 'message' + ? { data: message.data, workerUrl: message.workerUrl } + : { + error: null, message: message.message, filename: message.filename, + lineno: message.lineno, colno: message.colno, workerUrl: message.workerUrl, + }; + for (const entry of [...listeners[eventType]]) { + entry.listener(payload); + if (entry.once) listeners[eventType] = listeners[eventType].filter((item) => item !== entry); + } + }; + port.addEventListener('message', onHostMessage); + port.postMessage({ type: 'run', runId, source, markerNonce }); + return { + /** @param {'message' | 'error'} type @param {(event: any) => void} listener @param {{ once?: boolean }} [options] */ + addEventListener: (type, listener, options) => { + listeners[type].push({ listener, once: options?.once === true }); + }, + /** @param {any} data */ + postMessage: (data) => port.postMessage({ type: 'message', runId, data }), + terminate: () => { + if (!active) return; + active = false; + port.removeEventListener('message', onHostMessage); + port.postMessage({ type: 'terminate', runId }); + }, + }; +}; + +/** + * @param {string} source + * @param {Map} cache + * @param {AbortSignal | undefined} signal + * @param {number} deadlineAt + * @param {number} entryBodyLine + */ +const linkWorkerSource = (source, cache, signal, deadlineAt, entryBodyLine) => new Promise((resolve, reject) => { + const compiler = new Worker(new URL('linker-worker.js', import.meta.url), { type: 'module' }); + let settled = false; + /** @param {(value: any) => void} callback @param {any} value */ + const finish = (callback, value) => { + if (settled) return; + settled = true; + clearTimeout(timer); + signal?.removeEventListener('abort', onAbort); + compiler.terminate(); + callback(value); + }; + const onAbort = () => { + const deadline = signal?.reason === 'deadline'; + const error = new Error(deadline ? 'Notebook module linking timed out' : 'Notebook run stopped'); + error.name = deadline ? 'TimeoutError' : 'AbortError'; + finish(reject, error); + }; + const remaining = Math.max(0, deadlineAt - Date.now()); + const timer = setTimeout(() => finish( + reject, new Error('Notebook module linking timed out'), + ), remaining); + compiler.addEventListener('message', (event) => { + if (event.data?.type === 'linked') finish(resolve, { + source: String(event.data.source), markerNonce: String(event.data.markerNonce), + }); + else if (event.data?.type === 'link-failed') { + const error = new Error(String(event.data.error || 'Notebook module linking failed')); + // @ts-ignore stable code is copied from the isolated compiler realm. + error.code = event.data.errorCode; + finish(reject, error); + } + }); + compiler.addEventListener('error', (event) => finish( + reject, new Error(event.message || 'Notebook module compiler crashed'), + )); + if (signal?.aborted) onAbort(); + else { + signal?.addEventListener('abort', onAbort, { once: true }); + compiler.postMessage({ + type: 'link', source, cache: [...cache], + packagedEntryUrls: [SEAL_MODULE_URL, ...Object.values(NOTEBOOK_BUILTINS)], + entryBodyLine, + }); + } +}); + +const stoppedResult = () => ({ + value: undefined, consoleOutput: [], durationMs: 0, + errorCode: 'notebook_run_stopped', stopped: true, usedRemoteModules: false, +}); + +/** @param {number} timeoutMs @param {boolean} [usedRemoteModules] */ +const timedOutResult = (timeoutMs, usedRemoteModules = false) => ({ + value: undefined, consoleOutput: [], durationMs: 0, + error: `eval timed out after ${timeoutMs}ms`, errorCode: 'notebook_run_timeout', + usedRemoteModules, +}); + +/** @param {string} code @param {number} [timeoutMs] @param {string} [entryPath] @param {AbortSignal} [signal] */ +const runEvalInternal = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH, signal) => { dimPreviousOutput(); setRunStatus('Running notebook.', true); + const deadlineAt = Date.now() + timeoutMs; let source; let bodyLine = 1; let usedRemoteModules = false; + let markerNonce = ''; + /** @type {ReturnType | undefined} */ + let pendingBuild; try { // The run deadline covers RESOLUTION too — a remote import graph hits the // network (fetchRemote), so a tarpit CDN must not hang the eval forever // (the worker timer below only starts after the build). /** @type {ReturnType | undefined} */ let buildTimer; - const built = await Promise.race([ - buildWorkerSource(code, { + /** @type {(() => void) | undefined} */ + let onBuildAbort; + const abortBuild = new Promise((_resolve, reject) => { + if (!signal) return; + onBuildAbort = () => { + const deadline = signal?.reason === 'deadline'; + const error = new Error(deadline ? 'Notebook import resolution timed out' : 'Notebook run stopped'); + error.name = deadline ? 'TimeoutError' : 'AbortError'; + reject(error); + }; + if (signal.aborted) onBuildAbort(); + else signal.addEventListener('abort', onBuildAbort, { once: true }); + }); + setRunStatus('Resolving notebook imports.', true); + pendingBuild = buildWorkerSource(code, { entryPath, notebookId, - resolverDeps: makeResolverDeps(() => { usedRemoteModules = true; }), - }), + resolverDeps: makeResolverDeps( + () => { usedRemoteModules = true; }, signal, deadlineAt, + ), + }); + const built = await Promise.race([ + pendingBuild, /** @type {Promise} */ (new Promise((_resolve, reject) => { buildTimer = setTimeout( - () => reject(new Error(`import resolution timed out after ${timeoutMs}ms`)), timeoutMs); + () => reject(new Error(`import resolution timed out after ${timeoutMs}ms`)), + Math.max(0, deadlineAt - Date.now())); })), - ]).finally(() => clearTimeout(buildTimer)); + abortBuild, + ]).finally(() => { + clearTimeout(buildTimer); + if (onBuildAbort) signal?.removeEventListener('abort', onBuildAbort); + }); source = built.source; bodyLine = built.bodyLine; entryCache = built.cache; usedRemoteModules ||= built.usedRemoteModules; + if (/** @type {string} */ (NOTEBOOK_MODULE_LOADER) === 'single-bundle') { + setRunStatus('Linking notebook imports.', true); + const linked = /** @type {{ source: string, markerNonce: string }} */ (await linkWorkerSource( + source, entryCache, signal, deadlineAt, bodyLine, + )); + source = linked.source; + markerNonce = linked.markerNonce; + } if (usedRemoteModules) { setRunStatus('Running remote code with restricted access.', true); appendLine('log-info', `[security] ${REMOTE_MODULE_CAPABILITY_BLOCKED_MESSAGE}`); } if (entryCache.size > 0) appendLine('log-info', `[import] ${entryCache.size} module(s) resolved`); } catch (e) { + pendingBuild?.then((built) => { + for (const entry of built.cache.values()) URL.revokeObjectURL(entry.blobUrl); + }).catch(() => {}); + if (/** @type {{ name?: string }} */ (e)?.name === 'AbortError') { + clearModuleCache(); + setRunStatus('Notebook run stopped.', false); + return stoppedResult(); + } const msg = /** @type {{ message?: string }} */ (e)?.message ?? String(e); - const errorCode = /** @type {{ code?: string }} */ (e)?.code; + const errorCode = /** @type {{ name?: string, code?: string }} */ (e)?.name === 'TimeoutError' + ? 'notebook_run_timeout' + : /** @type {{ code?: string }} */ (e)?.code; const phase = errorCode === MODULE_SYNTAX_ERROR_CODE ? 'syntax check' : 'import resolution'; appendLine('log-error', `${phase} failed: ${msg}`); const policyMessage = moduleImportPolicyMessage(errorCode); if (usedRemoteModules) appendLine('log-info', `[security] ${REMOTE_MODULE_CAPABILITY_BLOCKED_MESSAGE}`); - setRunStatus(policyMessage ?? (usedRemoteModules ? 'Restricted remote code failed.' : 'Notebook run failed.'), false); + setRunStatus(errorCode === 'notebook_run_timeout' + ? 'Notebook run timed out.' + : policyMessage ?? (usedRemoteModules ? 'Restricted remote code failed.' : 'Notebook run failed.'), false); return { value: undefined, consoleOutput: [], durationMs: 0, error: `${phase} failed: ${msg}`, @@ -264,7 +465,11 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { const blob = new Blob([source], { type: 'application/javascript' }); const url = URL.createObjectURL(blob); let worker; - try { worker = new Worker(url, { type: 'module' }); } + try { + worker = /** @type {string} */ (NOTEBOOK_MODULE_LOADER) === 'single-bundle' + ? await spawnHostedWorker(source, markerNonce) + : new Worker(url, { type: 'module' }); + } catch (e) { URL.revokeObjectURL(url); clearModuleCache(); @@ -280,12 +485,25 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { appendLine('log-eval', `> ${oneLineCode.replace(/\n/g, '\n ')}`); try { + /** @type {(() => void) | undefined} */ + let workerAbortListener; return await new Promise((resolve) => { + const onAbort = () => { + clearTimeout(timer); + try { worker.terminate(); } catch {} + recordToolboxUse(false); + resolve(signal?.reason === 'deadline' + ? timedOutResult(timeoutMs, usedRemoteModules) + : stoppedResult()); + }; + workerAbortListener = onAbort; const timer = setTimeout(() => { try { worker.terminate(); } catch {} recordToolboxUse(false); - resolve({ value: undefined, consoleOutput: [], durationMs: 0, error: `eval timed out after ${timeoutMs}ms`, usedRemoteModules }); - }, timeoutMs); + resolve(timedOutResult(timeoutMs, usedRemoteModules)); + }, Math.max(0, deadlineAt - Date.now())); + if (signal?.aborted) onAbort(); + else signal?.addEventListener('abort', onAbort, { once: true }); worker.addEventListener('message', async (ev) => { // why any: a worker postMessage payload is type-erased across the @@ -293,6 +511,18 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { /** @type {any} */ const m = ev.data; if (!m || typeof m !== 'object') return; + if (m.type === 'seal-failed') { + clearTimeout(timer); + try { worker.terminate(); } catch {} + recordToolboxUse(false); + appendLine('log-error', `[realm seal failed] ${m.error}`); + resolve({ + value: undefined, consoleOutput: [], durationMs: 0, + error: `realm seal failed: ${m.error}`, errorCode: undefined, + usedRemoteModules, + }); + return; + } if (m.type === 'log') { appendLine(`log-${m.level}`, m.text); return; } if (m.type === 'display') { // peerd.self.display(value) — render rich output mid-run (same path as @@ -439,7 +669,10 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { } // Map stack frames in the entry blob back to notebook.js: so // the pane (and the agent's tool result) point at the user's code. - const error = m.error ? mapWorkerError(m.error, url, bodyLine, entryPath) : null; + const workerUrl = ev.workerUrl ?? url; + const error = m.error + ? mapWorkerError(m.error, workerUrl, bodyLine, entryPath, entryCache) + : null; recordToolboxUse(!error); if (error) appendLine('log-error', error); resolve({ @@ -458,13 +691,16 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { const err = e.error; let detail = err?.stack || err?.message || e.message || ''; if (!detail) detail = 'worker crashed (no detail available)'; - detail = /** @type {string} */ (mapWorkerError(detail, url, bodyLine, entryPath)); + const workerUrl = e.workerUrl ?? url; + detail = /** @type {string} */ ( + mapWorkerError(detail, workerUrl, bodyLine, entryPath, entryCache)); // A SYNTAX error never reaches the entry's catch — it surfaces here // with the blob filename + line. Map it to the user's file too. - const userLine = e.lineno - bodyLine + 1; - const loc = (e.filename === url && userLine >= 1) - ? ` (${entryPath}:${userLine}:${e.colno})` - : (e.filename ? ` (${e.filename}:${e.lineno}:${e.colno})` : ''); + const rawLocation = e.filename ? `${e.filename}:${e.lineno}:${e.colno}` : ''; + const mappedLocation = rawLocation + ? mapWorkerError(rawLocation, workerUrl, bodyLine, entryPath, entryCache) + : ''; + const loc = mappedLocation ? ` (${mappedLocation})` : ''; appendLine('log-error', `[worker crashed] ${detail}${loc}`); // A crash (e.g. a top-level throw in an imported module body) is a // failed run — record it, matching the timeout path and the headless @@ -476,9 +712,15 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { usedRemoteModules, }); }); + }).finally(() => { + if (workerAbortListener) signal?.removeEventListener('abort', workerAbortListener); }).then((result) => { setRunStatus( - moduleImportPolicyMessage(result.errorCode) + result.stopped + ? 'Notebook run stopped.' + : result.errorCode === 'notebook_run_timeout' + ? 'Notebook run timed out.' + : moduleImportPolicyMessage(result.errorCode) ?? (usedRemoteModules ? (result.error ? 'Restricted remote code failed.' : 'Remote code ran with restricted access.') : (result.error ? 'Notebook run failed.' : 'Notebook run complete.')), @@ -492,12 +734,64 @@ const runEval = async (code, timeoutMs = 30000, entryPath = NOTEBOOK_PATH) => { } }; +/** @type {{ runId: string, controller: AbortController } | null} */ +let activeEval = null; + +/** @param {boolean} running */ +const setRunControl = (running) => { + els.runBtn.disabled = false; + els.runBtn.textContent = running ? 'Stop notebook run ■' : 'Run notebook.js ▶'; + els.runBtn.title = running + ? 'Stop the current Notebook run' + : 'Runs notebook.js (Cmd-Enter / Ctrl-Enter)'; + els.runBtn.setAttribute('aria-label', running ? 'Stop notebook run' : 'Run notebook.js'); +}; + +/** @param {string} runId */ +const reserveRun = (runId) => { + if (activeEval) return null; + const controller = new AbortController(); + activeEval = { runId, controller }; + setRunControl(true); + return controller; +}; + +const busyResult = () => ({ + value: undefined, consoleOutput: [], durationMs: 0, + error: 'Notebook already has a run in progress', errorCode: 'notebook_run_busy', + usedRemoteModules: false, +}); + +/** @param {string} code @param {number} timeoutMs @param {string} entryPath @param {string} runId @param {AbortController} controller */ +const executeReservedRun = async (code, timeoutMs, entryPath, runId, controller) => { + const deadlineTimer = setTimeout(() => controller.abort('deadline'), timeoutMs); + try { return await runEvalInternal(code, timeoutMs, entryPath, controller.signal); } + finally { + clearTimeout(deadlineTimer); + if (activeEval?.runId === runId) activeEval = null; + setRunControl(false); + } +}; + +/** @param {string} code @param {number} timeoutMs @param {string} entryPath @param {string} runId */ +const executeRun = async (code, timeoutMs, entryPath, runId) => { + const controller = reserveRun(runId); + return controller + ? executeReservedRun(code, timeoutMs, entryPath, runId, controller) + : busyResult(); +}; + // --------------------------------------------------------------------------- // Run from editor (Cmd-Enter or button) — always targets notebook.js // regardless of which tab is active. See git log for the rationale. // --------------------------------------------------------------------------- const runFromEditor = async () => { + if (activeEval) { + setRunStatus('Stopping notebook run.', true); + activeEval.controller.abort(); + return; + } await editor.flushSave(); let code; try { code = await editor.opfs.read(NOTEBOOK_PATH); } @@ -507,14 +801,11 @@ const runFromEditor = async () => { '[notebook.js is empty — nothing to run. Switch to the notebook.js tab to write an entry.]'); return; } - els.runBtn.disabled = true; try { - await runEval(code, 30000, NOTEBOOK_PATH); + await executeRun(code, 30000, NOTEBOOK_PATH, crypto.randomUUID()); await editor.refreshTree(); } catch (e) { appendLine('log-error', `run failed: ${/** @type {{ message?: string }} */ (e)?.message ?? String(e)}`); - } finally { - els.runBtn.disabled = false; } }; @@ -551,7 +842,7 @@ const exportNotebook = async () => { // SW → tab dispatch. // --------------------------------------------------------------------------- -const JS_ROUTES = new Set(['js/eval', 'js/write-file', 'js/read-file', 'js/list-files']); +const JS_ROUTES = new Set(['js/eval', 'js/abort', 'js/write-file', 'js/read-file', 'js/list-files']); // why the cast: the polyfill's OnMessageListenerCallback types the return as the // literal `true` (keep the channel open), so it can't model the legitimate @@ -572,17 +863,52 @@ const onNotebookMessage = (msg, _sender, sendResponse) => { try { switch (msg.type) { case 'js/eval': { + const runId = typeof msg.runId === 'string' ? msg.runId : crypto.randomUUID(); + const controller = reserveRun(runId); + if (!controller) { + sendResponse({ ok: true, result: busyResult() }); + return; + } // Mirror the agent's code into notebook.js with a one-shot // backup of whatever the user had there. - if (editor.getActiveFile() !== NOTEBOOK_PATH) { - await editor.switchToFile(NOTEBOOK_PATH); + let result; + const deadlineTimer = setTimeout( + () => controller.abort('deadline'), msg.timeoutMs ?? 30000, + ); + try { + throwIfAborted(controller.signal); + if (editor.getActiveFile() !== NOTEBOOK_PATH) { + await editor.switchToFile(NOTEBOOK_PATH); + throwIfAborted(controller.signal); + } + await editor.replaceActiveWith(msg.code, { backupTo: BEFORE_AGENT_PATH }); + throwIfAborted(controller.signal); + result = await runEvalInternal( + msg.code, msg.timeoutMs ?? 30000, NOTEBOOK_PATH, controller.signal, + ); + } catch (error) { + const name = /** @type {{ name?: string }} */ (error)?.name; + if (name !== 'AbortError' && name !== 'TimeoutError') throw error; + const timedOut = name === 'TimeoutError'; + setRunStatus(timedOut ? 'Notebook run timed out.' : 'Notebook run stopped.', false); + result = timedOut + ? timedOutResult(msg.timeoutMs ?? 30000) + : stoppedResult(); + } finally { + clearTimeout(deadlineTimer); + if (activeEval?.runId === runId) activeEval = null; + setRunControl(false); } - await editor.replaceActiveWith(msg.code, { backupTo: BEFORE_AGENT_PATH }); - const result = await runEval(msg.code, msg.timeoutMs ?? 30000, NOTEBOOK_PATH); await editor.refreshTree(); sendResponse({ ok: true, result }); return; } + case 'js/abort': + if (activeEval && (!msg.runId || activeEval.runId === msg.runId)) { + activeEval.controller.abort(); + sendResponse({ ok: true, stopped: true }); + } else sendResponse({ ok: true, stopped: false }); + return; case 'js/write-file': await editor.opfs.write(msg.path, msg.content); await editor.refreshTree(); diff --git a/extension/engine-tabs/notebook-tab/realm-seal.js b/extension/engine-tabs/notebook-tab/realm-seal.js index 2d2f2cb2..bf4bf79c 100644 --- a/extension/engine-tabs/notebook-tab/realm-seal.js +++ b/extension/engine-tabs/notebook-tab/realm-seal.js @@ -2,10 +2,10 @@ // realm-seal.js — side-effecting entry for the Notebook realm seal. // // The worker source assembled in notebook-tab.js emits this module's absolute -// URL as the entry's FIRST static import. ES module graphs evaluate -// depth-first in declaration order, so this body — and therefore the -// whole seal — runs BEFORE any agent-authored module's top-level code, -// no matter what the agent imports. Do not add imports above +// URL as the entry's FIRST static import. Chrome evaluates that module graph +// directly. Firefox's linker preserves the same order in one strict script. +// Either way, this body and therefore the whole seal runs BEFORE any +// agent-authored module's top-level code, no matter what the agent imports. Do not add imports above // notebook-neutralizers.js or code before applyRealmSeal(): anything // earlier widens the pre-seal window. // @@ -16,4 +16,17 @@ import { applyRealmSeal } from './notebook-neutralizers.js'; -applyRealmSeal(globalThis); +try { + applyRealmSeal(globalThis); +} catch (error) { + // why report before rethrow: Firefox strips detail from Worker error + // events. This trusted pre-user-code message keeps a seal regression + // actionable without letting the run continue in an unsealed realm. + postMessage({ + type: 'seal-failed', + error: /** @type {{ stack?: string, message?: string }} */ (error)?.stack + || /** @type {{ message?: string }} */ (error)?.message + || String(error), + }); + throw error; +} diff --git a/extension/engine-tabs/notebook-tab/worker-host.html b/extension/engine-tabs/notebook-tab/worker-host.html new file mode 100644 index 00000000..0b75c032 --- /dev/null +++ b/extension/engine-tabs/notebook-tab/worker-host.html @@ -0,0 +1,124 @@ + + + + + + + + + + + diff --git a/extension/engine-tabs/notebook-tab/worker-source.js b/extension/engine-tabs/notebook-tab/worker-source.js index 1ab04746..d6b24b11 100644 --- a/extension/engine-tabs/notebook-tab/worker-source.js +++ b/extension/engine-tabs/notebook-tab/worker-source.js @@ -2,7 +2,7 @@ // notebook-tab/worker-source.js — builds the sealed Notebook worker's source. // // SECURITY-CRITICAL + host-agnostic. This is the ONE place the worker realm is -// assembled: the realm seal as the FIRST import, the peerd.* capability surface, +// assembled: the realm seal as the FIRST graph edge, the peerd.* capability surface, // the postMessage bridges (fetch / opfs / actor / display), and the entry // IIFE. BOTH hosts use it — the visible Notebook tab (notebook-tab.js) and the // headless offscreen job runner (offscreen/job-runner.js) — so the seal + @@ -20,12 +20,11 @@ import { remoteModuleCapabilityBlockedMessage, } from '/peerd-engine/index.js'; -// why absolute URLs: the worker entry is a blob; its FIRST static import must be -// the realm seal (ES module graphs evaluate depth-first in declaration order, so -// this guarantees the seal runs before any agent module body). peerd:std loads -// AFTER the seal and is pure. Both resolve against import.meta.url so they work -// on the extension origin AND the http origin the in-browser harness serves from. -const SEAL_MODULE_URL = new URL('./realm-seal.js', import.meta.url).href; +// why absolute URLs: Chrome loads this graph natively. Firefox's package-selected +// linker consumes the same URLs as trusted virtual entries and emits the seal +// body before any agent module body. peerd:std loads after the seal and is pure. +// The URLs work on the extension origin and the HTTP in-browser harness. +export const SEAL_MODULE_URL = new URL('./realm-seal.js', import.meta.url).href; const STD_MODULE_URL = new URL('./notebook-std.js', import.meta.url).href; const WASI_MODULE_URL = new URL('./notebook-wasi.js', import.meta.url).href; @@ -499,28 +498,39 @@ __PEERD_BODY__})() /** * Map a worker error (a stack whose frames point into the entry blob URL) back * to user-code coordinates: `blob:…::` → `::`. - * Frames outside the body (the injected preamble) and other modules' blob URLs - * are left untouched. Pure — shared by the Notebook tab and the headless + * Frames outside the body (the injected preamble) are left untouched. Resolved + * child-module blob URLs are mapped to their source names when the caller + * supplies the graph cache. This pure helper is shared by the Notebook tab and the headless * job runner so both surfaces report the same mapped location. * * @param {string | null | undefined} raw * @param {string} blobUrl the entry worker's own blob URL * @param {number} bodyLine from buildWorkerSource * @param {string} [entryPath] + * @param {Map} [moduleCache] * @returns {string | null | undefined} */ -export const mapWorkerError = (raw, blobUrl, bodyLine, entryPath = 'notebook.js') => { +export const mapWorkerError = ( + raw, blobUrl, bodyLine, entryPath = 'notebook.js', moduleCache, +) => { if (typeof raw !== 'string' || !raw || !blobUrl) return raw; const parts = raw.split(`${blobUrl}:`); - if (parts.length === 1) return raw; - let out = parts[0]; - for (let i = 1; i < parts.length; i += 1) { - const seg = parts[i]; - const m = /^(\d+):(\d+)/.exec(seg); - const userLine = m ? Number(m[1]) - bodyLine + 1 : 0; - out += (m && userLine >= 1) - ? `${entryPath}:${userLine}:${m[2]}${seg.slice(m[0].length)}` - : `${blobUrl}:${seg}`; + let out = raw; + if (parts.length > 1) { + out = parts[0]; + for (let i = 1; i < parts.length; i += 1) { + const seg = parts[i]; + const m = /^(\d+):(\d+)/.exec(seg); + const userLine = m ? Number(m[1]) - bodyLine + 1 : 0; + out += (m && userLine >= 1) + ? `${entryPath}:${userLine}:${m[2]}${seg.slice(m[0].length)}` + : `${blobUrl}:${seg}`; + } + } + for (const [path, entry] of moduleCache ?? []) { + if (!entry.blobUrl || entry.blobUrl === blobUrl) continue; + const sourceName = /^(?:https?:|peerd:|\/)/.test(path) ? path : `./${path}`; + out = out.split(`${entry.blobUrl}:`).join(`${sourceName}:`); } return out; }; diff --git a/extension/manifest.json b/extension/manifest.json index 77802e6c..6f6ebdd3 100644 --- a/extension/manifest.json +++ b/extension/manifest.json @@ -39,7 +39,8 @@ }, "sandbox": { "pages": [ - "engine-tabs/app-tab/runner.html" + "engine-tabs/app-tab/runner.html", + "engine-tabs/notebook-tab/worker-host.html" ] }, "cross_origin_embedder_policy": { diff --git a/extension/peerd-engine/errors.js b/extension/peerd-engine/errors.js index 9eb3f093..e7b31369 100644 --- a/extension/peerd-engine/errors.js +++ b/extension/peerd-engine/errors.js @@ -108,6 +108,9 @@ export const UNSUPPORTED_NATIVE_MODULE_IMPORT_MESSAGE = /** Stable cross-realm code for parser failures before worker creation. */ export const MODULE_SYNTAX_ERROR_CODE = 'module_syntax_error'; +/** Stable cross-realm code for a host-side static graph linker failure. */ +export const MODULE_LINK_ERROR_CODE = 'module_link_failed'; + /** Stable code and guidance for a capability denied to a remote-module run. */ export const REMOTE_MODULE_CAPABILITY_BLOCKED_CODE = 'remote_module_capability_blocked'; /** Stable status for a remote graph running under the compute-only profile. */ @@ -168,6 +171,18 @@ export class ModuleSyntaxError extends TypedError { } } +/** + * A fully resolved static graph could not be linked into one worker entry. + * This is a loader failure, not an error in the executing Notebook realm. + */ +export class ModuleLinkError extends TypedError { + /** @param {string} detail */ + constructor(detail) { + super(`cannot link Notebook module graph: ${detail}`); + this.code = MODULE_LINK_ERROR_CODE; + } +} + /** * A remote import refused BEFORE any fetch. The default reason is the * no-network lane (no `fetchRemote` injected — page_code / a2a / site-client); diff --git a/extension/peerd-engine/index.js b/extension/peerd-engine/index.js index 0bddfc38..e3afbb26 100644 --- a/extension/peerd-engine/index.js +++ b/extension/peerd-engine/index.js @@ -43,6 +43,7 @@ export { // resolver recognizes; hosts use it to spot toolbox entries in a module cache. TOOLBOX_SPECIFIER_PREFIX, } from './module-resolver.js'; +export { linkSingleModuleWorker, linkSingleModuleWorkerDetailed } from './single-module-linker.js'; // --- Editor (CodeMirror + file tree + OPFS, used by Notebook & App tabs) --- export { createEditor } from './editor.js'; @@ -73,6 +74,7 @@ export { UNSUPPORTED_NATIVE_MODULE_IMPORT_CODE, UNSUPPORTED_NATIVE_MODULE_IMPORT_MESSAGE, MODULE_SYNTAX_ERROR_CODE, + MODULE_LINK_ERROR_CODE, REMOTE_MODULE_CAPABILITY_BLOCKED_CODE, REMOTE_MODULE_RESTRICTED_CODE, REMOTE_MODULE_CAPABILITY_BLOCKED_MESSAGE, @@ -82,6 +84,7 @@ export { RemoteModuleImportsUnavailableError, UnsupportedNativeModuleImportError, ModuleSyntaxError, + ModuleLinkError, RemoteImportBlockedError, RemoteModuleCapError, RemoteModuleIntegrityError, diff --git a/extension/peerd-engine/module-resolver.js b/extension/peerd-engine/module-resolver.js index 389e2bb6..3a96134e 100644 --- a/extension/peerd-engine/module-resolver.js +++ b/extension/peerd-engine/module-resolver.js @@ -18,8 +18,9 @@ // Remote (https:) specifiers do NOT ride the worker's native loader: their // source is fetched HOST-SIDE via the injected `fetchRemote` (the host's // audited sw/web-fetch relay — denylist + SSRF + audit), recursively -// transformed with the module's own URL as the base, and re-blobbed exactly -// like a local file — so no third-party byte ever bypasses peerd-egress. +// transformed with the module's own URL as the base. Chrome receives generated +// module URLs. Firefox's host linker consumes the same resolved cache and emits +// one script, so no third-party byte ever bypasses peerd-egress. // Bare specifiers (`lodash`) still pass through untouched and fail in the // worker's loader: a script wanting a library names a full URL and owns // that choice, or the dependency gets vendored. diff --git a/extension/peerd-engine/single-module-linker.js b/extension/peerd-engine/single-module-linker.js new file mode 100644 index 00000000..7890388c --- /dev/null +++ b/extension/peerd-engine/single-module-linker.js @@ -0,0 +1,172 @@ +// @ts-check +// Links a resolved Notebook graph into one module Worker entry. +// +// Firefox extension Workers can import packaged modules, but not generated +// child module URLs. The normal resolver remains the policy and IO boundary. +// This linker only sees the already-resolved in-memory sources and emits one +// root module. It has no filesystem or network fallback. + +import { ModuleLinkError } from './errors.js'; +import { inspectModuleLoads } from './module-import-policy.js'; + +const ENTRY_ID = '\0peerd:notebook-entry'; + +/** + * @param {LinkerInput} input + */ +const loadRollup = async (input) => { + // why lazy: the engine index is shared by every execution surface. Only + // Firefox Notebooks should pay the parse and WASM startup cost of the linker. + const rollupUrl = new URL('../vendor/rollup/rollup.browser.js', import.meta.url).href; + const { rollup } = await import(rollupUrl); + return rollup(input); +}; + +/** + * @typedef {{ + * input: string, + * treeshake: boolean, + * plugins: Array<{ + * name: string, + * resolveId: (source: string, importer?: string) => string | { id: string, external: true }, + * load: (id: string) => string | Promise, + * transform?: (code: string, id: string) => { code: string, map: null } | null, + * resolveImportMeta?: (property: string | null, context: { moduleId: string }) => string | null, + * }>, + * }} LinkerInput + */ + +/** + * @param {string} source complete worker entry source + * @param {Map} cache resolved graph + * @param {readonly string[]} packagedEntryUrls exact packaged module URLs; seal first + * @param {(input: LinkerInput) => Promise<{ generate: (options: object) => Promise<{ output: Array }>, close: () => Promise }>} [rollupImpl] + * @param {(url: string) => Promise} [readPackagedModule] + * @param {number} [entryBodyLine] + * @returns {Promise<{ source: string, markerNonce: string }>} + */ +export const linkSingleModuleWorkerDetailed = async ( + source, cache, packagedEntryUrls, rollupImpl = /** @type {any} */ (loadRollup), + readPackagedModule = async (url) => { + // why bare fetch is safe here: `url` is either an exact trusted entry or a + // same-extension relative dependency admitted by the virtual loader. User + // and remote specifiers never reach this branch; the response is packaged + // extension code, not egress. + // eslint-disable-next-line no-restricted-globals + const response = await fetch(url); + if (!response.ok) throw new ModuleLinkError(`cannot read packaged module '${url}'`); + return response.text(); + }, entryBodyLine, +) => { + const sealUrl = packagedEntryUrls[0]; + if (!sealUrl) throw new ModuleLinkError('the realm seal URL is missing'); + const packagedEntries = new Set(packagedEntryUrls); + const packagedRoot = new URL('/', sealUrl).href; + const markerNonce = crypto.randomUUID(); + /** + * @param {'module' | 'body'} kind + * @param {string} name + */ + const marker = (kind, name) => + `/*__peerd_module:${markerNonce}:${kind}:${encodeURIComponent(name)}__*/`; + const sources = new Map([[ENTRY_ID, source]]); + const sourceNames = new Map([[ENTRY_ID, 'notebook.js']]); + for (const [path, entry] of cache) { + if (sources.has(entry.blobUrl)) { + throw new ModuleLinkError(`duplicate generated module URL for ${path}`); + } + sources.set(entry.blobUrl, entry.source); + sourceNames.set(entry.blobUrl, path.startsWith('http') ? path : `./${path}`); + } + + let bundle; + try { + bundle = await rollupImpl({ + input: ENTRY_ID, + // why false: provenance is a security input. An apparently unused remote + // edge still makes the whole run compute-only and must not disappear as a + // side effect of optimization. + treeshake: false, + plugins: [{ + name: 'peerd-notebook-virtual-graph', + resolveId: (specifier, importer) => { + if (sources.has(specifier)) return specifier; + if (packagedEntries.has(specifier)) return specifier; + if (importer?.startsWith(packagedRoot)) { + const resolved = new URL(specifier, importer).href; + if (resolved.startsWith(packagedRoot)) return resolved; + } + throw new ModuleLinkError(`unresolved static import '${specifier}'`); + }, + load: async (id) => { + const loaded = sources.get(id); + if (loaded !== undefined) return loaded; + if (id.startsWith(packagedRoot)) { + sourceNames.set(id, new URL(id).pathname); + return readPackagedModule(id); + } + throw new ModuleLinkError(`module '${id}' is outside the resolved graph`); + }, + transform: (code, id) => { + const name = sourceNames.get(id); + if (!name) return null; + let marked = `${marker('module', name)}\n${code}`; + const bodyLine = Number.isInteger(entryBodyLine) ? Number(entryBodyLine) : null; + if (id === ENTRY_ID && bodyLine !== null && bodyLine > 0) { + const lines = marked.split('\n'); + lines.splice(bodyLine, 0, marker('body', name)); + marked = lines.join('\n'); + } + return { code: marked, map: null }; + }, + resolveImportMeta: (property, { moduleId }) => { + const url = sourceNames.get(moduleId) ?? 'notebook.js'; + if (property === 'url') return JSON.stringify(url); + if (property === null) return `Object.freeze({ url: ${JSON.stringify(url)} })`; + return null; + }, + }], + }); + const generated = await bundle.generate({ format: 'es', sourcemap: false }); + const chunks = generated.output.filter((item) => item.type === 'chunk'); + if (chunks.length !== 1) throw new ModuleLinkError(`linker emitted ${chunks.length} worker chunks`); + const linked = String(chunks[0].code); + const loads = inspectModuleLoads(linked); + if (loads.length > 0) { + throw new ModuleLinkError('the linked worker retained a child module edge'); + } + const sealCall = linked.indexOf('applyRealmSeal(globalThis)'); + const workerBody = linked.indexOf('const NOTEBOOK_ID'); + if (sealCall < 0 || workerBody < 0 || sealCall > workerBody) { + throw new ModuleLinkError('the linked worker does not apply the realm seal first'); + } + // The generated graph has no module edges left. Firefox runs it as a blob + // module Worker inside the opaque sandbox host, avoiding the privileged + // extension module-worker loader while preserving top-level ESM syntax. + return { source: `'use strict';\n${linked}`, markerNonce }; + } catch (error) { + if (error instanceof ModuleLinkError) throw error; + let detail = /** @type {{ message?: string }} */ (error)?.message ?? String(error); + // Generated URLs are host plumbing. Keep errors actionable for both the + // person and the model by translating them back to source-facing names. + for (const [id, name] of sourceNames) detail = detail.replaceAll(id, name); + throw new ModuleLinkError(detail); + } finally { + await bundle?.close(); + } +}; + +/** + * Compatibility wrapper for hosts and tests that need only the linked source. + * @param {string} source + * @param {Map} cache + * @param {readonly string[]} packagedEntryUrls + * @param {any} [rollupImpl] + * @param {(url: string) => Promise} [readPackagedModule] + * @param {number} [entryBodyLine] + */ +export const linkSingleModuleWorker = async ( + source, cache, packagedEntryUrls, rollupImpl, readPackagedModule, entryBodyLine, +) => (await linkSingleModuleWorkerDetailed( + source, cache, packagedEntryUrls, rollupImpl, readPackagedModule, entryBodyLine, +)).source; diff --git a/extension/peerd-runtime/tools/defs/js-notebook.js b/extension/peerd-runtime/tools/defs/js-notebook.js index ff300250..5c4e84ab 100644 --- a/extension/peerd-runtime/tools/defs/js-notebook.js +++ b/extension/peerd-runtime/tools/defs/js-notebook.js @@ -29,6 +29,7 @@ const MAX_TIMEOUT_MS = 120_000; * @property {Array<{ level: string, text: string }>} [consoleOutput] * @property {unknown} [value] * @property {boolean} [usedRemoteModules] + * @property {boolean} [stopped] */ /** @type {import('/shared/tool-types.js').Tool} */ @@ -45,8 +46,10 @@ export const jsNotebookTool = { 'npm/native modules. EACH CALL IS A FRESH WORKER — module state does NOT', 'persist; write to OPFS via peerd.self.writeFile and read it back. Inside:', 'peerd.egress.fetch (audited HTTP), peerd.self.readFile/writeFile/listFiles;', - 'literal relative static imports work; dynamic, computed, and attributed', - 'imports do not. No `notebook` arg → the chat\'s', + 'literal relative static imports work across supported packaged browsers.', + 'Literal HTTPS imports work only where the package enables them, always', + 'under compute-only restrictions. Dynamic, computed, and attributed imports', + 'do not. No `notebook` arg → the chat\'s', 'current Notebook. Returns the return value, console output, and any error.', ].join(' '), schema: { @@ -76,13 +79,16 @@ export const jsNotebookTool = { } // why: jsClient / jsRegistry ride the opaque ctx contract (not on the // ToolContext typedef); narrow to the surface this tool touches. - const jsClient = /** @type {{ eval?: (code: string, opts: { timeoutMs: number, sessionId?: string, notebookId?: string }) => Promise } | undefined} */ ( + const jsClient = /** @type {{ eval?: (code: string, opts: { timeoutMs: number, sessionId?: string, notebookId?: string, signal?: AbortSignal }) => Promise } | undefined} */ ( /** @type {any} */ (ctx).jsClient); const jsRegistry = /** @type {{ get: (id: string) => Promise, list: () => Promise>, setDefaultForSession: (sessionId: string, id: string) => Promise } | undefined} */ ( /** @type {any} */ (ctx).jsRegistry); if (!jsClient || typeof jsClient.eval !== 'function') { return { ok: false, error: 'js_not_available' }; } + if (ctx.abortSignal?.aborted) { + return { ok: true, content: '[STOPPED] Notebook run was stopped. Do not retry automatically.' }; + } const timeoutMs = clamp(args.timeoutMs ?? DEFAULT_TIMEOUT_MS, 1000, MAX_TIMEOUT_MS); let targetNotebookId; @@ -110,7 +116,23 @@ export const jsNotebookTool = { timeoutMs, sessionId: ctx.session?.sessionId, notebookId: targetNotebookId, + signal: ctx.abortSignal, }); + if (result.stopped) { + return { ok: true, content: '[STOPPED] Notebook run was stopped. Do not retry automatically.' }; + } + if (result.errorCode === 'notebook_run_busy') { + return { + ok: true, + content: '[BUSY] This Notebook already has a run in progress. The requested code was not run. Do not retry automatically.', + }; + } + if (result.errorCode === 'notebook_run_timeout') { + return { + ok: true, + content: '[TIMEOUT] Notebook run did not finish before its deadline. Reduce the work or increase timeoutMs before retrying. Do not retry the same request automatically.', + }; + } const importPolicyMessage = moduleImportPolicyMessage(result.errorCode); if (importPolicyMessage) { return { diff --git a/extension/shared/channel-config.js b/extension/shared/channel-config.js index ca181de1..5769efdf 100644 --- a/extension/shared/channel-config.js +++ b/extension/shared/channel-config.js @@ -14,6 +14,7 @@ export const CHANNEL = "preview"; export const DWEB_ENABLED = true; export const REMOTE_MODULE_IMPORTS_ENABLED = true; +export const NOTEBOOK_MODULE_LOADER = "blob-graph"; export const CHANNEL_DEFAULTS = Object.freeze({ voiceEnabled: false, diff --git a/extension/vendor/rollup/LICENSE.md b/extension/vendor/rollup/LICENSE.md new file mode 100644 index 00000000..82cd357f --- /dev/null +++ b/extension/vendor/rollup/LICENSE.md @@ -0,0 +1,163 @@ +# Rollup core license +Rollup is released under the MIT license: + +The MIT License (MIT) + +Copyright (c) 2017 [these people](https://github.com/rollup/rollup/graphs/contributors) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +# Licenses of bundled dependencies +The published Rollup artifact additionally contains code with the following licenses: +MIT + +# Bundled dependencies: +## @jridgewell/sourcemap-codec +License: MIT +By: Justin Ridgewell +Repository: git+https://github.com/jridgewell/sourcemaps.git + +> Copyright 2024 Justin Ridgewell +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +> SOFTWARE. + +--------------------------------------- + +## @rollup/pluginutils +License: MIT +By: Rich Harris +Repository: rollup/plugins + +> The MIT License (MIT) +> +> Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. + +--------------------------------------- + +## builtin-modules +License: MIT +By: Sindre Sorhus +Repository: sindresorhus/builtin-modules + +> MIT License +> +> Copyright (c) Sindre Sorhus (https://sindresorhus.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## flru +License: MIT +By: Luke Edwards +Repository: lukeed/flru + +> MIT License +> +> Copyright (c) Luke Edwards (lukeed.com) +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## is-reference +License: MIT +By: Rich Harris +Repository: git+https://github.com/Rich-Harris/is-reference.git + +--------------------------------------- + +## locate-character +License: MIT +By: Rich Harris +Repository: git+https://gitlab.com/Rich-Harris/locate-character.git + +--------------------------------------- + +## magic-string +License: MIT +By: Rich Harris +Repository: git+https://github.com/Rich-Harris/magic-string.git + +> Copyright 2018 Rich Harris +> +> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +--------------------------------------- + +## picomatch +License: MIT +By: Jon Schlinkert +Repository: micromatch/picomatch + +> The MIT License (MIT) +> +> Copyright (c) 2017-present, Jon Schlinkert. +> +> Permission is hereby granted, free of charge, to any person obtaining a copy +> of this software and associated documentation files (the "Software"), to deal +> in the Software without restriction, including without limitation the rights +> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +> copies of the Software, and to permit persons to whom the Software is +> furnished to do so, subject to the following conditions: +> +> The above copyright notice and this permission notice shall be included in +> all copies or substantial portions of the Software. +> +> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +> THE SOFTWARE. diff --git a/extension/vendor/rollup/SOURCE.txt b/extension/vendor/rollup/SOURCE.txt new file mode 100644 index 00000000..b68f4e28 --- /dev/null +++ b/extension/vendor/rollup/SOURCE.txt @@ -0,0 +1,38 @@ +Rollup browser build +==================== + +Upstream: https://github.com/rollup/rollup +Package: https://www.npmjs.com/package/@rollup/browser +Version: 4.62.4 +Source URL: https://registry.npmjs.org/@rollup/browser/-/browser-4.62.4.tgz +License: MIT (see LICENSE.md) + +Why vendored +------------ +Firefox extension module Workers cannot load generated child module URLs. +The Notebook host uses Rollup's browser API with a virtual-only loader to link +an already authorized static graph into one worker entry. This preserves ESM +semantics without eval, a runtime npm dependency, or a build step. + +Files committed +--------------- + rollup.browser.js dist/es/rollup.browser.js from the published package + bindings_wasm_bg.wasm dist/es/bindings_wasm_bg.wasm from the package + LICENSE.md LICENSE.md from the package + +SHA-256 +------- + rollup.browser.js 00c7e102025e8ae11193e9f0f30eb6da31a1fcd34350aae94429833d4f4ea7c0 + bindings_wasm_bg.wasm ef41a5a1868f6268a10ce5b1ca4eb92b47683a2375b86c675badf0112a165796 + LICENSE.md 8d218a9c9950dd89c1aede5956f7ab98b45cc41c876a88bbc5df88174fd8a96f + +Modification +------------ +None. + +Update procedure +---------------- +1. Download the published package for the new version. +2. Copy the three files above without modification. +3. Update the version and hashes above. +4. Run `bun packaging/check-vendor.ts --write`. diff --git a/extension/vendor/rollup/bindings_wasm_bg.wasm b/extension/vendor/rollup/bindings_wasm_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..90fc8c2eb5a176cdd2c42aed8109e58da19f9c22 GIT binary patch literal 565801 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

a04!>wLw+H)6v~|h!wjqO7 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.@5wY}r#Y_|r-<2@eOf@@Nl;4XWYs`IUodF}`9hjDj76(m%RK2TTtv_{+(lGC!B=!p z!Ua0E3aKWi&XV>LVN#@ys|REgGkZCTwNmhS;O0`RXsSnRyR!$p9&j832v=Wr3y5#7 z1q=#NS$NFwWAlS5UY3gYup-QcK)bE5JLb2DEty4)g%;h_v$*an8oLV{5jQ4b6$|EL z#oMPL%eZ%tRo}gm2`pp%J+dfVclj-}DDflp$q&|IT)?ay^w`_hKh?uLr2~z$2&Ouc z9OR+EfoFZKKmfu&P~FGG>Xve#OeCAhrk{=$cn_slnP7RW2ddeW4(VQVg*q`D7>szS zLI;4TO@X2d^CcZ;m?)+>;~)omv0fqqa03bHTWrJ6Wga{|LEOVPJWA9!Fk7UwULdL> z&n*<5CqcpTpX;8UyYF@%<_EOY<6@8+0)~SrdrcQ` z5R@qHK$R9ZcKBiwcQg-4ua(b~_Q-5oD>U1EAkW4wO5Xrt_oB76_R|(WNV5H3dD2rA z5~Wa}q1!rE($^q*dDQYg=owC9F78C^u1#ioO7_BRZXCGAXY@_uL^chc@9Qh40pCoA z3RAT=#T2HMet+DhB^oc>{Lx$4xXT~H*gZW$%CX%`?FJ$Ut2LXg{sqF&A)8b5Zg4tL zo~4O=J=yR!N!{YTxXI>;=+Bz6byVsHk++JQ%(bfO$C~ku{|QdBc_uclq6}O!8dTtZv@nH}x)!>IE4D_0PBN^Ros^b~~{YWODvd6-QCjCkOSc?NMbw5?Zkr69~D_}+;nb`A@y-?i|#ND_%J z<0g!nyi#_D_PW6pnZ;R%9BstHn1`h=IJY?O2$3lV!)&Y}NU5hKyukL_dycyVE-veV(EF|HD#m{QDV6P4_;A_kjLI|3C5aub2BTm$;BUutx zt>nyD)@$5?jLq?8&7#RZ$$F>CkSb8P26W{@*OJF(y(QDi3^@BIR8-&?%Qf*k1r+ei z_+Bk@MaisZzhI{?Wt_^fAvrclc+jOW-|%cR9kQgs`%M+7%N(?0co}K*56lJ#ZW?9# zmNa!?0RoclAg`;InpyEr%(z%WdW%M%aZPBD6-FJ?*=(7DX1lF*;RL2i^mWqs%RVYKOs2k)l0Z6sd4o@uf{CNw zo)M;5ceI)WGpNNI$;ZdV>gi_Dq>&EO6RG9o#+C$Ea4lJQ@C+*eUUnMx!vK}D%$bRD ztg59@ss?D9O$#W|$MjfaH9aR)gaMS8xl64UgbM*N@jV&ss3Xb2VrB9%~t=c>p`*}!+^oWv-)(I?`_7y zj9I`^*M5&*cXqokrd*1m2ME4?rs`vgBxKZVDzi(CY5(Y2N@e%Jh}PnSdx`y8ZT}V{ z2f?1OGw?IkG`Y`Y%pDMz_NBpVhd0V!Naf#hkov=f@v&M>_Pj%y? z^Izgd+(O#iNVY6orC*wlS}H+2W2yP*;bH!J)uVART8pn*Evvz-2%q3N4JP(|_b#4V zV&mg@ctF2c-?72RzGDq;-NR+3YH(TD^OYg&*jBOe@YGlB;fOJAI{J;bBUA#b~f8<7rcFpKb{ zcJmGB@NR#~5K})j9Ul4S&{InyrU;+@^3YSaX$NcE$Xd5`NVxC2Lr?A2`C9cUMG<{t z;eKv6NUFI({Q;lnxF!9Ef6e}G9+>jX=4Dux@3WUwqezJwr%H34ei7{Xmcz&-v+8Yi#(eOzk%j)u+3VSZ*Q zH4z>an;CGC0v5D=r4ugy8kZ&obi-Bj{LJGR4{!aOAqbZo?IB?|0&c%ZjyRbLpGROc z#xAvQpZTe&usJ>zC#(tA?nZTg2OCI+%UF+RWX&bA%WlG4*17QPOPR6Povf_pq<`c^ijQ&joS@0$|XwS1uy4PMG z?OuY*ERbu%kH(3?&7iy2Zy33}%>JZ%esy++8k< z&Z3r#?J76sU>u(%y{B)o5P2|-d?u^w9byGL;29RDS47Vgkf258Zute_E72n)*Speq2u|;=@?QwTv(Opbn?iP#gcDR?G_u7zMfDcC^A!wrXZTNS(R3Isx zW1&JHK_wnIo1t0o(Dy7%=_HbL7#>VqVH*G8IJpn1qeKUIJ8An^d+8}&)>e_@L)z2=(5Ax6~4fgvwF~@EFje1EvdN`ZA5Q}!s53CA5KP_>zlT%o~ zIh%8i!(q13eay4kg(}N=g1-&{b%!voy>VFbje(`IIabT&=d;sS_9h_US(ft+yVL>f z$Q?SOD#o0jSRP?p-o(mYYk7=@RWi9l&E@il|J`4Ct=3XiK3NfZt=z9Gk0@7K{batZ z&>iX=Z+Sz1RhWf@$0%aFX^sQjR2}(w42XGonR5zLnEw&q*t&_VP3`KO*)!R5|uu&XskT&g*(we^iP( z(3Fz~O=f_se8VD${3Wq6DC<3UL)u#FQZHmWu9$?9pKknt7|2*z;=}gl4&RG!lWQNH!8NOJWieu^H=}q zfxP${Fmr9I=+9dz}cG)d*GuErk|4 zH?y(>agU$Ue-=IKPNZE@rkr+1xUVTvfV&kQq5?5_RzeH%BMyaNy{arjh+zvFKp~&{ z7pu%X%`XCV=ohQZe5fR$hF*?HkP7%d+d^itZ3+agR@LE*OjWJyvvYKuM_6(aE_ft? z7Z6PFlQ9F!)xeplR=5vaAFRGJacFCJoD=}7{Hzb}7FwzAJos_4`f<{K%$S+_O&@Z% zdZg=*C`~}Rj-`77>!qYfWF2)F>oB8aH~F-o6|@YmpcaLTCvzXT*4y=NSSO~BPbWNu zx-h``BQhMJx-(^>6%PeBI+=;rvJ=T*279nLl#r{~y4u2Su-s-Q&AJjj038;P>N>MX zLtSTR)Cj|5K=~|HF=ssjGPUx1e9^D$X0!%qXj$1&X=hS-6v|pwFI}{W@GH3hfZ=S5 z_oH9d0nWtDDmIPYBxOv0w30uCR6#&|B-zxDul~aixZV zU@&MY2IVQ8S(F@I+v0M#!quboQcR(x7##UAEycvV=a`8jlMOMjSuw{!tn+cKEFV*1 zEa}m2x{`5aHq3@PhUwPo3w#SB{9mF|Y?&sEd8RV78LQ^P_u9+rHY=${RT#B4y#a)1 z>j01gTY5e@`VvW>LM#&{4iKWG_`8(eYzNCaD@CKD+Ka6nekKjTHnb2FwL{nz@GP~K zI`9Qjq_?c~waICIu$Sdtr@EIQig&%`mL&9wo6uUtYnY?x)4bf4!0jPhl`=VJD+eI6 zfIu?oX{HQ0q_>t$Dv?(G^wn_jW0o8w3vx`jkak%cNy5C+gM*w3KF`mOsircH9{-PB z@Y;SdcLBV?m-PI(@M5Y7Jh$6Dfw+6v^0wQOUIJ69!9MZ!$c%a~I#FRk`$m5GTnL$D z`scn(TXVWEs^`Q)+rH2TABwtYs-P*V3yEe}@U;S;d^3WWCA1z|vR`cRS1wRrdqf}y z?70>fZYjl1On5e#xa=IYSU~uIKF5)O6a)+CkQ)G)VK1c*fLSvW9`Vn;#6E>< z<`*=J;h}h&x-)!|B4%u+Y7EP=4iHGo7>iFT2U75WKC`5xy=Mp@Eud+k78_G9DIEmw zf;SwEs3ystNKl%}=vhIKnX~F;xK*^+*Alys$(M=Z15-GbP~(%x@XRMfd>%?7Bcwaq z3~FPPQ6uk|U!dh*Y*n=z{RCS*)ce)9|xB6}E&(JqZ5tM)bUR$G+sS?ran~3J+nu0@p3J$H)Lk^WmBgbkUg+3(~Ro{Oc_9o!ezi^VHa=Xp( zq+~i*IAIC_ZHXN_bGM^8HNobK0oFKF0-WX#1d=u(?aKw8)O2z9j^@INUipBUu3Xz* zSu=NqnQOX4|D+M?Njgy3;pJVdc)d_lh1nV-u^Vk~ryJbdU$+~Xp!9hm-hHM-G7)g- zXfr(bBdH22Jj0A)6j}Km>e{rdF@>|QoPYpX}`aecTVmpwl_7gb%bd?Qhb1YZ!V4`-sp0WOmC5tRwI)hKv(B`ENg&S)*xu}Gg6$I zA3@U}4gZpyjFIyg2Y1Te(-9Hs=6`95?p0ip>mEJ#LJ><1t7#)kQz>p8)w$V*68@6M z?-|=PI(0H8I0a`VJP~Ii5@h)5{0UAGYvB^3nKUCZBO~?90E^E}34)@B z!K2L_Gmn_0f06l=v-(*%VX?zC=?dd z52tBl<)nn}z0>P`3CWWM{Y>!JEGjX(5xZLjSJ7#T*ss^2I z=CigRY2QxRoNluG_?(*+k8FwJZ!0bI|-XDeVK?>u_%gTHD6RBZH;a z2(k5agY0cqM9pVeW*edk5RT$Og{9$dw&!B%4ox*Xw3%uoc1Q-J&76b4HkIQw-x8@& zQ4J}foy_@xX`uxHyTjDbjW&jGqjo1eogUg%?_Oibt64%?S`#6kp{=NiFts%6Y&_$y z(_;T{#lhheyVs!DNS}KFX9JFw=(OZn1Bqkec?DuE?(%(05z#^dWI8Y^^ptTNq7s%- zJS!y&De7)i&a~mrtd>#3W8@>YO9-)xv^oL414O9Q`ojmK*4fMTvz3 zU_@omf-~8ILAExzH}7{On0PNdiY-VN4uJus1KSRnNs?od2+wUK`8_1tFkPM8mmiz_ zT%TDedt6rl*vmCsXYK6eEVexyR_f`Wqw=*CLu01ba{)@Wknpp)LfXI?y-r)bvfU8X z4Ly4ucqn;zMiB0F(+eDpViIv<*WiY^K{#b6*b(eA*=d@9nd}svQmhM0*LSKsM!H}} zzmP5}9~$anAjJ=;!L?gsc+9=01sy7BvnpE{+K;xdDgo6J2>CO*!44!NKV7DqbwdqK zWI{^dsWD?GESj(xL!~BcjazO}_lA)R*mH=9bZ&pLVfMCz+tmiqeyHpf(D)EIGIOCe zXvJx+rWm82n&dR$pjsq{S!uHg*2JN+OVN^(y445XhoY8M6vdH%blRjSNxRNsirOLM zM~b>hpO+n%pfU`G>$sX}23;YWp(xc{Va|^BnO%oGNyD`l`#yB(g$`3TseS0&hhh0U zpf0jO?G6Gwk{7`ryECw2n0&jlwcZY&+J@*fY#ZE(1iV{NLZ4URtvte~nd};EsD{47 z?uJJ}_)4@7ahwoYV4@BAm?p4#9XmD3hnON$ttgaZvfD(4?%+X%sT{n!bxRK36?)uN z!4^L9Ws6j+Q?66CB#~UaR5mGpu@-Ad!7RV#*z679sdLa|eZ6fFZ?owV`wJ;LX>t|5 z>URJhL)&SyBSRZ>AZM5#lQW`O`#eu>*y ztnMh{q5=d{4Y7jl^0c%gmQTagW_L8T&33!91UX+pgCNgr7&R^`xkgtAZ;Lv6%&25b zWy8eD9vVsm`8L57$V|A+?_fxJ^07!HX2B4KtE?NhVCIJ{m?uR)iunvFa>Kkys_x=n zG$kzsY%zW@u`!huLBr@Ac?CWxM|Ou3v?T^h8qKl|TU~k`z9qi^rPDIDy^H8fW$w;R zjkMA<)y9?R2=ZZ(tmuZ4J5#9W5H21k8btZvHP1BHH@+@aP`>RYn&lCeGJ_DLr@4Sgky-g1m4yic`G= z-d@Ne>~zBxFUp)2pH<>w2Nmk|p5)yAI&s|_)5_)@4(_%sxZ55I?y9dUxJ%4y$>1)$ z8^f3I7emF=YsPe`Vd*hlGsF@^5=`PT-O)ucUB&RQZ6FbIJqbV;_vHOHQl=&;bw(eG z1bh>A#5-J_y+rY0Lc7N$JuZaQ6z|1#RlIkfKySj$sNx9(I{>(MZlqzeE2u%hggCW6 z!KTH-lfaeO8X@zTi`}PGW`Se`>Mr!NSQ)^bUbHO`QUnFRr?1QGTv%r^z<((T56Sb? znlNUA{bc1Jrd0INN|;1@ajKj!m-HN8oM~~vd+MoX-c>3w0vNVPqxFnSpstJ>54w0* zVX(4cJ~BH;;lWDK@Ww|x3|xFi$-tasCzwo1wcJK|GC4_cH-(7_tte1T-OEz z+(9Xf#y%{5*{;8!Nn#-&(}Y3;WGTLh{|L^Q0+uT+>=2L{t16;s1EL=%L|>#RQ@8*{ zk)0H)7pRzEv4h295GdEfv8um*&JajDQtn%E%hfH`bJsv^gc8dKK^OMJgE-19pTx;2jYeyA+Azsc-nj1Q|~;VG<2C z7S_qStQLSVTh%u?fWRKB1WUEL#Ci~riVwD@Cus$_b>evn-5`U4uXa>KZN4ke@5~iA zRKyAEi5-!Md=2UbVoEoFK=ClndM+ZrjyV>*2nboi(D#3@Ud4T5J3%9xO2-W45R%e_H z09*yL)Cn)Lg3REL$vCe!j{ydzBUgao2HjGCK{FYyHmd=zT6Z!38M!{)Z)?atPXrk9 zAX6zq~>_91b_=(;5d>uqExONcUdccNsRB{tRgn!g$(D4Ki{V zO_T|N+>b#YMZAQ%7eJ_~lRJoR@LOB@CfLy+)s61NXq33bs)a_I%Q(&VQduc#H=ocI z$PAZ~Hj@>4-YE1mG+f(MFB?u40gv0JSrmC=2gacq8n9y+GHIw*kk)cPx=0lVJx(a^ zuI4GQ8drn}*yZ8V9&;1z7|%YP1-TR^e>P!Oj*U-?yG?CiGA8`2iXl|Xx_e?Q`}PjO zCnsx>xBNp#lh;hw%8>Z3;x3~t1Y|C&iEP_iS7DZ!lCm*~u9u#X7Ikru3P2ygdO zH9?ZpB`Dc3E+r*43GwPn(9(k*eL&0{#xeL3EoeGq{V_)4iw&M%5-zFMzX!`}wq)_a z8m%Kzq7k_tqmpmKc~QHLqf1h2)r_l%iX2;yaiqn`NCqftCVL6k;4-^}NRD!LV5RsD zjFuI=V?a^d9^Ez1zmolNB4V#b=1buftYJm_5NgbVXBZn)4pA=nU4m*QB5|&5;wp_L zE^Sy-5OhKSjNBo@w2KMm!HDzQJA|K}222Oh@DF%yr6kcxu|Za$f9t_1&Z33Vz>!O2 zjL70y$FxC3fnWk4k$?IH9C;VTvTw*983cKc=7z_3siq|fd;&KlfQi6|JMWU$rXak9 zu(fbv>qJ^-qFD>>t`Yq$AAo?-Mb-Wz>6)@r!@*s*I_mr#5H5vE%v5T36f?ps2vux3 zfT=maiRm&k6$hl@L1W)%oCd?5rb`^j;6dPjBt%Nh3r|&)Vn&h-X9Xy=s=u$jp!-HZ zrbjD*lUqI(O(n(usQ6627-YTvfcOl&FX0V1pCQfWNt80vxUy*gOi3?Vjg2CN#UN=3 zS!S?%*X$fSq@sF)S6JIi0CHM&=}_`N-TltLde@Hk|MlY#Y9+bJm;NL;Y5XQ~#kw)x zFD~ye6|80ypOOT{spfCP|FJa|W6;V=a`TCWG_TcX8N(y2Tor$YJEe_Dh9sG_`=}`e zZGKhz(DI9GfrWiohk7cbHT=3-)WBm1|7U4YMPVmVi0%>A`lb?9kyxDhM9I>f2f~DI z@cdcDe5Oe-i`iwS&0aXoMhd$d?y(lm7CFp|$wkB=cX=<2!!D9R1bIyEUQ@5ougs_Y z>XoP(O|R%#*DL2lQ85IqOq5>}T7`sM<-$}4F322*yC7@Rc0*7J=wA~m!(mE102cp` z5NX8Xkt9*18JnseJFu^7aw}`=q21Hson=49_`?zg+*gK8o~Jwk#-ER-BzY5+1?Nr~ z-6@4jV5G(WP~S(oz$haK<`0JP9_I6+084O@I{-w@>Y7l(tssFwVfa((G!Tio8UzfQ<}9dJ5nM7U zeN3h}lDQm@)G>(Ya=?{!JPBxw=qg!V3HEfdEq}T;nd!SFfGBd0uvjZEGdsDz+$><$ z9cctbP&dNb7I*dx?ug4(KYkt>U&{h5YREze^RCofMp>9j6wJGoLlZRN_Ucj2*8g3uZUEEj>=E5 zC;(OKrKy=qB@yS!^4)F&QZ4xGnyilenY_3CM4BRnDfwHk3G*2x&0prGnkUVQmYn6r zEC0<5fNKnm;J>)jIDLCoj~-DUa{;3c@ys^(R0PU+w`a=46QX!@8m(Y?RRg!q?PpVK#?i7Gp0EPpUgigAW%4O#Gfe6jBblt^HbX`d?_zfl*?CxP)qw6p6F zomq>b4C5^bm2xt;HbN#512e^>%|S5tRzq2eni%PpTo9$JxFCGAgM>&Nge=!kk3@;H zoKUPq3dkdHA4t6At1EzmzyxgL_~@>T!Uu~k<4&Gpp-mBjfqa3p=l>KwDAn1$hBh~+IZ{rcNnHqeGw!jxt@yW zD}t^=lls*{P}}0k9XPCh++Uofu!3!#kfAc{zM3SSj@dTK)FmIw5YRsaNkT>zD8S$X z1#6Sr(*9wlTxq6lxo2$!h^qmIp8!xh+*xnX|YjPIV)oJQUG4N?xy3XTT@csyisH5c}mZBFC#=2THO2vDua%^=&SUOWnO6?6e zt?c$D221`r)|P7?8!sI$?zFS0Q|*v2WLU@GA~tI$Y@I?C3RcT0jiL0bl8g04)D3A# z!09Ed+bjZXT;^6=OM(umgo75XwURi%Jdu@s@O}v95CB_O2^~XFs(Hd9oHA^z8KOkP z)A20bSYkHppfR6~!ctQZxdE4$;UVrTT(-nJySa)ITI=Hc^fFVpg|6q-%I``nco- zy>JxW9iRLTGdMh9OHHZqJ%iGeqU**v4a>*0)^}0V#6rFyG~qPU*0jlbH|QXo8D1nI zOGG8W8;>pq*IAlaov5q9>;|jkLF9sQS<%S3=x)QiL7TJR4C5) zZ6IQXJBLRlGpBUjZ^Kct1}3N^9Ii%ZildDJX~WfQpAb@ zR&D-)s-Az-3;^z$VJYP9Nn^-#uZ|GGAiY16a#7+HRVK*Xu%!YsP-Owy%Ast+rqL-; z?pkgCnO6goLuvU3VLBb0$+5XrX+blco>ay^TO|(Ibc!CVEF~O;dSD*992lc+g`(Wu zYr=^(V-u$nBVV2c8c~%3Z2f>bDp_wlpOs`gsg889o*}@-Ny%Wk`iEbutqgPJ;TzI3 zS5ikL9t%I_;c=9-iZd~dZ1PZ{Br+c?r{N#TRbij>b#ZE#q7f42I?<;5*f@->0wao5 z?%R}%lb_ZN5WyOLF>HIwZPZGbva9vl?-W<#V6i|P!4fbI7VkbCOseqVb}lf1U5$a! zaD+up1J;UF1D7e>2Yhy)>d$g*ZP3OBh1V?KL#Z5NepZGdWyX-Akt~IZ=7^Lrhn>q)aTxbgc`-Zq*|S=mCJ zWR%6zXGrx~o1`31^gJvR%;{NHUTB|xeTYbB6R{RUvcg%q#f#Jeqm&+NoUig5XZEM` z1YRQt2Fa4aZl}D(s%p!x8Sa_3K5@vTj{MAcyqCbzNja%-GP!JKG#c>5r#qQM|>yp2Kb@W8VFY5)4g4? zKsmVFdR2d9BXnApWGHP4SMR<#DIOe~Oa;P7_^zc_}8WC z&CcwzmaDxCA`DT!?`!Dsg`ku7LA>!w_44frQE?XD9>3VSjrCMgC=(hsB&lw^_lt}a zy|IbFY6%c-dp3!3cgHZ~e*)JGX_P#fO%}rXYPykcze90_F!i!PTV?C~@UIJGq;R|K zcSg_W{c~5Ix3Y)qlhxJ{TF~I98b%m{aI)2L0$ZM|=fGL%*#{P|gJ{_Nj+{duqq;e5 zj@3{VYapKoV(qab7zy$>rU2}O9`MeIJGct!aD0>Y#Z!67O6F+vEBH1oFF^h9wlaqj z?@xR4as(P+A=ckEBILt$)ZNq%+HwpRcm{l}`L%+|&06!Ps*a-dRk~sgR>@oBm6fzh zELy`Y-X-%%*32EI5;zT&Pip=gYyQ2?=e)si)gP~XQ-a#!#wsGGK;KbH>wsE{lWglK zEoR;II*eR(VmJc3$FD+ClFydx&o@GtrRtXM(kzBtPX%lA-ieJDXU<;g#hJOmi+HJn z7f+1U`FBt+B%jUH71&p_nQn@{pM$Dkkue7uqT1dnYD0f~hpWXkyB7@A(+4`wF-+%V z^npmZIGNBofjpsxjL8#CJwl3!vVj&)c0>+i{e*|P&+1^QL%?}L(hfGD4D2^2Mnw0S zi?83Yf={%J!;cWTpr02%q#&Ef0n8Z`c2+yACBsYL3bImX-;Gh`sX7Ee;DFcSNt4-} zC}4Ccz=a6WIAv^D8PzlY4ncVD>#g_Vi>M9?H-!sT!i?k}aFd_gPga)crqlVHD9`dg zA(=OxOI@=Tg-yC%r)q67$qN^!s^la#5OAFJ+sD@iRdc#WZnF+VFsKZ4z_hz|5JLA2 zS=*1mi|LoC%EtgI{EUPf3Cnw_2}Z_2KqM@uMkK?eY9DP;>9IdXEyO>$Hmu_;HM{f5 zvfWF|F;NG&LZtCeh(QvvHDWV8MZv+#UL9BG}C_{*~Ad6J-sYRX9I2gIW>+MuFRMT*o6yI50;*!V1GZ~?jT z9KDNTGL>!OSA+Y-bvdTS%lB!^lSsMv>t}d<$-aL9*3|c|U*+W=c;Cfmp5f)+TMF>Y z#9?EbHf)icWF^2xy#K);V^j}LNRVQ_ER7>6?!h|Y8$swWbGD?UXReBC{TRrlU;Fal zwe|Lz9jFO?KK*N78N9a6UaPX%tJfx=C4ktI6x*hejj_b^5X4^{v~ho8jok0v*`V{- z3N=<}<=7=#`P!hB_W2t3!s13mECNOx4t=dnx^Vq3(v$kR3a$As7`=>`tbAqDaxYAr zzOvNst?tq47QQpGp2=R#XYg!iHo}rJWlUbmP~w2fp4QOw?%%f3iJ>A{$nUn^BjA_2 zMVG;}W}I<27@AkL`G5ufEmoJ=+5`!r6gNJhLRDrAU9If_ez2YE2Q5{Ng%6VntVle< z;`LfmpqH~`@HI_vhs;wy(3sp`?rqrjIWZ5yv z3$REs*Xa0m2tA2UaKK)6)#1V?QdPB{z8FgO# zY;1$3flv30Z%Dg{4J#;FCQ!SIB#LhG=Np)mjS&5r7uPCX9uXu1U-757zbzUCER1g^v$$FV zGLppb{Hjbw8}~hFrBSg_q}I~nT~k)dm+$Ulfee-4=DRq^*oGy2smgdJ(il7d(ZE1v z^Z=o%#IxmrPmO8GtVe~2#^4q$#~~J&4(*oU054e4ACTsBFqjIUF-agowfQKVD^(r} z9@4%es_koJHXNanyRc7-%74{?V|*3i=BJ+Lha}}*|3=)cUxc1}(XG<_n9dy5>gJSw zQA@DJvIL#$M>J&!iK@Z)vso;}0=hHSnAhKCd!c_Yp1~}%`8Go=Y1G@SaLVSax5|*B zf~=)-fjqDf`GqFpI30=If-#0)Ub;SPz4Df%cw(x1Tunn}o0tQSt7X&<9f(_PxfH~M zE2P?G3NjeZTu(9doAH|d;M{;OiGRTCGuNF{k;;61(Wxu@X2;k7H-dX%OZa;Kr*8Iw zMBwLpR;-hoZ~E*4BcUh}h<_np7>kNx!tcg>j*wEdF(>YoDH1{9F9=oAsw<^{;E|PiyK=Jv|q37oC1t zJT?y|I0fKQA~i_CZiqDhs>5ALmhKBBHpnHdY8$IEWfsO%+n5)MT~U~jQXwgpV;VQC zNS}J+c0>kCL;Ur#llfKBXI(-}G6VO~L@|6MwjWJUMAV6GAh7Bo zm?uGFawv>+H3WUKF;FU43fIUj)RcO_FIQejY~clIPT0>J3rH}#zKi2vNVd~?`@lxQcE2<(32}^qtxm(L%Re7 zijbklK3(O2m~n!SUOK?3Bb82Q&XCZEu?hECq0HT@-V9k6K(UFA zOLQT^Lu1B@V$W4H%|&(TFdK9xAeV7Whs@mGa8XETHa&SI(8?5DX{w7`04$cCD6Yg} z3=?O2QC^!?K{_G-qRfY45ZXgE*06R4{LhdOx-t-p8_kxWX-Ffy_wof$RNNwi&`5HM zj@@mWDn2xA2Z;LDvEi@X`s-$KGKc=ghwba&VSQc5hkqT{*B1@>jm~9E5iavH`MSTo zG=Jxpa+U=s88G!1SweRA8X0RI8`N?(be_G8C!tS*Yx=}=)s_tRUJb3b=0K$rzXC!| zo~HOE4j^ef671BsqT@khFQpAWG&M=o{VIB`sk~4D6fN@P#d}gD9dPo|_B3HF=m&_P zxR-Q2T`%o)yT8p$&>5#J%Gy3!`-6B$YUhJ&bF3?kvqRhNpRlR;48rflHMI5Qr^X}@ zPCRMb!DafJ;Ku2fYymcgHzt5ZPgpS=@&JbmGLvbtb|fFPi~u0J5$qr<`oz{*pP%#u z+eOTH#3BhLB-Xj$wXh@ajGn#{8DZORC%VUShpERhR8UpcALABV0P{)^Qqg=LRy!Z- zZBD;o-uz%Zo4zQ2V>TOZqujWN2L{3<^w~;Kt!l`~cfryvcxJ4}Tsd>f>>Axfj17<^ z95jj8+?sf<$;&Mo?`@6KR?ZQk>c@7phR3eBP3B5}+73_&Px#l~v`MMy4Hr?EuDaPT z%IQ}iCiF}>y&-)=e;I3S$x4Mq3Ifs=8nXt=Wqo4Mk}C>G>L?joJCt-pwvGbCIMUCc z_1`4qtQ?32$`}MX?y}TuUO4C@c7PK0h||MzUgs5LZ0^d~aAfi`zMs()qSR!TxfrW@ zc}S{q=B1~1 zC4|ulIRYD!kjI%6*P4w>_X;UGi|`{~n19!IOyS^*ucVVj)l7h_dUWsAI*8526hRRi)A{cv*{uJw5h)Ut zr&)r%VgBKp{S-hv#W&TTw$vvBUOv%Xn=lKhIE&7M2Vw=~9fW@ALWZxDl*>wYy`NP) z6FixOp3()nUU`Lk;SX0#+?Jwol8u7+KA4n(J1;vjK zrjs9G&J1;;V0K7*X@yTqGR5Pcn`&ignuw^iBS2S`X@}&A_?{MR&bNTUFu#xU&-?%> z=`aNSQd&&h&$=qxdXW@%{D%6L>(CKg*favj%D}7eI|8<}Rc%nNTtUfa`omGwOQd}H zVAe@0NpXwtOdsifqQ>f#wd1)#0~qK}p`@KyAXz&Uhs`9P5ba}x+9^0B1U{_qyX9OE z6{#0G)V^?0)4vA(15NR_wcZpdACJ(iglFQjo4Se_U=kHK)}KC9^VznEZoNXZPrt>@ zdUM^T;*SR1ax{c@8?wyLEeBF2kUh^#UP^Eox6OR0+vM?q?PKNQmt>z~2Uqf5!A0xX zInT{5V>g;&PQlrIm=s0~Mi|9I^7Bl}ED8uHc#9z0&uhn3Z^^Z3b_QYlT!HCm^P6yE zem&A!z4+Rw9L6f;kU+t4sau|^O;yT0Mcs1Ej?i!^BDJ`jWkH4#R}YfnQL!~cdq2@+ zJ%}X5D2w=fA;<~K&+e%ylX^T!yyDAD0hjlRlb5^9TVA~~2*NCdKvO>ACP(1caA_TZ za<>}7T|DlnkO7A5=EzkTXvpM=vThLHt%CA~_N4fs<%BqAC`QoWjHvGhoeq31aBb&J zRXiop(s(n1`}`W*!JF{HJ3AT|ft<=RF`=Av=hIs1kHD}xhXyf`liBitDZ{s{+U0$S zk#5a!1JOvX<;Ay2XXmCi*(^U>(Ma-Oy^M)(A~U(+X9rnAt4j)S=T6}AXmNE{flX%X zk*y1oh;|GyWyIdIkQBd|TIxqmn*PiE{x}+*pq<8>*KMQOvGDjma5+5u@S&j}n|&S< ze)#46{x}gnfBk-c91lO-wcj5*;f6c*`y_(zZkn-k6OfVtay}4 zr#rH=tzZX*K_oMxV~zmg@I$y3#}IYRzwm6>LPuBV~wlC zb))_elSDe#G0CjUqfDwi0fsIA4Bf6kBo_rDTM9(teku@&^f0HS5r|~M6^PWbW`3%5 zGS@YY7Uth}8$ji=*(@7F-6RG+#z&1CHz-su;j&0g=CpsmT;7T(QG!*!P;aE zeqlZ*D)jS?s|6Jjl4b1_SDJxSTs1)_wias)aHv8-X|cV-ag?GENHVT~%em|RXM0pS z#ax`|)qiP_X_6_^#0Lh8Lg{0+Dg_vageN6y8Irm`? znTpej@Gpnk#L>mwN^{AC6F!M`;YX#OPRn*o#p|-oFd8LzrkQ~WwX-%kMGa^rpW~0M zE~Hu^kn%yi6_!SeJG=5*)+QTm4Mp`kxufUtooa) z$N2xnF`ngPyixlh85UbZ0nf7c5zVW!vwPF>X{+X#*{}XOD3dZEQ%96ViVo+1YL-P{ z%(4h9KPo-#_~bA?p>Ec2A<=4v3;yeoT(C_`F3=8%&|#Sb0TmdvYl1mkn@ERDEVIdo zv~i@UTB*`TgsadO<|2@8{u*~XNpC(whJ`ks8t#5Z2r6dW*s-~d|S z@beCp21NsVs|}E%Rox)_zsejC^>856*hCRA*%#NrYwxB9uE?w1o;;V@F^dwNxB)gi zF)ND`t%<22+K<$Il5&!yG;NqGpoVIuX#HXdZv^2dTMCrRh21+2%P_m=I7OcYR-|f; zh9nBAmk|i|GKWv|GHr{cc^S%Hn;5Z)E1W>OuthyH;Aa)zEZmT44jVJ=9538ShJesy zLK|8d!o&Od5wUPhz#Xy=DnX&Pm;kTV1)Z$U&rM~+J*@fhlv{K~T$ zKSNE9O-|&-J(5$vU^hhhI{8L0c<&R6&~WTcC5q{pd3+&FfO(+`%p3V@)NI83nQ?sz#FEfm`hI;BC3 zLoj6_yz78SqgXE5_KlO@w%`^03+rqE69H11PVXtU0@O8%EN}2>P$c2t1iOC}$$_St z$}>NRY)iC(TPr_I8mvgfiMesf4Fe;`Q&9tmmm-FjJbWgi(3I6Q1pWJLsv=3%TvY2( z)I8_1?5ZoCGpdA`*rAXg>BHFw#_Buo{!|h+3uBrUU550dW+A}S0=DJQ7YAZAl67xMvvF-1vq+mVNe02&mPBKT zIXlLlt+6m8avvcdT!L5AY7#c-lTZPlrZOAI_+F)+IXZA96u|AWIO@h0>Phx%6A zP;;aYx1@d;xIRfUnaGBc-lh41*Kh4|nwVA8*4UzC7pr9HMWV+U6y#m(rEticQ`4-Q+Lv-i#(qHk5rUdxwgcA~bN{zsZV14-rqLee0cu zDgdPQs2il8^3)KAZpFNfXe0dmvx)UW!L-tH5_5)?;Y>nD(7jiNfz5r3ENCjMS6pPfSt{*vkH+pEb0<=cOY z4z>ljr7}3kyLhV#LXm2j!%LQES*8lof-yyYWmtKNot~G};Ih1*=rw>VJ~~E{w`aQy zxtVnT9;7x8Yl4<=G_Oe05epzK6^Cv?b@Cg5u!f7JbP1n4uIB zVhh|qsel{tXp}d>5er?5%RJp((aSYF0zmwvV6{$s*JRlkVBf-blv&S7pY9=Z2|xj2 z5*%zO>aBUeilR(noA#I{^f6!Jm_281bkoRAd>4Wp-`&jSKoZ z_a2!K1kz_?bLWCuxS6}Qa2(S8tv3=YVa8ZtR3wYOKEspdGn{K7rN+n_fe#_Q_-ec7 ztCZ@=ZYa+yw;@3pgcpT;Ao2~Jc$-RikW>(!A*R0|r4eF>FcdJ^Ur!;YCk2A68-2sE z1m^C4rlGaTZ&ja1lZLBBl>mjjJ=ZDXh^oFY=vuAo4n3`(?NIeuJ%iZ8pzC8XHu zXOdE6bYa-caG5$T`7JIasUGP+m%_NoC_x`bok`Uh6K>V{~i7x<$uIlZ=C-uCYgKjM$@dJG=xgVF^8YLO+KfbU1G+Id0y0UIC0g z#5|rW9;M(xZ2ttk^cty{@DRlv$ZnHD)>*h9LmE}N1^qGLHY1=dIiyI9ZzY1x!@LP0 za^y^GVXef$n7OAB#_w=29mh@Xrn~jB8X5-XjEXW1S^@%1aL)*`6@qC7sedMLuX#fg zD$s=lKT3Mc6j)6A1*?*9I&g*HNAbBFIm``xzKm-7=hP})g3FQ`wXFNojxCTt=B$$_ zzG9OhiZqNG9l{u*O3|(jUCrimA-kZ@{gN~`KEVoQs(KUkLax>pA*+}&=(?SGDsH5Z z3qM6<)t05xG`ig#yNW_V>xRuJGEc9iL9^i0vIhYiuxKK^u(2*_c8HN(ag}W_#&F@K z;+>e1(YO;D&tM3x*=*J}qi8h6&&a$mZ-UP^b-a{n%6@rmFU`+A5gXw==p4I+?fI5P zJA|C>?qUmyDvUtb@VUBKE1 zD=e06!f2(3!J2JX(I?bFJ_}?lS7kMI>OQdR!RAU;e4zURwq!Jz9;6hX1SN9qc}cuw zGwh6Mw&qo7mDFdMTzySsk3sXa)`P_?Qb*osBIbd`J*$mRJgl8&3UPS8h9=o=hKo>! zAlq5C55LkH#KaCw!zl_uS$SevgF~%)evd3tdcj2wn2$6TvW@+0rHewN%uobGR=hJ< zj{=n9hsyi`6f%j-b0L!`RVLB5bVW=&NQcE!qurwzh^HIz@ONZ1;?eFEG)LRRmJhCdfsJKreDPMfiTyy3Ec4K(k6oatYG?4|7jtP2tc2Y(%VA;*-UU5f;^OWn zGkoqU5w?YlFxxdzi7%v-0-0P0A|pg11Et|dPXQ>KRJyji*9B=lo6Q;pmFxvXnSCC2 z0oHMm!6#b>EwiK2700K~q5pj2q}Zu_Dm9rHlvfVP=V+8YUD!BU2Fk)?^rV%bOlOwJ zJbee@Ic>eq2&%Xtn}z4_iIO^uR(}|z2=MJG?XYJPJHbLPnUsubuC(U`J8q{df1hci!&2bV3M$ z1n7H-I0#5|5fFKq4iE_MEBLZLJ{yK)AjyPDGBbgoyaba#R8~G0_ zV|~@?euV+JM3d7Hq*n^fS%jMS{Y+DQegARdFXxFf@|!PSxqq-c-_b-F5q^qHrm*Kv zwc6$;?*?N186r>qWY75id#J`KXm_hvTA-EWrb{<< z(kx$OENdhYFz;9w1eI(!W8SC+GctH36=w|cbAB_ZP?Oee2)v#dk7LZi)t9_! zKC>$niM(Rn_8Q#}q|xJFOPzN)DH$T_L3|^ULHzFSYS!2RGZfpqM7tuBgO2S8{(I`> zc6d9T(HOgId(*H60U+V3v8;VXL+MqYxF2?GWJNxa6AaqS z^jswh6uRP?3Y~|?YrJDciw zR*D=QZ|b0rBZK}xY}s(q#50vOP94Yip8V_00eJ-nYN>t*?IS2Qx3K2QzoKsK5N- zN58-3PuF~EvZ4}2RUeh|J#wunhd5$P;VexjkSFQUQ%!Dw@=_@P@kmmsmuiqeNhA9e_; ziy!Mv*}1v!iSJRAIm);g|Kt_s@|jPJ&-~X|bK=_`BT8;EkcL*E@!FavzFH16R3>{= zMH!B+fm`$`-HWiRM>~f!h#$hh0F8lmc){Y=m!!xBjk3GZ6vW2OAGc8*^w*k9X$Ok5 z(IV&)?d1)SqxCjt1RdInC`I^>9{JIA=d;1e-P4})HdI$fOd1>ww!nHh|Afp4Z$$r# z>cPEfoemL#n;&$bc54M-KrkEgwsa>g18XB9@wvK=M7As}%>^UD6dIZ}66qQU#e`_F z6O+nJ%x#Y5246Xho4PED1DrA0oBiCI>4i7b_%t(AH=T(2T6Rh*?O_GXjcS%3bRhOt zcs4yTOi?b2phhPq1A_p=5XmZR9roo$9Y&6D$l)~N1YDb^NZLZ-4i$xH zjR-EHN^nieFeq_SE1BU*Q`Kj*`b2**nM@WE$^}*?bJ?UU#^m|}IV&ZTDqa~?Yo*P- z)XETVrNtBQP8Abh2X#!>Fkq0$QC+q%fFg)9Vi8H)nt5K;U=e70VG>&Rh1h7=8Ey+P z`dGD%lDI{XQePwh+(5y77~!89TNbla5n6#dTTb+HPPnPs2a$~?tt^X+1Bh?5Yd5`B z!p1IY(=odXAS@H;f7s`$>}EO0lIU2pj1Ut*O-Wa=MVhSOHV$4V08L_(soKzK%;`kw z^Y2F9)enh5WZevKDrpI`0LMhq6)vZ`#?1JWxN5SU`sI3MDuwiX2K&>u zv}~uFT4-ewgFriJo`%XYz+IU>P1BOs`M&a zQ}Rej`QaP(@;q!L!>d}4J(>15UBheTAOO-UEI70Bu`oAmI9?pWv_da@#2*tWB6-}GOCHFN0mF|RexhP}|Co&$03JWp%3OA7 zb^QA)8}GmG-tWWro>h6Rf-x1hG1=a*&`)oUol4tAuQ2M0Wf3`L;eWk`&#Yx zxMtlMeOOCD>|ol9n;oh7>3Yy_(6APEQzbZS|>{HvFkWt9GOor2-P#!aQ{hzsc2! zHl4qvdz?0r)J0gN{D5qQD?wuW#yI+Z*wgn9bNb#! zvZm9iMVwVd{LWmmK5{$aI_y(4%Kze^X|Px{N?j3$(aXyur~zNoK#x7fW42ZUgJhki zMvk~XWXxBG+dn|172j84Nx(S93mprc1%t8UpMLy)1}9^}etrf@#2e_Il8A(AvE8aG z8V)541DHG__9;#L;}%OBuVf((K0tw*(D71JHeNAA0JERWeHHlj7FDBAwv*+B|A*o6 zOk-skPLRr}z-ry3Ql~@KF?qh`%iaDg)uwuUzS6@WTou8+1cWqKg(!Zeqk2MK zb(l<%3yZ~|$B#Gqx+{yk?pYR&o-#JHS5B5T)JiDd9s=s|z9~n_=;ksN>2gFQQ6lbbu#w zs}=RhwnjZwo6^bnWTj+TUF$v|A47K5#qMJ$gre4UBiXc=^d7G~)xLrZTGkWSyJo!{ zrMW!Tqke+!)o#X7-3$(^c!jZLCnK%GrV@f7I6=qIjvsTtLsSLzDLdr=jpV*dfOaPQ z`k5rSg$nX$7KsFF~eBqWkzm-Ssk@2W?@wUYSZ~4bydG zk5(Vec^_xkF?WTs%b>BsRF}RcTFwwdB0TPr(+m?sO6t zH;mV_o6+k)%kkwss9Ydvrfi_*_RGeUur0o=!i0c9;d}Hc%8TOPSG2HTq_~<94&29g zXwYT##um|7fqT4){7|9-RtaV%!09xK?B#N6G~2%ap)%1NR}H?M@2}S?Qod%h?e}AP zkIkR^exH177A4WdndautG`vRTOmmZsJf%bw2YGE#KHgB$0^%}>ZBiCN?Up&3GGu(K z#hBi)^!%vL@NG-0RG31UlevMyjC>6LyDY?Sl(+#N+U0xFK4FD3v<1>?iB@gCZVffV zS5xjNYY4xgZ8D-}7<6Ait*{MgyWDzsR`LAJO{ zlZ!ARbd&eETPMfza7z5&+UelOLrir<+9I}#wC*UJx=FE~;Ncob_ONlps-*Fd>Tj(; zp{9{Jc4K6Wr~s_B4s7H+$H*fwuTobR9sR?qo3Qd72xt zWKInQSZZg`1o|WJBjtIl9WCeeLI{~BkRoHeqqDs zzrOlAfBbo{S`lqCpL@qO|9SPZUwQEEi&w8Yb*kz63d!%=^8C{uef)Q;&-1BQ-TRGa zA6fbIr|Xtja}!amwyDn+bECU_xP+R6Fb@jf5`P|{Oa2a=#KpSWQsSd{BX-3&DTL)R zfAhH@lcA+I-rR=v)V-4C;e*|hVT4@~S3H4wi7)IGKo|N}Ev_!++TU3q!K7uiyt~Vt z)!rl$jIP}<2#D{6V)x)J*@i-oTLGG?66E@&9PehFo$TFzD}qN-kD?9il-cyG>QtA% z#p@^XFXJzF+pN*q4;x&{khP`DElLzrab}i4PMj&h zt}|)sLemO>)K9u`$OmSFfo-M58aiBKc=c_x#pVL zEfb07I)QXm?mwzJ1$f6%gwX@EAT2<;B5Pt~I(45g{yYk941J_MX19LY!v1djB(>B+ z2bKG!zOpDpHlTjpm7t=1$TX8AA%1W@%N!dL38u>aS$mlDilIeYj<%aBTFCl02C`;k zl_j>Rw_)ALj%M3|y7XTiAC*T14WtqsG&pJm750HsVxDf2P2>y^+;UU@kR}bOC@Bp( zfe__!^_YxG(^i`jv2rA0M95-cDH~qm_`UfOa8!71D?E4TxgA8LGvX_HjJ|2kBHN|c z{jf^r*7tnhP_L8BWG_G~*}sq#a>3C|K3ypW`5jUTf`19N17o^%Bb+ z_X&Uh^-p*$W<;YJRI*BhapmI-E|*wy$N)gJu()2y~% zkrUGFQ)SzjP_n&#$M2M(efJ+6Bd`}WjkmO^K0kNwC@MlsP65K zr`sIa4*w2x9;<)(4S2dnsV2%W-kj&~dpt!edtlG9{e|^VGTuq zZcrW_l!&KS5ge}#XYzr)y_{*mkHMYL;zQ~!O zwVMtyzMztRee2s(Z4W|{)Y8ac63AI-L|l+oB{J(i8`sf{MGNB#VBs)1Y&annxB>n( zlR(uKV%Xh7a#aomv^W`V0!dk?vS9M0sY##(8@`FOsKN?>!&5o_5~ebs!`~ifY*w>U z0{M7p)~~Sh#<;iD)@2ZySf5CJ;g)<#$_SY(eyF<+df-v@P*FU`k2B2y{D-^MTGnFK zlSBeJQ%7LqBkj!ei& z+Z9UCL0o6<5sjmp;#5I+2GQ1)xx&JGgUz-WBb*68E%w&Z$qa_tJ+^TH(WFFy7jo z)zI>D?_4*H&)VL1{vF@FGZf(q6exll&C6Cehkh+wF?5Ww*+d)5K!%n8X-4#Qa(JdO zP#aoLu%WM#whyL=$x|iZhyqG#Za#|W9Koza&-4Y&F4R+<*)vZNl`6`UhO>)T7j14C z0iXz6H`zQ-&xe41(zzFCEF(~!hkF%v>q+|1On6Z(l=@PMHxXSyOnr*M3b%(AXn)&> z5XL{VokvU(Y@QYhMKS9)%*Bmkii%{3DNq4^yP%pP4UVk+0Q%hcl+CVGDh$*dR%xt} zB8k)Xs1<|YwdDf3yX*Ks`G@Rb(<05-f9WnNIadx*JkP#Jx z1aQ!d4Tu89?Kp7o(JM{I;ya-gT>WU2>s}qTqG}C=?QztKWI)^2z?W4JY|(9Ty&@Pz z2u#@*LeN48ft(;J+Y)Z6fJvjei~j+!B}H0mWNmin+jNTtt*J8==*tK%!u)tpLmmz0 zkl^-cBG(LZq=qNAkPczw24Tk!vTN?<$Z7iTaAeCq@8O4F^=!|Fo#c8nb}s7K9&i;e7R(*465Bv>r%< z_;EaixKm-OmW>T+#zw_aFa(yU=U7=_8@inX`y?2wPT&Q@5g38RLswPX5K0|w0U+wr zKae8{lkIeH3AZIz7>mEl0Ki^mKY;<*bkpTyR_O@BO&`kxHgVGXjd>LBAIbxMlQ|UI z8NWZlS^E%1Y^jgTST*GY?15>TT@oaH3(ID<0v{r{h4mwO*Eukh*S4rIrr&&qDQaR}) zVUn_Q5yyffiFPu^a>I=w@(!7jf|E>YyYMmISu}vNU4#?yxL?75j^hmNs54I)7;yRX z6{^SJKykA3^Ufu&cNsgR=d2m2fCbAX=H39XM_`mrD}3{L$H64>oG*_Lf(1CWO2s9%2?jh_DEaF zinTzU6GuKrm`PI_|4y6wpzJJCUQoDeElP<{(CO!&cDZ4ZU!J2)5BSpMscR)j)UZ?r0ugA`3j zgrnZ*^02l$Frl^YDx#yykPthsDBBRjdrSX3F?85D^EqB`7k9IvMn#YY@5NGfaPP#~yJ83aca45wV+N#(RGU&o& zihE)ORq_~4r;zsA6V`?~j>AL{IGeXH)!fx@euqh!V3F(zJMCdj)r_4Ooo-u|9W@5m zy(tgm@2|+Cc)unO6we$P0(^Y08j6rjWRqc}6&9+~q_f+u8@K8|eW{y*9jrvM`Dyx?= zT|c|rJm~EYfMWgo2UnNz88E$u?iYhTdg@@j6`0wo`6B69giy%v-( z)J-2M%|`ep5r7N+y@qm!MO0={`ux_?Qlj@>$dYJj=@7#(_32WFL~NuLSD-;mFA44Z zH*$$anQ1Wvwnn2gnZ`nr9Q($&?C4IQu@&#@WnO8h^}F;49Lpn19*ONpV*fv%82On! z1Vus-`0z?^cn8{tb|T3@)LEAf-6sze%^G9+DJ9ZIMJ=ecKD`?2WUrSXYLD zFiOe%#_|J9|5WA-63u@zo^tJ_Y|~&k)cf?RJfJ=wE?~`%SQ8&nMxL~^I*C-&0Q9VC zGy01WvQ&tw#gEP0T@B(VJF8ynF=d?A!!NQi%^h#<%>0ea_Qsk3Ww=+2JE1FdyNz8T z#!7co=3}j%EeU;^6_}hYP6dEjl-5|ZzZGy51xs`40*T%5cc(Bg$u`Y$qlD>kHZ-|9LVla%btc+Ca$mVmWQQn1Pe9HNdJ)81>3Dbc*M| z@m(ER^y5s%w-fzdP1P-RyjfyB3z>lqMZj}Yx3lB22IhwqC|D`{g*9bO(1bPcCV@Y` zv(?r%w2)x>4&?NE1Q6Vsse$bc7nxWt<`sc8VMkRA?nY8-VAdO^`1J-hLRn{)i40^P z?x^Xn>!`k1w#~muP{-v^d^ciIiuNAXOz#!@MuC3{N1jNtED43 zCAkzBoOb+BcdaFYLYxx@*8Wg;!Y3gb4BeU6r?5FbWM$ga=w+$V=>ZDqhIXDW=$y{5 zO{){-^hR&xRzaDD1#r{X%sE`np;jU-vC+HbAwdZLi0mE7Y~`eO_a=1gIA#h0!DSxRXsO00 zttj9lQ~pmWoBWct_)B>A$nawwtU|WReusFfBIV17T;(EOGtgDADZ+dpaulKLSbS`o zO&pB2a?(<{V4<;s-S`IcRS^b7VHeu%Hjb58e_Q!=6fpj905@B3&@}EwfEW2EI;S)Hgi?Q}5wI%H;xZ7>=%ACf zOe}?35nUV8>ETr`P9a9e-XMt=twa;#cSKpHaN_aZNQY zNA=SVH?4o5>~dCAVYV-O3v&2bzJ=?K&ya)L!bSY=^Z0Ko-sLPV(v-~~sLFPtzt38U z=Z%eZ?Cqx1s)|w~VS5u^TcA~xR2UD7-7qy^Kck|??flK6+R};}aKyc5dXqC-hoxz2 z5#zoQ02A68tVq^;5m~xjEy^7pk6S!(HRkr0XSq&F-SLx|cGqfNbvRv*-X;S&dcE2; z-e5AW19rW{u^G(ss?{EVh98<#5MLc-+8)^Fj|!$6`Pj+XJiy^r8@;-Sq~C2y8vhNp z8RNE28bY}})c5g9hz1vDd1T}JUn_E2bFLOUr8)NMkhFgHw5q7~_Lc~rLz-)3Y8I4J zz#Y`=6WXHYB|TD)j*Hsl>{p7ZuC8p8YW=oRkJ=%3=#$c4ZG{Sd!H;Nw1sHXsw`Y`R zyjh?!PGDneWov-X`WCdVK|PO}?kYVluGhthmeXf!lXtNXTJ%kq-q+MMl>RQobiCjjF?fpEfyrj~ljlYe0!B z2$?8+oX146{6fWYq`8b7rCD^)DWmx$aBc_`M;goBK>2Cjdg^A^(E9Nsoz+>H;byjK zAq|*5bcAcVuz!4P?Kp@oL55bHGYId+^q?4i(BmX~Ki2eKox7O+Yfa(%o6*%IAbtzoj3X%n4NF|UxuC_v`FR%swDQQ@zdCo$b?J$D?)f5mu1 zH6#I2564=DcFu$%ASguldc?j?Wv6W}HbzkmCNO$$JF`ft35_H#m87>Sc`%L6Z6Mg< zMXpr7-4*wr9S$-?%A9H$b*X|~f361erfJLX_S^o*s%^w_NoT2oO^<+`EePElY zE0l`4cp=rgwT&p(078K}+T-oM-XgpC^wICTiUFD;n5FIGD#}1)&5Zeuh)e^Mjd_f9 zjWDu0)`u4Ux##U!_{$o!7yz>HlTGh`s4$3pyvu$684XM1x4F%Qw`#JCexIJD{8KcO zwyf}}_VMYz>fiI}&ym$MJ~!ZFjLyQ@@&i5H-e+NYvYQE{o30+y{^j__9*3eZy+X)7 zL=is8M&b3bVv^g0{LaER8x_%8h`2)EScGGF>6psle~TK-wNAQOahAxJv`*Q$lKf|z z1WeOsV|iizv)hyp(XC(#M!-Sf%DNSVj2yDT3)6<1&->Y#70{;?Ex zm~DyrL@jV^vJEzgC8#kR4EUo#L^s=fE^f(*@EUX9*%9?M{v}a&dk|Lmvy}^%O@(Z1 zH@%@2_j~N#7Q5qyNdZ%f#s(p4xx<9>Deksm0394x6n-tf64$rKvL$)4_y= z@IB5$!L7{`AcL8Wv}H`7+9_NGvIdsbSiw&3YgpE%=_{Ql3Nt-b0Peki5T*yny>F@= zCMh!_TWa?ba0n>Ql8pynMyPD9mh77lTtFtEIQXDy&aYt>hEt7BW?AdxpAS{F1R|8t zFa)%(KYv5Hc|cpV%@XTNtx=n8+_JScEC*W2mthEWmN(GarBNo7YzHr$i+-_7YDIg; zEIw&tOqv45n1@b6NeI=T^jpsa-8Se~sX#4AxUqHIo8|^dry50Y$h;XkOe!px2r5;# zB4uX8N6ci=2IS}>rd@N~GB**q9lvbqSOznrR-n+y%=LCNIAVR!c1%xGw3ZHl&$Q1Z z2OI`JG9vvn+3+#N6lq0FNU}C{_oUoiDF-aTv0^3^cz^%Qq?x_K`c*O5v8t&>G-!>X zii zjny;wh**~uV3lZ*)+eh3-JVLIhe01r5;)=@6omTNQ9(;i1!&{_ne!dgA7Yh-l{uin z-ZSZlFT+;3)mVTZ6ezirzQA$8m8OVym5LEBHm4vWPoW-2HgXOtF%f-D{A1YbLZ5*f zccgQ&*YKAutz+zxkl+vs!;W3aCQlL(WQm(q-0vRB*TanWCRCz+D zfUXw1A3fXd-j-~dL2y6WP$82W)RGwggbu`m3~w;-sZRVXV|o0d8|W2Y!3XhkjqvZK z1^8PdtO^$l!fh11lv z-db;EaABaA-;h$;x`;*CHcYjzbLFOVe;=GI{3K7hm|>pMUq0d$$Iwpb&L@0HqYk2<`+HhAc?{tz7c*L&t2j376P( zE5UsN4r@YE(97DS6w5z~ZB4LSms&y61Q1EUsCR1MUm+hTL()0S;F`P;-dJs z+Da$q_gl?8Qm*gY2FZwpGmGd*COG&_1^^1>XP*Q~SJDnYX{$tiK*ox?A z7z;aLs4?0Gqi0Hh7;0t){yl9n;*iK@hzRV451^{aArdVP&!H$6qv`*(%LA|X#nJE0!L~e|y zCx#FrU-rUAcU?1cYp}A>e=fp0N?nbmnKm!F!KG0`0DgV4tTrmins4|DLzw0O5HCXZ(t1n$)egp1TV|LjQg?F(ZrDRt zAc6RgENG~yc6Kv}iB;CV!==D7d1iR&xUx}Zo4s=-*$D!uV_c%Dmy(^VB-L9DpK6IW zNOq1lv=gL@6QbU9d3qg7bUG#1uv>8k%s4YbY3O!*kg&~CGoBG&u9t0g;T_Mk$v|x~ zd4p*6WN{wXlM@iAF3$Iz^f+cx*c1Sx=J7n3RPJ?R@zIPJk2$+NN{;2MSP*D=laWK? ztP8^A$BiV@#|JI7&(p?35@)I)xY9kPV(1%@g~-@C)+`Gh5HMcy<3hYs$>oK`?{0NN zPQs`+82_Tv#-G=a5C?v(#dNF&zRq+(?CD0#3&c$IO)XTU;en`w<7;|sEZeg;6vad){w<18J!*JwI!p zAxX>NOe{v{wfi(`GK~RV|mG+pAK{!Re0@(h}x=niS$qCVb!(#Xg0%I%riv9pJZa}Nb-OTko1XL^-20? z-PV1QpGnm9E1%<`Gi^_AzKzd*X?s<)lN1P>Kq96NClXLM{)~?%Hh{vmWlUIVpBs-({NY^NV(n4sjoWvV3TukO|@DQj^-Qcso>MkB&&w}mAJ9+-FB9Q%MJ(_M&%*R|3 zAwONkbG!w%;y`IM=L^+B+ul-a=sQ|=*qjb+YdPRP?P{P61&N{U^3M{lqG;UB5AgiM zFY==n1dxqfhWnX2~_#WvZ{TJ6h;?b^@qX?uFF zZkOw)HN8u>=OHuHfE4vv1)tN4TlBOkh=0~yfbMg}o^nZ-pUtEjRrC~9yf-iF#_Ne| zN$=3@j{Es3r_bvd&K>`xJNt5lzC1)6#k0W0{YP<2{fa&Sv zDxTFg9;;cBG4&r$1h@Dk9;;cBN0p0Da*t2qu0u;wUjVDJZ#Iel~dbj#=Yq>_G3EMLRxDh8PN&)wBEVLogHZrJi8zR>1} z*Jm_Bw>HKJO0{uflLl=yK5kAoi4gvvgo@a8Vfv_^KXwa0B2`8b8{%!SXAU69HU1Yy zR|zr(YrI$Wve0i(&G}(T>SP(5l?#KbRMJuWl}I1DrmG{?2k~c^aq-TET}k-VgRe18 z(XrVSW5k!B|3MvqrkA;rzUQYi{;0$%mM%-p3$HnUeNV4XwL{QCo6E@dF;Q)0qu!uAR5mk-yE3zJTN~~LXqSC&CnTWPe_`P;0GiRk+c9wqsgu>qHj%m zfg&C#icFvDDu{Rmv6G&{af;?A%*k>y+Wxdr{yP24@hqnN= z$-T`v%3&D+r|T?L`lP6TI>Nfu2d}Z#28l!TA?b6E^LmXk`9M(|yR)1T!N#jeU{v_0 zocnmqUohPyefny;k!F+jg{543>a$Trho~GzoElY!sECChNZf(M2@I$Eh}ie0nL0jn zEw0zn%^+?%aVsn?u{h0ZrV+Op{w4LIVFb0KF*N7sNk<$DOYF8~rejte6e@iwCxAFs$VQ(1VvE+A?qIV zRZg$4rx^}d)za16)$&^cLe+GUuA1Ler0VG+t)7C#RII*UvDJp{OIBGbmhc3w`AXP4 zP-H^E3?E~<`BARL)l2)b3pIIXkz~J)=_0xCy);rb!R7hD_^sLFYZ{LSH69OcJRZ_` zd~M_L(8lBI8jpuH9uIFk9?^I_l1C2@G@3tux$t~n;raf;GfU}t`UeZoUnx9)weXC6 z!CN_C_aA8i-UhPSQIIJC*ug0Ri9g858UL+|^R`?D=8++^!OqMfSzhHs^w6@R!@@w; zMOfE5O#}0;{2mXR8KgMac)Ym{32T;*DDb=we2;dHU+k(LwgVtD(!)UMsX`g!Dbcd^)~>D$Z{_L&D`<60?+Hs3MWy;FDP(H_um5r&8E5N{dEBp4l~cHn`QfgYPhw_+r7cYA-(unIJJ&o z`C}%0>KNH3GA}lXo}ohaVc;o41jx!8MjvT;_SEhcYp6<#&_8J~#+(O-*uE{+c69D2 z-jU~^>&!U5_?4qdWnujr$2LS68Dg76R4Kl$&C{Y!;!9JbTY)0>4o3&Px(O=G>0mpE zxn79Lu;g9Sxt92Ykl&25-w9>VkoMKEx{!{s16IV&xXExqIaT9LZPnkj zM6Hd3p=~mw4$r}qkrpnn(9n)jPHT=`Tf%54JifBhMSdC*YjWeu$XjB@L8rTo-G6l4 z-i54Oh4Eimz37c*)Rt|6JRy^l9bLV1|3$ zOQ=njnVi@_*-v5fq16ZyL5FT#z*boTmKw-S%Z%>B=?IR-@LJ@LrzNd2p=}$ix23zD zl%nKL+D6kauUHW;or(!JTMPmJ7M;~lN^if!&g^E9hLuM}z_M<}fCRFwru*Bz6|r4A z)nh>Q5{7~N(?9*LBWEv+)vR$2Ar!t zRv)(Tg7*`vX{$Mm3SE8F*^R7>itf+?kx>)b??--{-ov+at13Q7>v1jF4f|6k2Hp*} zupCnM^Ht8z63zpmz+8@NUO+C{na}nz)fy}(z0*n6w|^ zYF5SxHW0iO?{t~osh}^RWu;_#xtdsAr(T{A$mw;c`?m!L#>U3tHf#%>I50Mot7h~oI12=-6#n+$oVTDP`UjBxrR0F4Fr^X zj}yDhm{gXe#%HN>{JoaK@f4x>9%vPj**mf=$CqN=>7Z0O@r|u&a{;E@%zSo-5DQ zUc4_zUmdfPLIt}zeY2zb(H=IMd!O-jMbn4FS{qz^OlI*?9HqCg0Lc7C5++pdSe=q$ zQrMUMEAf=bL0|RQ8dKqeuSV)KKZQ)Dq+3#xKNVP?f9X)Ps77hn;DgO-((T3< zoew02Rdyx;Q0r5iX~=QuYW_`RAj#0RgT6gO1{2ndrYD|fElEwbX-kGg7}kX-Mrpl_G1lsDt%X&iu?h&3=j&GjpM8K?gXG8t zbhy9u&;dQ8(0DpaUrCkO&mN8kMXm=Fb#1m&T+l`8akLj*%pn#kR+gNTE4fkjCDVl_ zgM&iv;H_kiTm0Qn#5gN5S8C*DpcI44jSkA#-^MXNT???X?}l@c|nhQ^ISh-&u@Zo5jAn82iC2_CJcT zAIM_gTa3Lri+x`)_NpxQO2vk3E_J(IgY=KChlnZk%2-}+MJ2*pFXkxR_Nz4;r*MSbpH!f{I_$HKrz#=@d7f`z%D zvO!s9EDYWy8#};Z6+LHR9hA+maxAWuI4(dyCjhOyV$aAD@iA_C>Qo0pvFm|!InjER}BIzDfx1W9Oo-nb`(vxt6+If9{S6o`me>u{{hBc&@cqq$XJFa6<+`4oj3fFrAW!MBB@cB>e4yFUc+CiaB~LNMPWYngaLQ^eP18;>NeAz`&ChPNi_$x!&_)~My8mW!hc z+{~>5Ks%5h=`4-THGR1CM4Ov*h}=8VM_Nw?vjh&IVIFQhUOX`Y zxCJ#+P+??^HRZy3b&w2$<1tv~o#u;ZO#_*U z^0eVnh+AS?(mA+c4PzjTxSc5{Q;|;1JZUP-Avu=wB+|DqUMpR_^->UB-B52^vx>w#;oskP7;wU(J-4N)nQCzz_{GFEuWT9!zwgw8 z%dRpLl9G!N$fp{S0sepLRD1tmzk27adbgeqQ(vW)$0AFWla>p}p>hFZTIuu+7t~6i z0q9B>)>~(?!{S1qK7%d zra?lukJcsSQ@bj=CFS!i9{Agn(t7cR&OuOS2&KZ}8H8qHwad?%Rn!8+(mj&W`E{yw zVZC&z-XxU^*R0~JlE)u-NGj_GQ%r)Wa#Af{L}#c9pbMdPz$;bnt_4)8J$>N3{d_w6*2lgi;nNRrVP4{OHN0F=!f%WSw zcQWbWOd<{x;E^iuvu2g;??R?oF%~p3u9MliB>E^FRAjT&=rqVOz4!(?UVHi?t|8E< z7Gu*FcA=*2+)kOw`$3^>YwIBGtfzM@SJko)&M3KT?pk7}h52kOHr+hmve`Tz-NXBP z7V6`#wJsF7Xg;Yt7jBq&;HCH8VA%If2nE?3y!t?ERC3b<3Fjd_)%)3sA1#ApdiR_4 z^VW1P6OI%mr3~GcL+E*NDqSbk!|4*>mhjB5w1`Cb`F_M`>07>q=%nLShj zS6OAzCvj^91qo_|8OGvOf&jQAe7Ok+2P~vo%w7>PdhV9GS+8Dc*2~>yy-jF`duXr}%jw%vw!5rB90H@d zs=eIL4lsq;63w^`_F5q7`IB@ern_uwwIU=9Sr##z$5`&{r`#O+~xT`(Xe9 zf>7zRJr#-|3FlPlrU_Kizt`X`n_}x26k-7puL%U%HW?=0ZEzz-*CRAPf9{Sit4$u1 zx<1|bxkBKwFIa22H&;K(n|7aUQ}G+G#U)w0%l6r*+QAb*#h+`lvZ(hl+1o4KUR&dm z?1DuHLAh7S!$g+*8U;FhQP0XOF#~T?G4Q86APtk-dw}}Z$t^Qii2>`Z1ruZ3+m`Xc zN*+|=720d$65F?Iit$0cWLE=0xyFYQQ+Kj<5~M2xLmdAae=e%LDKKrp9PGQ6mFc9% z3z{7N^f#BBCcxu;t3JGFY4#30I!|1<@-gw6w;R#PfCP#`Ec1C>-CbSX61MAbZN$7_ zdH|DP@R0Z~CDv~_Kd*+LCCH71E5+KBxh+1~URgc#gG=+NN~dQ`@uybByI4who}sBB ze`pgsiQxr{(R#s3G*oGx6X+AlJKMyoL%wlHjr?FX3h-^n(KD|WC>QY-u#k^1%SUD_ z*IVfbJeWoz>SM|q)!86OCXx(LWqGDk8AI|5PVNdFGlbB8{|P5tryPt^ih>Y1_+1RS z2!FCKLf0{MzaWq{Jl(`OY8NxbK4WRR?&4#mXa22^x&GqgWq#jxGQAQpjaEp9jveM< zPwk{xns&~fimiO)GDi5Y?Ujw(`4E|}l$NwGxP$T?ywnVCXHH#pgb$*lyu!LdW}MPx z!em?e-iwcC5&+Mr>ZmsX5S?J)F)8x3+YS(z%Xfth5Vb9{0HVDGMq8=Qav6ss)q=(q z_jSvg2x`)oBbG_0$9BXdVs{EMx#3oE+S*kju9GLV5N#}pLYiy@L#a~Dy&zAMBu_>I&RBOCzv6+d{b9@s$ z!3Cr0C87EE76rqbo%CP|!~}pkDN^Tm)l2J{l|sy%%t$xU(-_Bo_{X+k$qgNLPJmuL z6bx7CIaT`rmtW2XNuAnu4_w1JOB}ju(WV4eA5OxB)|c6@>H2h=3#V;^Rf)yM@$f_% zR4=cvat@sNt~qKFKkC=I4gN$5kJ3%6B^e!^L^Ia`R`t3?cxg=o9$dorb;j^cp7F6kamR7RhMGwFy&zyZ>_}~ zcyOtgNLCvePH8X(FLs$*bClw+9>!`ihH@Ast%N|R<540F<^;@J^tAYga7>z&^-AJm z{Y;8Cb^tC!xRm@Om%r)Q3V@V)4=#xeka|k-DpTf}X09`)in5Oky?e+I z_mHGRL}#Wi+Kr!Wb9el{SeWfdcE>}Q-8p~G?)P+5>EmTc&U_}70t@Je-qISRw_N^! z-EY&Kl>C1qwyKU)J3yp5XB*&t$DTQvdCNe{Rc3uMv`rm3uyA>baJ zlOX`?8{T6R60}z(cIf>l^Rw*OIwu{n+HsrwPS4@12&?`$tBXlqXerzB=UU(5fjoUu z8Z~b(927wTVJGc4K94;WG2NvwqpdxfBX(Cr5twO;0M5LW zsfyrZMNCsEyD0*58b$DB*tu(S9#fhlc2NYvoiTev*wH#8rMRVXArb=;3xu7Mm9kjc z&Wb2ja*`s7#qUIfLm$>q0*VTU+6^da_D*K^M*2_cI z{H+u-y<)01K2tO&8pvo%nyA!iM`;w%i&|=Yb+9ZOUubJ{gjpCBF#xHL&%?~fiYZX~ zjc-*1rSTD(gBF|F#z5LYBAt!JJO$NL^ZwaM|3utZC*X~khj?ygK@ICL%hTo#-{}|# zTLwE_-#k9gP#yzVnzam*ZqJaqD8uuj=B#@1tlVzq9l(}UeO4XPU#*2ps6ObiW$-(W zxorcRXKu`!ke)=9;_ZB`>Y|xI{MQ^uPZE75*^`D1*s7MvBon~Y|04B`Da%jD>#F=3 zL!1t#1o`j%tbjwJ5N~uiO|P^#E5XLQOwyY0$aG=Y zecHH-;OAD;Icr@bm$f`%g+7*uhI&mJHAHhK&p5Bsj9&3)J4j_F!n1Oivijj|`=75` zQ#OnN{~xn44DBBv!)^o34w04P=cv3=8KVDr9CIFCZaxvJxsVI$kvkYqybifQ4xGZZ$;;(Ly#@-X4BrFSJj*O7LclxW$N_s_}wkFkk-=? zW+F+o-c*h?V-ls*#7GE=P#Jtu!i!9fVQk)|U>ZO#Fs@n&Ax_!2=^kH-56sN5B54g- zp}+^)8$yHcWlm&+lA?GuzG+;~KQhmvN*1si*Yi7kcP->XcPKI0&AzX??>`%bEnZ@5 zn;sz10=YTA0CVa9ay?dSM?|ClB21*%`bB*bDaxAhaIZMeU^oleKVS{dS*&%i;Kpkv zqd~gz6Za!T>sj*20h%K{P_L! zP3+Ea9OC+uJz=oOdK>R0hRF^OKUVUNZ$1%xSxk)B>=dW(axn2c$-#sVG70>YfGm`> z9vVnZD0Txr&^S2jSm!bT*}E@CIyj@99IFr;Z1BcPq1DWPo3)zvI&e@xVWo3fRC2lm z^l|6PNhQUdFjajF4P`p^k^5{#lccRn&jml#LtVK!m-#2S$__rIfgC6LI}GWySdKXv zJrq9ZPoB!+JDKHZZYi4Q4Vp)2lU?>CGLiAMg&r$rCLbe0D5>xqruicp3woB?3*lI- z(M`AdJObL6HtkGUe9mLOV{+we*C85wUEME9gY>=d(^7L&CUcpJ4>aXPPGh zT9$!Mq~{zQPMG0_4i%nf*2Lt)sW<_11&|7FXF->RQ*d%1%#Pa(rU>9g$9DH^{~xbG zSw|QJ%wz(a${1b%gOjUhzI-1CLW&x*A|cpg?&DD>NZthV^Lw-Zu|k#xs^F49b%`t;DB2|(!5p9l z?=(A;N)eqb7uxHr9txSk{r@amHGNW>fI`wC)*u!xqadUj9x49?zxd~%PFeQXW)KjN zSyk5Xb4#Sh6lC#@mzXR1bE~s612FGMo}w_!7D<|x&qzrWW&RXHoecw1NZJn#4&w&3 zv6iUAj@UJp-~dPGGfj|g3;T2JP78&JK4}LvS8~-gktXP@=Xm%y{Xjf5(HkHaSRtRHcov`n z4Gao2fDverjXlL( z(~6F2NY8gEZt1oI?%2Y^(@tbcU9}~1Cy`^2Ow`~Yc93WJ4Y`#nguiYQzs^f1IoPJo z>QL}EA)#r!*#;Zq#w%%NJlemF@j}YsYr>#)O2#xNf=UfQ@r-F%c)W0?(j94`*2xAZ z5xofAbwP*>Kp>G?OME4!2r3j*#}ry}5ay-H0;5=(ZI%%-eCd3f!6D)jjX_SLF+bRW z5z&}qO)2NX1)XS@D2^Vh+Y~p@O%f-O`m6cfKfp)^@uw*`N>rG>+`Sc)o!++&B=BkF$HI1yPWJ`&DnBovkzk_|>|@_%Y&Y+2SvS}2sDFf( zS14OeJRMMmmVL)%OAoSe&OLIkI}V8b#--i{2rotg@;3$Y{(nDpL(a4czVh#Md4_=IYPA~H?T9Z&`fk}y8HV4jBkkE}o^WDCE;4YsP&F1q4HqPeb)!c4k+dgm_H zv=yH7fn9Mv6b$M_=!unq<9yatC77jM;}GfdGQMGQOk*1GXEjo{OFdpYnTrnFkdNjK zo`zusCL=;hjoDK{S^-pbbdIr>=XIV8+MG*3E9oY!fU-D-iIg21#e;1+?6#?~v0~si zgDhjn1gIyj9MO!_MMtYmWgwDjTfOSk!i1W6F)1Z#)%D|endTuj%F%9Y3lngZU!B1; z+$T*hMr4ba zA_HO^U5VEbQGHpipl~{D`V&ZvueK>~whCH(PlV&4$RjOaLB>30lWAE;Q-wMbjjwFG zw_%FTw3IOKXKT9w18N!#JJG;knB`?OwqCM=-B;=(?=Zb!Y26{(8Z|OqqxEg6O%RzJ zu8|#}J1XMTjV5mpnnkOKyI)AbNo4s)T@{nz%XN$+Xusy9xHfGhrL!5l00iB7PORcFIx)gKxITH-5$$yycM5NnYy!D0rq84 zM!+n+L|XdXR9)`uzxYLr|K(lN)&iJ4k@tt)c~g4`28KXsp!r6$N!FnTFM6=KA!147 z4}bw8i3;rOCWEiEh_)AZQAyR`hK>egEYn4&5dGg@euNdv+qPom=!dFsmj%+Lx^dK=kcbk_x)J0~+;-WucfFms|+x8^BhDT?&? zK!BJ4MlzF58m(R$OM~OUyrLtD;l6(mqQDicrF$+#5-g=Z3AG=goVJW6(Xh`$`(-V0 zL}Gwx86CDyHf#T_WoNyQuO^OC_U2%zaxUeGF_yxDEbSbXkrWhgqnapF$aYT;qCWS} z(T*An+UYI@%*@#NM{iU1lGj+d<8*CC9Q-(#)}#1R_8In4_8FR46<$h z%(6pki}tc=#sb}r%U|*;l`*nL(7y*0Yn)+5{7#%LZmXCCuHTs zA{anVj1FxuTEb>&#F-Tg zJs5MApdG9_*w!N1vu7zr+%sU6R12}7V>XLUkhnO5`fH@u<#WL*3mn>}C3;P-{>1$- z7?;foyrlBMpggu|kBmmYMU4V0R-kfk6j)Y)e6D3zUtmcEifhNSRaXjR!|1reEDKjy z$qK9Z!p_YX4p{V~a&DF?PvY=U6r{G`V@w7?f~M2V-k7M?37qI-hHA~u$^)Ail81I` z@`27W6*@t4gfr>Iu8wSLC=+LE4lqSA=Suub3@!B?5qfB=!&W3>F^t$C?m~3AK?e?> zVRQgWN~1tzd=e6{fU>qmJO?I1Bl>L=R!Lvl24=`AO$4ASXQeT<99NnglB@E0Y2}FF>6Kz?|8I<{THLY@aJXpqN`JZZ4ienlSgTRn5{_7wRUF(PQb zJ)@$2kZ-zT`5>!P%(_%)lMz$tsB*8NM>+M@>*SNS+hBM znqdwroDDO#hAV5+fUOku`56zgg9w?f#!=s#MWq_CN!j=VrLoPdIy0#4ZV0Vo7tuzl zXq0hTHWCs925YTUR19j`sW#2R4?(*Q1=yYQdsfx=NT#je^Y&!-BZwoE?0(UOM6g$Z z(cP-)Gjw?+a5RCInBNK@(sYCaVqg^Zg~8;+fQ5XGaSJDTQ#kwpV#B@)O)}#qw@Ko` z_=Z^+uXpk2J{KmtA4VgPt&I7YGza_xAE6Zq9qa6}kP{?mDoyK88BpeB8;i?PN8Qs6&ke5&9FJM2vVZBds+h`;@g`PVmxek)XU;qwO*ti_wfi za4Pkf2@bpT1+YtR0sHP`IOZEnc2kE#eoDfop!!Zz>yreJ z2v0vCqAS@+bJ7Z(CQR=Qmtq{n!x-y(E$60v!&S+xEy=`0PC6Ki{e&9!#|v%HHQCLv zc(5Rjqz3Hq4G0zG4QLHl()7q2rr~zXl+f6G=nL8CxsPP#v4THy&7>@KG6nDL`^oB? z9qzfCTDX*uX;4XaPP%=LJ1a*`Y&;m}%xHDd*1Az=~Ngf<)a+|~vzQD;!te;8R zc7W;*U6mLF`<@07zpKmL{F)|rji>Rb&TAt)lWHX2 zG!ZPj0~~ewx6tJ9OJkfrd)V;6y#BeP1M`ju_=|&%AiYs9b`A;ZinvN#{^bLDxgomi#YL~( z>&6qlbU}E@et)iQnD*oEob&6ISA6jC;l3Mhyz{eX@A=62zdZTTv0p5I$6GdD_~_Q* z+Ffn4M*n=&^!IFf%@x1Ay@P@9xoP5Zx zzngXQk8gSGroWzhme|yzK*I)FtA1oi4_w<9e ztUU1Bzq$XxOV(}u>rQijvrE^H{`JnyKb-yT$#2+upYP1SZr{mYdh>+Jap77i{tXK3+~rNbkm%g#M-`T1{~@v2w<%Ym;s=-@+MyZ@Y* zl1kXqAL7Gb-vQP_9#*a7frbfwjjtv>um1l%Di6Q)_WM-L%O3vC>d%~i@O7vB<~uJ} z++TS9%-L_8JeTM5c&AJ09whDn(kQLMp0K{P8f=t|0JU$cx=)2Som^$E7OqyVHm;72 z(?*ZX%T>Egfb5*%i=Ps^pt{z;eUPj&S?l_WA$~BW~XyClj{^7F+Mi-p3 zWbyFmIRm5pM-eRq328@jgjbWox!%C_W-c&CXAgqIxzzLj57%3{Miws{ zo;z?-|B@vOhR%M&>rXs<&YV-<@cLus@OSblb55Im^f7aenKkQ}qfS3<&K$UX@H#Gr zeh0m}MO^RTx|Hi(T<_s}Ki3DiKE!n$*9}~s;QA!j ztz5TreV*$JTwmh4kLxR34|9EktIoAI*DJVQ$@OZkgSZamI)ZB^*DS8%xlZPKJ=Yt# z-oo|oTq~*1WnAy(y7R0Ft8abN0jDqA@~&e}|G)EI`Gp()oZfxq>$=`D^&<~WS@omq z=M9X^9bT|xbiv}G-hGk6fJk2?C;H<^N19JwJt0TMLISfDj%NC8!Ics?FIj)D#=^q^(UU25J z(SecvMT-`nH)mwol7Znli>I@jUltcwltd@KFBhtYt%U)pq^MMiC-US(Ob((Ip|@t9)4eL zq}8|lH6ogy?Cn2z9~{2#;rkzcz~L`D{IJ6gKjH}fA945vhyVNGdmsLaR~)|g-iKds z!Qn?9dHCUn*SPfKQXO^}>5e#J-~C^4z{@W9_q{K;VDG&b3@sQM8SNjMJFxhySG?lL zBi}^nLYYYP&0PP+B^If_jBMZHf_YeDgZ{GjZ*{>u{C}Im|K1dy(-c0VDcs)_KC>x2 zw<$cYDar2&uIz|HH8;9g_ksimo|l)*^uX? zIlk3Jp}c3-LV1^+l+}6}v9pKH?O(KD-Uwr)<(a)Zm(XdWF5fKfJmO|9UTl@g;+7M4 z^0Gza;>6icUgqkUrF)ycU2yhn;}$$;@o(q(^#f-QC?EZ0@fYxX{Aq7KU5r$JqBy;~ zkn18JR@}v0`pdps!80{lHZa^TaP#;}c%D7aF{@(yI|!u1!)`Pxq+iMN>jy@x@GS3D z#GP{H!hyLCq&)A{%41|?!P&kUv-Fn|f6VeF!9$C7q ze`G<^AgBRBe_8r>@qFs=f^!*7$Hl)}@ypJHM_Y8B{&IpxE$Sa>rilL_epVB_?;-Au z{o~vGy~Mp?1j&xO{xUeO;Q90snsZ?Itp2&K4D}D2#8LR}8pSV}m!UHM z{zJsiTrj>re3&@>Wo2H=^GO5eoH^jTUKalm;!o31d+PAw=3aXp?~YnLG>==J&-IF9 z94^MKBXIJ7k#C;vqr{yy;QD=5)(!fIzbyPQo=;rhh%<}3(NZ+he4Oy<{b!#&Fb}G0 zdiM#!^o7N)-`ESlF8e>35em|0|1&tUi@@#%T}9bjdt ze_6UO@C*YwYf=B%Bd5(rs+`~Nh_sOAi#(q&aQ+*`T6xUBy+;B5vb_G2=VJ#(VG90qX*7h24!2xS^WLPziGkf zd~SK#2Y7zH3B8JK#6QUMiT!5|EE;gYWO;mr_?g24{mrm^m3UfxbivSgoIFJQY%fw| zd3=qy)6QEkI@cg+l=(36r_bNE&po1e&#|&R9wqKg^A|V<$#WL}b)Ju2+<244e}nj0 zeu|RC{g;cI-Q4Fky7*H(*m>UHRNez~$ML6c5obJ(`?tBWyuZV<{zPNCzRQIiunmv= z9`WDj>g3Y5k8%B=5dI<0k8@@DKEbp8LVx{;`;WP@_dnrzQz86Qp7oc#{~6D7N0*N_ zCQ)ZDo_D^R5Y5%txL^eB+{oxKTFp^LtvO5jhx^YNaR~|$%&Z*iptoM!8C(8m?CkFI zxOY&_kPi=YuM)n{-`Dv2mE0!~e=n*=6Af4Ty<*y=)A?F|1xKE@!$YM^Vx>x z{-L4Gg>O&e`S*pe2RVn~zj-(NtkXu%f!&OZGM8gI=tjQ=t^9#B`pe+n!ZR|CkUHpQ z*o$b*M*2VU%-FAbET*;3ViJA!d@}tL@fp4TSs(D1<@p@XjMw^RE<^bMbJVj(T!nZD zg1_)S`}VIqizoXbKhNWD#52Ad{+=(Se}QL{PeB-r>6{T0#soeu_{(5;k!O+wTe+*f z6mK2IKP$}SQ~W>(W0E(zEE9bq;zb`yQ{uVIbsW#ir^2)TvT|Ao!ht&lwKdc@_dxS;<4XOUARx7s~1&T`mXcr4zDMO=i-K{5pAd zayhTmZq}j=n7eqdzpM`3gpXQ$&JvU(R<{-l-`(sVQs=CX%uXV~wGrgcCxF7qcA@Y@GH#glM3htqVN@5&D-dqzhIYvm z0!J67SD9r(KFqivM-bwf5TDZ3g}WX=)TKV$^bjIwfIma5ndn^XC#5IE^3BAAn1sZH zbn+GR3^|8kOAoUgY8sc4oS2CXO;S--Xa9d+fp0K&ENo;a7E)>6??1rbfU?B=dkb`7 z&|=8@r_C^nPyT!3m3>T-*ZJGJfbZP;b;U1gderNG2C1oy)7qA z5XKiT6h;b3lA6Mg(h=a&KCSs%abqIgl8_jif@v@gLC*4;Ar4=g@;tzg5p4g$W#+TI zi1*DAmmbj%A)sYdiL$vhPEF%>Hn}7z6mk5JhUyarH@D3xEFGGdTR?1#QpR{h-e$z* zwlhfsw`g0!Y;cd$g7RawF2%tvEsg_{FhL}z$C81OFTa+EOU45jMW!@XD%P}?7MRKC z5S$grW-a9-Tju0sIk@T+jy&iQb!-J1nZcmTh=oGQ7uLE!+%}-)1(f?T#FFa{h&p#fm>E0nW_iQC6KE0E8E$$A z5p=;Hp%=xts0n$dzO-RnP&zR#{%JfgxtCks75NH%)D7Ioh-@} zV=oeEji?jVugBly^KZwt$hY8_7GoL3IC<9-VoqS#Xz2HxeXzzQVNeH{7Mc}Z? zf(=pn%j1ZC=#4mF72DsSxD+bF`pEeSx-V$5^Jwi&abpUMk$wp0CFL)pKm19s1^|n? zMZqn2EcBe{f6*6WJ{0qym=_Dqhppw)ooM7K)&v%~=@E600nK;fXkzCBE*5?!#GyWn zgWG9}IY)sjy%pi~i2UL~i@gJiP6M6R%#^cOvx{LZ(hNkJNE=cOPf3f5oSU2n?vuz}2x!QxQTF4zbqn~sTt zGyh?7{?L=wIIi&CDrY#0L$?ZC1&I7durTo6naaigOlR3$aZL#}M}d9vk-TiSGN$CC zK$}oKlI!>37UN3jwtuUWguNkjlF&t?k*A-W{}{OCwI^&su!SoC*$zM?IUcn$3vuZY zZMK7EdoDD9NTFbn8VBQ$*#rr3m_m7GEy-BqNu6o43**rZL2k8;}6vk*_z zcUXbC%tjd4jZIN=VxlcAmerXoRM}U+#dl%8FS&brCMVXuoIjHehB$(=EwJ!R{3(fc?~ex$(w;G zZ4T@O4KUv$qLO&SMZWWpFFk^uUw~c!n%9yV9+xlfLT6Ywzn9?3-kIN`f^kTuSuUS7E~E*LkxSG3AA&_u7`*^?MB~Inzl80*`0v3pl?Dp zNDoGUroGAjz&c<)uvz`2PfTwxm!7HR7Sp`ek#PlY~*p9yiOt{Yi6 zjYYmP+XPzZqRnuB;YM$Pn;uc_R?sAFY>c_?)v!1em0%nGYzGKkv;*#BNEs6=gbUt_ zexFc-^Y}t7J}#%p_Pbcu7OXoJChGGg@*bF&5@SiE5||u2^B3#dK!4t+4S{LgH?MAF z_i}}u7-@4^csr4w;Q21N(ch_w^7IOUOouUnNjNRT+BGr5)(MsyU&1--vm0sX5%t@{ z^5FTil}@BhKKw$*6|e>NvbeMx=v*>6wS~xUACDt!xwj&Uc>7sA8bUaO%XCJ|SGNN! z4qp@JkKwBSK^BLvi2o|iS1b-+I632hab(=dGYvm{MCpji;A@t~d1l@MhY->s_zB)0 zrige%dyas{{ReAuoXy$4q8~*+3;VuI03WNOf8FyrS|HzJpwT5lcHZLmaTe}8U!+cx z=XN^IcSd*C^8|}e!<^{|7U3=`Aja1>2)D30*o$*gkXB@DONfWyTpCZ0;t@EQwtr!9~S* zdBSm94Z(+*52SGTV#|izewG&Yv~>h?i8cvc{a0-hZ7Qg%ub{3bRG#LYAK*sIU_X*H z$3+NJEd}RFyz16CUZwouI9tJl!|EzqS1$RyiahBN^706cCMgr{EK(GpZG%I3Z-#mdI#-;L$Vy0wL^(LGhyK{qD z1KW__-;%EZnxfgEw_lBD;lcOpseUYkZEkX>iB>=+_aX|g+ZQh#1n{>Gd@0D)6l)w6 zj{O4@9mJbb;!PHlIM#OWAAgrGc!$Q>(5e2W6kOb;WBULuv;~Sa4Z&Pk`mBX)+yL7ONdQ3A(>T9loFf%uagL=i5-MC z!D>unLPnPtxb1Aht#;hQvm~2Xt`<=v3;JV(MXp{eF_=wp2?OcUSn)>OhOGch>lAL8 znQVhnG7{tdhCQ@f24+z=7E}dPFW#v=Xb8~h1TlaeY2#LS5-l9_g%Dqo2hxRcx*JUg ziCp1i;MEfFN@l6MCgMD{VOZkm4$Q{OC{}2JVJL?7G@F{F(`Zj^v?pIdX>=JD-HOAn zG)rQ>pmZxPprD?7&xaQLLXP57NW+=1y1``|w@SGBA)>L7y@DiqNNx|81mT&#F)b`{ zCRYZs%!u~*n@~&60%;NQ_Cq_IOsVB>s!an&$Q$cNlO>)6LWq^jWSeLL1{KbGm<)26 z1+U|*(a{CNEl_0WO{Yw;o^%PVcM~JCwN1dZ7K>&h<6q^1Y}sKnbuzuc;cLYL)fc73 znS61hBZFkZ=KHStkXX}Z++SDAJ%e|sLZSSqZD2YnH@vSzx8iK=aG_)%2B0s!Im1V% zF9rr)s7X(N@_<;0#9SdKrzF?5!Ei`)(-V*;TY7+R&6@7D$JS~hR?4K>GiXrO;W`A} zDl6ImH$h_8bWFZgeLKQ%War6(53=a_rqd-hU$-QQh-r#}q8tK+nLgZV6)JfU4pvw@ znTB>t!3&9w4lp?-Nm2wG`D=8*v`#WH^^bFB&?=%KW(Bhdz#B$!rp%NK@DQCE8jiT$ zh#LzGb3u}oFPH@Fk3P>oFu{8q-ce^`a^p)$(v%7OqPz*$74Tk)vx2_9{-%ML6MTIo zX$SJBeUpR0WTPCH%X38zMr_~FzEtUEFjYbr%WFb~*}x+(D9xILlkhkby~o4mM=p?} zhi$AzDY)hoVCn&Jz*09U!DbDBeM4_rK{bK30WJC5Lh@qC-!y6~CNpux)7d_<{}XJ3 zAo!LiXgt{grjG&0j3P?;Dh^_WSXDZBOHUz{D z5*pQQx=X@~N(m&MScT9_OSVYtQ9)Qpxh5r9!0TjRu--W-akar(l5V1{F!T)5?6TX$ zCP}Cdb_Yqs=t?yeClsWsWT6&fOJf{cVS0H_YyPV0j<;zkp*A?ccvOI5qL#_r@` zwa{8Vn04zX5mcZ7zL|9Q{w+4LvF)@a*|T$>F_w-HE5X?qz{Cbtr4;6h4ZfM7;&@ql%WX=nyEIpa)}h$en#@8c#A zc$G?rrBF|-YWz&fglk}|x0{9hS0dBgU^cQBPt!d3T+|T*nKFl|B){tE)MseA1=~<; zhPKE?0iub;EnfoCA_~o+iEIczEO*Veu1xuKE9a44-UCcsv9E-=g64~8Ijb;~!((G{ zBu^`5G4$eujuoORn*d;}Snr4!0koOJ-v)LQEa$W;G&fSZ8FVCSZgViV-`xfs+j4NW zvMOtvE4ka&8`Td}2}w&qZP=1bEUbx>ESYRg%+^?3lt_T_x;V^hEG}r}4D*kf{ronO zuSm)>mlKL*aK2Pk-IE3QlJ;TCAi+1GGuaf1kteU#U2So*A%1CTWS<^jrPB!E$`QQE z*GT#HP=HxBAKi*_Em;esmY1|nO<|Vh1R3+u&Duzs&@G`^XhSgxy7ey-%6U5F0h)+9 zSzMs!yE9~Gu}e|`>|`5tO-yvFut?m}t+CLqvOVA?Y*?f~S78tpkZk^*6NWTjHioM! zuJqw4uK4nBlPw{a?sQIbvMK0`Vtj+&TE&pyVD>aclf8&gc4ZEqkdW6v{;l!SKV&Ex zsiU20g^yM=BnBHx`34>s;ig}>8Xl1jTMp|=E4Br&Vy4*vRw1!4-*%3$@TqldwMP~p zUoy)pS+|a5vp!8%Od_DVs4{#772r`jzws_})HKRer3#s^@hK^$(b1vOWwfn3+E%L# zUl;tl;yAxu#j#n^#lZkR(6PR9safa<+JwPabcojuajZ0AGFOC%xP8j^w14ge^ig3){L8)-=~q^eq8e`$5-{EfCFYmA7jkbT`{(2fDj8@uR0vk=n5^Xu$~y8!R=({zdC*~uiA~>OSY$CP zmMz|R0i-iqwd`b$VBhO7HDH}Q2rs-?)7<(bRkwXT6 zOWK?!=fB9zOkBZ{jLA7o@R7(^=B`wo7Hj^p*rtaNXml4d5yc{m_y<|Zw=I)zmEcR) z_tUNJRyIvfP#qAue8ZCll-u&cZ1QEB9=YHq4}uBDrEWw;c})Teq!gTX&Pw_E%@y0ZfXl~~e6!d) zmOJjeX9LWsxZT=z8Ex|iou3`~T0;t$_kc44t_&G>{V_ry0`yS|nlV{H*r=e-P>8vy zOgC;j{wHM!h3PN45M{7(-P-Uz^6vzil(sKbAb&yf+K5@ftSx+zDXShfJQr{%Z2+0PGYIag`qxKC`d zGR9drF_F&r%~-SIooU>*p)&&Hs$ z%Ezvx{GG!Q#qxnH<`D!s&++Pr8dF)(A397U6W%Wm+I9gAS&jn*<&y8U5;0mWw#{_!^vH#z|P z<>D&8Rr%IRDc>YQ++d#$a^ri!nNnWw!ot9YH~Z9_sFB-vVlUmu`+Btfnv4S^3g+KF zadm?{T*Q)#^{KD4qok0?9$&k_c@xP3cwq{_`>n*QfLLJ0 zak>%055pi_uy&*2?J}L@t;_#@0p>W`X-?0#>c*)F8}iZ3BK<>f{?nzKLuFZg zr_ISF5X_-Axz!i*S-LQhU9E5`V6T zc(x>==&@wo2$MZd{$L7(n8~3Pmm1kAT4E;DMnXJ)6`QX`*!gaHS|%(aER2{o9!}pP zp)ZSKJh9tBd}d>I{}sbYV_?tYILxFQ=d__YSpeirkTkP zAMIls>S$w+z;ouP70PMTWkBzXIr zBsEL4h*c5op)(QsLSmPA>ZC65{HW8-L}`XEy3y_mZz{f=y$ix>cYX5_)*#aEdzwn@Y81HDvyZqh}?ft?`n+HYcSFX?% zkH81NclghbJL@I$E=s49Q%U9@h}05E^?pUvr^^zE;Y@+3NH6@X=!VjFsGU@29YbM}4|z=(^Qr3##3)fDak*G%crD zlCi}QNSm!efvxcbydAf0fwXK?)5QeQC>t8+DhXV`<*}OnCX=7Psjt7OsXxe2e^YbD&VLn??#a02hz??t zJav>jzdQTP9~|MIGVwPx3vkr}?TA6W>D5cd@3*q-%bGpAKv$7Og01|eZ6+pE6SvzI zDXCRxjY6D=#g9uC8pw~u^4%Jg{UCL-XU&*7+tzJb^wbXuw5YGh9GCO3Vv(0|{y2Z5 z^Abdsw?26Q)s^_l!o(>EyKg&w!IIt|@|V;Ye+%>xZD8U=88@`><&y$cAfwTrOQS!I z9upJ6Bf8$~&u!r{AE)*OH3b_o*ZLKO|Xu@H3FN$YDOK*WTKi|B_<4P$?|K(qPAjDTT#?jh}4dGwqu^{$g>?h zTSd0*%(CgiLc6fgE)?2@dm|2hp1^ABV#6-!pdKt%4;HHj#p;3Z-i(ZF+ogMF+ep;G z!XjCiuZ1GPc1A@lh>HFHO18g6A#tt=|8!Q&?j5GjFqCNNKY-8?Ne0iL*b zixUlGlfpt%SZE4`rf_e>iAxv;NkI3ZrWq_+28)(K(J~ML>kIS%#5*lH6J!_SSPIo9 zBG!_I(=+zBH$vi*Q{pKR%i5fXZ}7E%)!)W~tB~Q=#B@umR9gZLeEYz&Rk|f|5O6z4 zPX}xWSUO_QJkHW7qjSc430+ukCwEQgJ}3n*BqmuREg3y{+OC5V@L7PaHpIbIVhfdl z^LoobDg&#tbc>b88wpSRhqS`xMHxe=j6_yOQbuydhy>g=g+wK%CZr9*r>IayJo}q& z$;jY2qz+2J*Q(&g?g74iMHyjrLxF=*aa%drmWnUf(HDl`8aX_9@W|nV6VsB?@T)0t zU}O^gNyKN6@ojhfvBls|VjPk5Cx-sS(Wh(E!r9*#sD?pS++3wY(WHb#tgVu)UFlDv zjift`{Y{|@ln`!PqBSEe1+PC0v<|o8>O2?-pd(a62Do z?90hR$9blq+)Ob z#el-nnua@yq1S)W78`~)v`0cB#2Pz}@wk47I?~@nltiXXV#-L|o1&j)NJK7J@1&*U z`}z3Fr6m1~3H5(B+(8}g0`38R0sIQM4fQNubfX9F*fZqVW1D*n&0siB%>M~^BbVa;YT|;0Y)U zC<5>TP#hz0Q9v<3aX<+`NdSeFl5uI^GJvvxascZ0^1%NW{?Fw>1@!+vK}E!=1RyNj z|CHw6hEsn3Hg3Uq-v5oX1@rnpl{SHg{}=wxa6XfI5H>Kqo*yKmuSCU=m<1fL`6CPm$0kWx|UXrTO?Yi9ayCGDTsuCjPyq zQF;wf;j<{TuR%cm%Mo`KU@ai8m{B?jxCNlPig@(O6#-oxB%s$|gdeq$pn?n!8shcy zL-(;Cqk9JDYa%ZYsnO!4Og(=1hY^(AAeo;MFWkwo3MyO z+!ve{To*k;nCee)sU9L8Nrh;aNJDvwo)zU$9P%S9$`_dYDPIbsyhS}kK15S{2~!#Z ziW`VwL0^<#+Q%rZ0n7(%2GG}k4gl{090eQ(oC2H$Tmw7=+y;CPps!s#1J?J&5Cbj* ztOS$;)B)50GzRzpMj(74peWqifhz$Q>y4kh>xZ|`fXy#nKrTEQvl|BZ6={9}(2e)I zzz+aU$$XaIeY>n8Acz;wVw0DbwVKk#h8d;on3b`kI?z$DaZ8}i-?_d!4p zz!JbQz$XCOK3)sx4fq_eA8|JWUjys`(AVP510RNeH2OIMFbI%~GE;yD1119OfNv0o zzDhJ5?%9Bk04B($P{)M-Q*})#@iVjEzJ^rc*9hUvC1-K^B{O8}`l`qn^n1=51Z~ie zx~K8si-Cln*p-@vR1 zw2djw2~%jvFK(~MzrWTz1P2#%Xp!&N*XS45*e|)&{KwyNqvP|+W7u&tKN}W1&MrMf zdLs;NY6)l!Ae}-$I)gyyY=Paw$?xw##3f9+PtdvOgPVXQC~p~{1mF`uNx&+=YQS2+ zXMoQE8v&aDn*m<{wg9#QwgI*Sz65*#m;~4b*aIk7Us1Mb7xlaFBP{#{-iJK)0}cYd z1{?+)1sn&Q1e^h!2V4Yv2e=Hl3b+oq2`I=Hq2mctd#GLa0KWjn0CE6>078$Gj{g<( zW56E(9IEXZ_mxzrtWfGfsC8XHJ*qty{+kqm3;$zsE>YlDrJdgnYYcZ20Ofr0#ut@u z+}Z89s`%kvw+l7d`jIZ(cV~Q=dsAa??LXS|bLr;##gjLNMqM}dQ873w~D+94J`3G?;%w|RP5jWxF=dPe>`fr7B%Lno1%8X zfM$T^0Q?HQ6bc9fm;o&SEdk+xR)E%kHh{K(b^tM++ZUiafF{4IW1-uDI{`Wa$lV1% z4{?QB(6s>F4K(?c8OPIhhub}E1ZY1wZ6w_8bPv$v7m2hzfqMbo1M~*;0rUm4J$%t6IDoA?xr=1**Nr+@#NkP+B#A}U1PXyu!7%Cpu zeDE4rCVpy$JbFa7uHBf|g0nIS@sj~506W@G>DlilX9|nmb7vw@2&d{wHU*$oKla zGY&0xrlCwfMYLbspv2T#>BB~j89QOhj1T56{8&?W1r@wfqxqC4ZmC%>nb%B5{L&i` zpxL}_XZ~FGO6D^Ztl!`LASFG7iw#7tP@er3vThbAWi(35US+3qTOV!bMA#tysBQ%{oC1n})Pdwqd>xp9&zw}1bNwa0g z?tHmv&=Zd+_>e;GileORl62y$!>7((kS18M|M|*uw*mn-cD`)KePFF#PoY1M# zdHD4`2mT?wDz9KpM85%KDOm`qKK6i`s4I{^>h_Q6DKE$V?UWMf=^+mXIS;TfMmijI zr04_EVjS;)Mp&-w4HQaqCY7TL#4O~{IYYj7y5M-U)bZM})H$i$aSv0;^$ztxZfYai zgir;`2|vWeVv?ze=P^%)8B&3+c;mRS^rge``fyb#OxmQ9R7MsY%F=l8^md*Ce_j2= zz0QD-k9hjumuA{GopGqT=1!#ilBl!+w7r$PAE{nHpz_G-RpzqzL{oW6>F&|ym&zPP zRpj~qAy0pPViV&ODj%w(j%Up z=+rZgB0L-!Tp#_|j_|yPB7IJj11TOGCp*4gi8470*AXzazb&A(KD7`(PDW{Wq~nG9Orn&YjA2jmT{& z>p9mrKZ>#HP}u>f6aXJ4(&6fM(k=8jTfoyJzSjZr&zD|wR+d~R2>gZh;EBQx z$tQwbC*I3JX;c`2k=duFad?1wMMP-vK z7k}S4@}+;{7TfVp=~?#fe`JZ1TNdgb^jB^jTPylPpT8r9H|mPz9Sg~l?7*SS&Hhju z>_V$@Z_JkRgPNcv-k_Wk{dm6|CLod!$T3u;W|%3mEa}BE$Lp-9 zAKnTgom1cm%}0y$xqp`)mhE;7wB?HH`O<=5f`$&(5gc%ZX65DO(J3HUPJmtMT%z8U z-a#h9L`t9guJn(K^DN~SPL=CkCeh3vd} zmfW-5RMzNR$$XR~pDu>&HDRgBfG5op#<8X-(d zC^nu0B920OgkEF4LTSATD2yyQa)8D|c@XFTWH{^wuj-{dW=SWq=mnBe9p0JLz6VKz zco6=|HYcYkcX~Kxnt^nJoys;J_}2*?5+7`#`&hzRdr@K?ma$4D(GLdG1KQh;zoO-g zIiPu)vmip0>^L`$$~)81sAuVT)m`aDI(e+}Lhwl`PRk{twL}whW>F0sZRBvBREZzL zGhYg!I9O!Z$&E*+rVy-)80EO`;2OS*GrspVM`>QlD~OJS379`wdtr-klZdjET#Fn< zF16XwfpXjr7j1kJUyvU1!TEt7EpVkrEgUMosCw{fX_M^SGv3}Jy<-*BDsAagV&bA5 z);`Oh(O6MQ=1m8{QGZ6Ws<7i`X9JM=*RBLqC6ctql%@$w1Lc86h4M<05A6W*hlT6d zcx4`-nNC4B9yo{$YOo0SQ3%B>Vwf=`+X#y>eCtfmVT)=?xxsdB>oFEQo?b0vAg%`1y({OPWfv|7EiIiTBL01fuW;aqnH=SKLWmHl4DK#Qr2fymMD8S+q!|9QT;x>$V7QZ@9!L9VeGm#MC%0Zs3Qp$|U00@w z1@5fk?oh!ze(eLom&*j{xUtg%NYJa#5v^&w^4?F4xFa2rl`lfNaje>yLbLpRWdt5S>rN zb>>5kxNDAIAIa4IJJ%^-R8$@tjL0t{ykFh zNmqEgVQ+ae(CNkW^Z`m!h6G{mo97-mzsy}X_xbYyj#mz^hXCYx8Q~}YR>G(z&P@N> z5&G9b|6#~~mLufE{sS7t_n2Kpqr(o6zc~Zj;Noa>7~JmkaM0v;U;}P@0cQe60!9Je z2goOt)28vi$bKQ{)hk%J9%(0Zz3Pf?D7}RltAl^w=KrxwZcw%8NU9GH@G<6zb+%zpqC(V_OO9Kf@2mk0rID64o^C5W4t|4*8&{i2` z$P}~h8SO)ORD7ET%rpz@(2;P(J{*2oD_h%BIcIWSC=^o0mz!N&cyK8-|CoCmiFc5yd-r+$wcVBBy z!jC3=R+xoLfnJ24G`(abY>HY|jPOtEW|d&!>1#_7uIBfk4B_Zb1IiPgH`Y;+h1<`Y z2rnr8V^zY-8hHB>E_7pYO%~p)cL3o|Ilbx<&Mm&EA>mMqZ!oSTEW1IiSDBalwIW|r ziB;_h*K3{Gm9P}PwkP3?CQbSij!vr`NBB;kDMMJeJ<>+_-ppB}2rui?GKX;AZ--82 z;hvS}5ndA7b2;JMW2M#;p6NSi2Md?FeodGJhp;K(&#Q#Ty*~B}3op_7CE?9E6;!Zx zCF5r;7_RI;m|@BIA;UKY?B(H=?=k#jKq)oFmnyen_*_Z`!^X(f3};`u!oww_hT>&k zZq2YUF^l1I2X-Ge==+~CY~0qUIMJ3yCmEKEaV3ae-oe4J@%fUHLI z2`_*6eG3+D>>f_o5_hf@3xD0S4dJ1`-fYXl%^B?pck?R3ehtnzXhSEW75yW+uy6!1 zI(AEU!p8YYk%YT#4(Q3kp{5BBy?nSg3opF5FJXM=r#}lf4u~SWT;1Nn!lRnU5)P`{ z*vi6ZHyucL_KffZ79P@b2;qZYq$II$X?6->bCX>|S$Nv7Ho`^s`3z&>LGdF9Z@#v1 zBn$sRF`97Yrv0*5ICL}N8>uyOSoqM7ClG$(Q+_fFU%qTA;d3toX0Y(^BeMu+&x!w# zg-gb{jK(y?!rvdWi14}XEk9=AmSW2ZKbiTHeAR`!gohTHbDxDPq8=0OHmAW;7M@%B z1z|;=CJ&?k%Lf?!nzcXEevbJV5hV?{_e--`*mjOrn{izQD>4dfKru-f8-4jbv!Es% zOWio0ox-tkF2@HC6E?4Th{PE|#rb{FW2HF$rX0s%utaG|Qrm~)`87D6SchY&A;(lR zink`5J+y6w<=gA2#mvK1yoalQp zo`tCfp|wK-0}g+$6H95PF|av;Z0+>E{< z<3n{hy|y05v+8r4*?{9X$U3F()`;V<#vIc?BY&T!9G4B|*w~C?8XFX@4&hi4O4z*S z8TGzSficWNTX1Y>$*~b5iTum9;@GD($3bm44r|MCw{{%IwdXjq1IM#Ea=f+^$A>y| ze4`7;q!uXu%H25*kKi~VlH*wzxfH&$C&#yXaa^=F$6}VmHjxr+@E73Mm(i& z7tL{wh2w)U97}N=o2_zqJjcfea%@cCxc6X=R}SI$Ng~H#$sChfqjGMga@-`1<5@P2 z@1=7bK8)k#!#S2RIkt@C_|PbhYmDZ2))swJ`*`!Fo|R1 z6pklP+clINrRFmez8-d>zN(>p8x+f#X>lIc~C<<6B>FJbNq0q?@UJPj+y; zawo^VcXMpq%klAj9OoS1*!&g8(jks%8lrr1j&j`YILF3sIKF(6u}9LL?~xZ6XH z!ya=S^c%-MPdP682gk-292@@RSe?hQ;tgT*y4M)}{I>I##Nr2=GScYBJBFnU!Ch|r zOhrbT4c{W6-%`Z~jo5Ee#^3|I_z5O_EGN|(=gi;|Wx(roi=4H2=91JDQG`2jKQB~Z z;uk$=*J1|}4K+#j+zk3I5C34W>ykeGqzwH`u**l8^pc5w#1tP; zNt%W9n8;}IV-MBmOZdqhcq<#V-=Gv-zZ1c`0J{NEeLDB)9EHD4n@0IWbZybKd+Uyo zZ6Z5%?cTMee+|EoX4Pwk1w?g^it3)4k(^1t@-eFR=s^0^XDmMJf)BCy)ktWZ5Y#ZC zUfqO-^%JlRz;|0lS~D7F1U1a4S2v?!{S5fwvzsHW@%8G)H>_Vd3ZJ>3?PUtMk%g71sdzd+3>B1snkjTr%OGU?F(6VM~VM0{-f=27NRB7ia@ zH$B3S$E~fIfi10Q0T!D5hF-IJ*Iw0EPhQ zX$jm5kicj*&gV=(_P2>=Ny$qrz0mBVm%_>&lX9x+2;nX%m!^TH#?*c2!DfrCL!|sZq>RmMd0RQC(ja$D{tL zK(q{1RQM=bg7ZqHC)!mo~%UDT}$1*u0V8hX`0OFdLU$XBOmuJX|+^dSmQWqkv9rdBGVR7y42qFAC(=}R)+ z@_s0yQ)yZ%z# z9%{8>7RpyEOdft()^}Q^Dga#|>A)sM_fn`D@))T__UHx39~GpK(Es%{8dYhuR_i5s z;$DX)80Y_?>TZxGv^_vsTGFVrdc9ItNj*m;HB#5rD~c#eX%t?_xhTt36Q@{)G}x3; zzd?CPIw{)z7+)8XAIKF7GM}A>Aw##;*`uU!%yh@h>F`HA&D)rRVhYEW83@{0RIkvh z^jf3ASlC#sOzAQe%lJTb)iX6Swf5`k*Vk`gpe@iIIHU36#-BCb-S}kKk719(l(@G{0$GrVXF7bk4Ckzb&qy;r}#{A*DvE#CU;=93;dVl>r}2(kKkf+o01@fEs+F zFeSP}&4STR9TOcb#sN+~!qomOd38PqI0m0qFN8lW2}Q-wj&snmL{ zie-)Rv^ofjmgTS3Y4s|dLZer*LX;|K3cW^WKzFjF3WE}#anc(!8i`d}W6(-!ty-2xZC%u&=skL&wtl~#lPHfT|A#zVAK zp;0LndZpF?Mkv&rNz`baR*M0kQiCP{XsB)1}gAZzqeMzs^qA#E%P_z&vs1TJ7J*-iy zRp1AB4yK`Uyd$6|w0i1sof18y1^dB0M33w02GBtjO3=f4j5-yfYiOpR!KTEZ z(x4|H=p?$BV8JeoUC0fTp$`0DJi;uXLyL6~DJII`9Yzv{BV-8u3yr|V1hTHzLnDyX zK(wjTA!5)9Xb&VCt>)tu!f!x3A(*5ZNP-~^7`l24ARQDZMu#js&>~C4c2sxDiuVD&g-wL4_(=GYERj$dY`JQd*AB}K~%gSFu(7_^ZU}4UjBY!osz|l zbiFntHM#v6ukSy)m^}20>YL(^Z18DVvSOd}Et(aHbi^L8^*CAj(M#)ZetUX6KYG=E z^+EE}(~qu3J&({x*ISiqt~yih=Yy|KVkL+d5sxf9TKY}uXIEccV04$Od-mmR9`5+# z)m27&UK(P4G`r`%qItI%-7GI_)&}ph)BW@AGkV;@9zlNnx}9&G_mt7wj(@sg=K7&a zEO~j1{$}dKs>7=+{$*62+Ck+dMT`iW-R|V)bMrhI-Rt!B{+Y#^joqAAg3*n7zUtI) zj`6E+@+vU8%lx*DQ+}B{>*qWlMjvfDw%Rx2)4!8m`!o9Ky#4b|otdz#{OkIRzP-L? z>G>Y@A2oR0jL|c`Xi)Rjz{X#6eI3r|;Ls!AUcYcGXUOZ0jNWzXd^z9n9}kaz9m(jq z$E)o=y>!Tj%U<_mbk3@n(LRamf7tapj?sTyi7NbF{AZtBe4WVX>QBDD_Th`0zdw4N z&gd`gj&*A`Y}@AX=6yy_ZU26vCMsrPwKqA8jtD$hKiaY9c<7sHjP6l=*X(KIJJ0R& zW)7qGj;WFAGyLWC^f!wcJ@d=kUoPEy{nMFmRx*0d==4cvqSn4x`({0(&n#Lq^TX8e zorm6RW%Q7eUi)7>)=#E4|~~7ToB=rMsoDU^HQiPdl(O&RGWHfzF6?h`V@;j6X5!5C1x1 zgNl7P3cE0dIWI;u3C*s=J{l!STT1GVk2*c?Kx28mn%eJ|QK##UnHeGZv*d&9_dZ+M z_}hy~Qhi3ZsA*aC$Zl;!FNbr9l8*-BKE-wDV&9`*>G%HW9zj|d!>$y{=xcL zxf%MS}WO^Copv9%A&W5&h0DI&C@` zuRO`<>k*Yl{obe4{A}d~MmG)go_BTIvYU&PR~bEb%TN6x&Rt%!U3rVq&B9l&y!`&6 zS7(*?8Ep(-xw>P=VY`1-K4o;d#bMhY&G>ApR+YzS|D0Z*8XtL|HDOvNj~YR<@7-Q$ zTokPGWb_ix#miqUGT!N-D#62_2FF}B`K?b?Rbce^Gpk1q=n!t7s`6oU?H|{x!fsXG zze?rL=$Vf20d*D+oN+)^pV8(or!8Jmy55B=s%DH{TmGl5AN)}E<7cXHMqeI&eOL1S zxxad;J2IO7U_Xa8gQdGLUTDvM*#z8MZQ&)^=g!Ar-ZPDa>nZ_(0oGR5+O2BWuGQJn z8DEnP473IYwhF8f7*w}j{RRyiHEv>wiN)93`ywMeo&YsqKeYD&z(D}p!x@GBiKZsg zC=Y*+(WcRUe!%?$M+E*iA1ab9w5iOmP?mG|0`vC&)<-gLS%XnuPb`MsjbW4Idtl$d z!ZH6wN#{0%EsnJ;EDxO$7J<@3Q%G3^@BbE67Sj~3P(o2sSz1}Pa0N|8y*F01gVjTn z8&#W?dz5FC=ad&bFB&c>zf)dOo?!53!9Hoi%0Ux{aF-oc(-b za>|d_J{(YGlt!hlt%_GE>IB%wR#XLfRZ#mFDrstI!qr7;+Sh4))IMrIef>h6RrNiy z8yQM@=*tARYNCqO8v;vdDyzzC6k(0k9W-^+9qf~+Ulx`dZqnrccZG2zrJRva@8x8C~fGBqQVQ8)p=;!>U|9vg<6Ev)COxjwB2A1 z8daJ?z4gk9F_qftJ?x(jsM4yChqiF>rdkhei3{EIpJ(wDyJLzE>Aj6;=&bM`=CP3NKG}W3<;# z@2^&dWJh{dRC#C`>ngzVwf~ueg$J!DVA^W+Izv&93WdsgmMd&5;_0O}s)`jWZYZTF ztuCV|t171}uc)B(E@e{HQq?XLpa@h4DeEd$tJf;msXx>IseGk*t$d?$7&eT^oH~6) zV6XS4PMcNX$0A-GI=;#as1w?+f7H#K=`&`3uy*sV-G`4HKXL8WZ3m8sX#g~88r-~H z`~EpI5V&>M?jt8opSg8gat@DR8Xp7VtU0q6EjfPrOyQz6ng+LO*Q;;80a0<*>9f}& z$>HPIZ{2=exM-_(aaMcI7kl>YzxdtbC*#IXUHR$0{fCd9x$;BX`Fl?tIen&G=Ptc^ z4~UvPW9H`VJN6$ua`d~RrAqhh_s8=$4tvtjYuAf-C#O`X7&Us#=Nmii-czb{CGXa4 zI(MN#GA3)=;R_e9K7R5n%{DVVV{Y|;I;%JC*njlQch?t6Ve{q(&h$Qg=GzOW9i6-M z>8sOw8GY+Ke3YEhsCj6MRJg{`ZDi-TDl_%D8_z{;PB{iLO<#oNV z{wnR+RozmB4M25Kt(Rw0b;W8?rX=;?YW8EAv71!ov}0eZdh1FV${0xO24jen)ArWY z(zN#QS3@{dL52L)<+O!V_Voy=6J&p?Z>I86gmS(J@Xc>K-qP10(y()Xzr>Vy- zELEuFq&b>8*wa!LDPyqjtCH?%zf>;UsIlKL{PwY`ks-TZ3Hz6N`;R4qRUX>L`qp|+ zZF-?fsy^!82K%@&6+B8AI;!ncw4bf?EUgY&uFk$vUFWIM*grL9JcWB&9`;UjPURBcfyebw^iU#De_*fe-r(v0V(BDbGC4t&#P>D+$fAL+kn zu(sQPdbRiNt=eYKmiSszuZ=DKa|8Pb{|&>|_Xsq-Dm69ehuK`^hcN?97-jc6~=}_b+ZN8+rPp$=M$o=A8TWQA?Y5xprk+ zy!v(di$X6C|NLtSnn!rsCxxq>X!%R3_P~iB z;(AS}d1|g-uK|NU(5f5nDHig;H^aW?xBJi3jr5u$L*`AtJM@EPzXlAdcO<<1gy)}( zc`s;U-|!DBR?dAj_~Dk39Y6m3^`NwpU&ht=ewXH#=-y%hy0_kp8WVkXrhGOeP#bgb z?986IFETG|Kfh}3ggp~?Jvp=`vCQ!KlUKH#*=)^cHEING&z*Q}&YRCpm8(~+U7=l< zuMVA7qEN-GsRte}O({Ra&lovl&2>xM8~Q_6%aT7X``~VPb_$~PuI2eh~1ksdPMflCCxis(r>YREL+4)~e>k@Fm6`Ly%9CR| zJ(zWD>GaE8o6VbNEp|HVlVyI}cIlpY-S!;)`pw*fQ74b3#jI`jAfl33V2||LU3~G~ zyVW)u8a{7+X5G^D_adiRW^W!|ahfWl@VJkTmi8I^Xy>yf7ptX&e|z?)kuNK52p{5S z({vbqc<{KG)AtwEz3jf5(J<`~91Q zR`^x9V#}PhmwvBX;=AXgbX|U0HEv4o&WMwnLNA|ucI9}LelvYGymxnyWARL{ur25I zeYD_m!^B3jmwSJ;)1Wt2t^LX|GrZ0CZBtg)_4D+&@Y&0kjx8k@{CqR9TWH;xp2tfC z%NqzkeK0WV^6KWFw|}+t>3rYt&5MVdub(M;YC*+6j|OE0ee~nFi$%X{*)uGxdtQaC zMcs z?23_=I-Yb88zgJDHjn-~ba+aY_l*m-lsXkR6V)WVSSA3panG^g(Y&gBA z-*HLb{P3^`**@D!m;Po&@`*Ul4%3E34qB14;>W9_zcIWXeWrh%IcsrTSEyuU|2G}q z@87aP@XPZzKD}LidgPxUZ%iuJUU7KTp@qh!shjS7d8E8y`C{|-g$)i|I5Mq*&%hTk z9geHMja7X8B0TTA*~7vXRXo$bMeMcQ%!cv?*R2-MishB;J^xUxkvCfIob%g~55Fiq zs&7h2pT74KPyD`kUW>(N9{MlPtPV=^)$a|=*&8u#T+I=VBVG4)4r+hD+3ov&aXt-t z?tihe;kf~y7jNw~XTiRPH$EC(eqzq}KNid{U3_O~a!&72J#PBluAY8i%#Xe9oSA&P z&Xr%v)e{?Pm4`j*f9%`Gp|Sh=XbY{{vvqC6kc^SK2VSp|o*eCT`qvwC{Eigs-R|!B zy|?~Y{5ZPa^nRCjfA(GNp>g+@)Ia3k#J*|EnRRnJWlrBa@UZ#W@HWe?E*sY)Z`pT` z??;z!_i~;8t;ykO+m;-fQ0i%um_<7-HtN6r;^``fGyEz9i4DA|V}~^Sux{+=J#j;y ze|&z;gn2(R)@l zUwh3yE~(P<-XDL{rp1U~3r~+IWm&2JIsNhYeV4oUjPI6uw{PaDsoozX`UcDz_{a6S zt%qJ7V&5L|!zbTY*d_fgZy2uh`}Sm!m3QrrM{j(6VBDHxr@qkIi=C=s`CmPqWmHsO z7l#KVq`Nz$TcvC07AXOxK~lOwy1To(rKC%cj-eZ*ySsS@UihC6!?Vx1cg=!Nto?iT zy=EE&d=)vPH=bH=NxyiQI_crFb{*t(q?GeO+p@E)_TOnYI}}Bnb)*Erpo!egweZxJ zU`KPZ&a*csR1r?Kuz1*HgKvW-A{EiVOzRaz>+g( zgdS#qLdn7VF%q;uEtUVOld`rx}@D5jTHYvM%o3Q374i?X1^w9IiAGoYVyjv6P+)kIz$ zIis|Wr|lkQ^f;xD(0AWg_xuvRXmm}+eWX=Nj8=+OzuAr zzesr56--t$Lj;;C5(AF^BvJQwY>3RS*XCoPXrIT`w_Ry+qZZRH=AzA^*Ht!c9@Sh( zjAPlVpiD;MeE+vgR;vHut0Vzh>`R0B!(Izu2C1U&mgms8-CwLuDE~n4(`OC78+cQw zDq7VI^v`r?*}2t-^Be6eDEOD*#nufwzMDtl(HS;#(MxAlDk#PVhGhF{bpi6Db+{)> z42m86e~gV-Y?Q6NZ9c_^++uKd;|c+ZK|6B#@)XU#ZW7*Jr$vpdd%rZaxmu-a#V$qv zS?6mE#dSyrde?@rg){`4enLC4eH<@WWES{424+hv9qZ zbxXcEXCs@CbpFynZ`fTL9oFXmQ#DeHdLR%tP(YOk3w<5RO479+vkhu|RIqfH6mvMf zA4^8LKh~K@f1h`_AG}lZ(Bq}(YTnS--4<@T&6KPE;G$WMegmlJjBcvn7UBob(9-|4qf{o9)M6JT9Y#r^I&_AD)N)(K{o)5eV(8^1iQ$GqtIxbgjs{ z3TJ7~SZmUE6&qeyoYNS-sB$e?L%wK1V#o?IE#ww*J{mMljjCcotCcG4QtTZ~F#F>t z;-Kw3p`SWkTi^oQ+HJM<8c0}6mg-LtilZ@VBzJdRa2JA-r}>c95+^KBb-YUU~o_^7vIiLU6{w`95ckW^FXUh z&S&FaM;q{cfY4J*K|uZIN0_$-R3GR(9`!OWsX*oP?XZ0cF9FE!Bglp5s=zx#*JB{3 z0K?r%iSW21X-Q+-K0B>(e!SPYV3!2UG_V-!Rj^2ymNB9U*4Ez zIAE^dlpRx;B1DmI?Em!*h*e9gpWWXR4P!6X+D=xqyT6324#2G5#f9vjL-Q;cz5D%U zxd<c;G7(?dC+>D5Dn81fx39>${*al`0-k#)m{!t4PEwC*$g z;B-w~-CzGW%AFxd|EbB(bE=jq^P!;CU$O`FVuk&ze1olyGQD@|jPYmR43aRbMuxz~ zepe%swG$zqeB^6@MHe{~uP2jZ=Q!Fvx%$WacDDv9dtM>LNo4SzLO(^6_ z7IY$nn)-SkiBpH>h;|7JP5P6r3Yr2b{G*Az>Qj6K_L?$IVm5^ZQZodamGb4#4!zl~ zcUp=;F%+TVJ#UpTf(oc1Jsm4BY@I!aadW)vaEO`s;2n>Pr%G81K8yLt`i z9#skS`_sY*I%h`@*cpRM1enSB+{CO`93uUTe6C8TP#R4Jh^CRh?li>gC^QcEZCAIa zql<4RsIoG_1JgteC7>Bf~wbL3jO)QXJ1 z$f;#zLndE?;YaoDpcZ@V6hze3y+lu#LSb5>e6eoP4JVF{RwfVlaR1i0*zBj6YWv1b z%8Dt=5ZmRb57YehtE1wTS&lFIXAmW81@->C;5&t$Q6%BanupvaGK-|zf!rAZ0Y_Id@e1yVUq7=XZ;^QuwJiI3`vkYI~-$*icNwk-RgFygBEMtYPRjgiW0$dT?l z<6X4*pkD${6M5I#pGkEgt59E)oP+Aageps;!n98v2)m92@%9ZX$B5N9DmjmovpJX| zwYDJs1$<}jTof}i?OJJS;9=DX#>(L1kuIU2a3C-%4Eo7chW{1`UNe5LSed+Aaeuyh zhD<6VNB-6f|P zTP>wK8_&Dv!;gk=$aAdTtg~=4+$>F<7dA1t6I5EU*AT-cT1s32I+60s-N#)tJi8N? zW~dtSoEoz9j{)s?u-;*6UTO(tg+j^}I(fg#1Sy=%%-Z^zk@;VO7o<9^B~0@`?>RAtjs^|5}N$nyLrKz zTY<+;WDv6@N%*6ab(~4mU+SQ!SU}Q`KQUf7D7?_Mb`=bl4IY5rV=lb~^x!T^#RHdF zTloy4cqq-jUF^Gyv7MIy+4sCDkFfD9AXg{0=BE_#-Ugf5@ai@zJ*);%RMy{%rv35pQN%#5mKMTbT5hl?hdIeLpy_`Jtj9%}L~8v7t{;jh`w<>@ ze@RYpVdWZ!U$#u_HxE5*%n`~4s3VKm{EpA9W(R6n2C}lmUIoA#vEB{o_@Frq6!W__ zu+t;8-!}<4uTR9ZPRbG(L)k~L@%=V7`vu+1;fGrBr(H5hAdkXFoIt#!Ghd0w`u)5I z2!;M7ATP|36U5Nz7~}c(DKy?3-Ft_M^=%2Ex<33=wk03+w_S909T(F+T)CL z<2L|!`dnnN7HX{mfZoebCs3`u1YrPR^mEb4)Ra{L0A@WEFoNKJz7Q4xz{=-pD-epJ zI|u-5f3E&-1^|E~PZg|(Gfpkl)HDFN{9Hzqn6o+h`2&E*&t>%&cmZsqLIBWn1$^-o zW#<0C5JCIc%iju+;e#ot^I6U3weHEqi>S}F$bGH3QAp3I!~4M_9{*pj8p2B{xQX1QUaGSAHc&0P{KX&rqJhxqr8gANC1v_v!p?F-W6@12kMW zav1egulHrDmx7Hp>aJq&=nOzGjZf+ruUojQyf$tfTn|GJru?vY(Ja7q76rg-E%X%l3jA$B3?5kv<}7KMy38M!z`t852PwjY=ptlpDj!)00Ptae{ESL;GFBKFI+PYX z!UJ@tuds}haT)(Cc62%m5Jc0mUqIwV8KgX=x1SCG^qAZl!w2Ll0uByqqLGUM&Z5px zNIPM#T8GE`oxjaE$#C*ybL#>*Kh(rU}6_C6% zX!r*Rc)41A_LwfR?};An>6Jqk=!|@P)!H3vL_T#wmW^aWkEg(R`HQO&ayP_cr$0i( zK0WX1EcvZT$2&`e^@r*SMe$+w6UbMMB*GwuK}dHBVzS61_3((i``oR*c9dIID0pJY zhrV?8s&X;kz&~(l)WH|=Jvd27X5I}*KT{sio5%w_N|HFX-@Y^LwlZzy4T|V+C#1$c zbv_j3k`p@&R^grnSxxW9m;CNuJqosq-|HC`4wKt%#>s9W+&@s@d(~DJq!088it=Ty z2yZF1L^Wef4sH1h`?kW_*SHR9Chh7)=+VOz?^misG?g=0&;T7Fo=EwTbdK}ii=G#iw9+sRP|Rz828-!hmytJcZ`^=j6od2j%IAeAI;;g zUAShL>Pw)M;$Yo7+9huY5>U3xWb-_PIAZdE6i9QkEi?ejI#WEeN0QINMy zl@uTj86oYkz5Po+Sxi@sG(8#t(Gig&0Du0f<=iYe&2|}5IVpf25K+-rm&2)s8(9Zo z`GpEp45xX&G3aNZ`I`z-X5UcHW18^D28%bYa3#e#!0nL5unjW+SPs4fMUEq zu{96p@&F8wq8$uu&z*%CZdP!t!{Z_9n<>) zX<3-bo!G@yhs3Bmr*hk%&h#-~xPB~3 z%Iyz?JpqoS-wFT1N;I1Tfz6cSn<$-tRk!%cFEtE%k$d~9%Ze9m$(nrs_E$L!YYb_b z&CU{4$-epp+a7oUMwgtL{jJ){wvP?V(2BA>VAQ7fwqG=-*q8xQ2@B+{N>#szhY!Gj zg?V?(P-r;T#e@70{9d1nu*TEXj>M#!<90^=46dw?Yww0pzmM=hc znSxf{h(4OOvLq_z5n}n(ih0lZU_Xi-y1H+H^pXq>aP`qQ%(X(W%03-?y0vKwguC^B zl6=vsQja)M-fOn35-Jx%cp$>{cQU|^wVs!L)1$+N%=pxQe{tE<&1^Gc<2EY`@fR&U z?Ivkq{(jSthUjx9#K%dot~v-TrTb;iN`qWDq4wbEODZA!LRWQi5-nIUW3?}vNvg)> z+o6tj?>PeFJD3?W|CD(X>Q_uE0DN9FuB04_W{nWTHa5K>dD&gj_$4v+xQ1H6tH)c2 zT+;72%?Z;TJcaA>HIL3hLj?jFdo4rNK^P?K+5bYeJ$l6(qB$Tc*v;Nsbm1IPEH};+ z)cF84M8p9Ibwqn+Gjyn98|#s_SZZxZc~KZ^-S|7g5zKQ&r5p)8{;%5DEm}u{XiEca zjHc3bFOkWz^W^En60@*JeTrWqkcT5wGl;^mQ?P6# zB=-9zIv>63V7DZjH$>bw^TrA~>mhUU;B-^WNU^mtBi>?g7`+)p332Z5FPLN3S6??J zCnNU=jAxitl9X(}FJFW)Eu_mZYpz8tN}fA;)#AEK)?;G4qAWtr8o6r=gl?{JNE)~( z9QvmmfBRS$8mHWvD`G;~(>)?ht-J$a_;fT#8R7Y2oIi|&d_8Q(H8?ZYXxI9#TImMK znKzi_Mqiv8gzrAd|TvW*s8(QP;|fv^1fE2Yly9U(eS)= zPF!r&V;24e@Nt1(xZbdKeUOA^bsdAV8zMeZkG`!@R|KIl$l-i|UN=BqT^z|>1^-8R zNw=g3XTzO76T1dZTb9){!R1R#>OU=e$&^)ux{P~YH}(CW?Ypo*-V&LpTz+Wl*c5+UXYS1l0?1B;=64rXwm_O{8E!L z)TDfTm0vljFf@;ss54NrF&>{Y=?VPEp`0F*iu{G%Y8;J<+(yvQi+*VZ#uh3{*_Oa! zbALRs!)9cTx*6O078xIy93WH+$Kk5oS7sMQ^W! z1T~($(OfgUj`?{mB3=JW$Mf8=z2RVqfM}i#J1w7}A(IWq#+YtKS3kNn**7warte`M z^u{jS<)`B>$jy)am3RE(9U=-gv)_tKb;==H4^#8?Z%i-(-g0B(ITN;*nRX7}*NNg5 z1-VTYrp zs^B}><%Bo+ix~feFuzt7+0&ki3au(BjP02B?By^~rsfL0v|Pf$bU9O8Y4p{NtrMDoD|&J;a= z?2p8TKb`)BXj>dm3j;NwH$54ciF4x>@R3>M@PbhZDMUSL?&wmQvcIK^5r=D9-n@I& zV2LJCeDupim?+(B77ML%LPysFM<4cfzLjdAs$hm8Rfuab`12RMv&FTGF-<&{U%+#? zq>)2s9%1g~U44vG2(l(^J1e9y>%Jo0cnrP+Gba z=XLzHy=s?_>2C$^`C;#-#NbuCMUu?~=5yh?yJir6C=f**lh1%dN0V42mR*Y^4W!@k zW`hzdhToTp*4C&oGObz55%9%Pku4y)sy|y5f>|RP3j3Z~td0JT{nT-2+q-Pk15aDX z)Rlhf4-1aa8l^gHCdn1L-`5M7%DWT=qB0iAUh0~7!;|+*i?5n*MfOjKL%{^>+@LL( zw@koPIllw#SQ?Trxzen+K~9l>SE%Xg8&2|$vsC+o_NIQH&sEqO8vjBqGr(z`Jk5(t zq&+NH%KXt+BCudSP>y=hdP+B@3J-UW6BZNnI3II*Sbh$BC?kEhFq2Y40?&698+NUa zh5D;m3gtyBKIUk_AIJZZilH1jqV-R4XTS3YS)fjj4}g}#uQSHt{0zpLM0;`In z?@b=@gh4L9JGm{L^5RF+=x;RdeYL3l!(#)uCsf{u)!Cf5=W!exoi@+~2EA(2zKp`< z#&-0K$(0v|Cg&JlHg~khy0kngLRx1KohJ!d;V#vY4X2Xc7!FoK_RIqPHc4dcg_eYr zQ{zZuinquQs1QZoV<8m#Fu7ZLm>RulMS@anP@L>%5<@GlYSk`X6T|cT&|Sh6vz`R= z7Mb{0@X#?~ezh?RG%uPql{XX<}y zQU-tbpueS_-3G?ZU;9*F>@#|3UtCvw)*o$DK3g7SE1GQa9 z`=X(X3^u3Vi0Uc5KkjQlp=Fzj6)Y8Z!f`EZn`{{`RCD*!kQf*!4%?Ts3^|a*WFaZA zRex+%IWhVc!ff&l?~ZB|jrGxDkICDnR-=6;Ttn5n*zK`X@t(Ek-8tLvsV!5EvZi}& zfh&K5MWw)B7If~x-H%%9qXa`VuiAT+=U0&4h=fT=yd%!Kr=dJ?0vdQQtOC0?58a_&yRH- zJpl1N4`x639$j6TWud&Yn>JNyokr@x=AX@=f$hzN6vy~F!U;|fh8NAgL#25`4_m}RqL0q-^t&BL;3PF>Fy0h3W$W(254Yp0MKzrNf1f3Ne&rE>FHQ9=q>WJ z86XRm7>I9|7y%EY>}ikM?Dr7M>=5u|9F$1Q9L2~wT+F!3Tr7mkQm4era)KW+6^M0~ z6^~4Gls;K3E2TE+C<8z`Dh4B&Du7wCFMy>?)v^^b^}V&_uftn9-$(%m-;N;MHNelh z^7{*JtdW7obv^u_h#X7_|55pW)bmUf;M1l5=;}X;2za`e5`0?lOi$Of{kJ#$-`>%G zdjWw@cRXE}@gLPa(>w6q@PD-ROjO`KkD#YJo+#lzs(vO~@Lta|(Sd2{ndrfE^-K(4 ziU@wXmk~@Q&%^|#wr64n)4&s7W1r literal 0 HcmV?d00001 diff --git a/extension/vendor/rollup/rollup.browser.js b/extension/vendor/rollup/rollup.browser.js new file mode 100644 index 00000000..19ff86d0 --- /dev/null +++ b/extension/vendor/rollup/rollup.browser.js @@ -0,0 +1,10 @@ +/* + @license + Rollup.js v4.62.4 + Sat, 01 Aug 2026 05:20:25 GMT - commit ddc4ffab628944e45dbb8d66d58aae818015440f + + https://github.com/rollup/rollup + + Released under the MIT License. +*/ +var e="4.62.4",t=",".charCodeAt(0),n=";".charCodeAt(0),s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",i=new Uint8Array(64),r=new Uint8Array(128);for(let e=0;e<64;e++){const t=s.charCodeAt(e);i[e]=t,r[t]=e}function o(e,t){let n=0,s=0,i=0;do{const t=e.next();i=r[t],n|=(31&i)<>>=1,o&&(n=-2147483648|-n),t+n}function a(e,t,n){let s=t-n;s=s<0?-s<<1|1:s<<1;do{let t=31&s;s>>>=5,s>0&&(t|=32),e.write(i[t])}while(s>0);return t}function l(e,n){return!(e.pos>=n)&&e.peek()!==t}var c="undefined"!=typeof TextDecoder?new TextDecoder:"undefined"!=typeof Buffer?{decode:e=>Buffer.from(e.buffer,e.byteOffset,e.byteLength).toString()}:{decode(e){let t="";for(let n=0;n0?t+c.decode(e.subarray(0,n)):t}},d=class{constructor(e){this.pos=0,this.buffer=e}next(){return this.buffer.charCodeAt(this.pos++)}peek(){return this.buffer.charCodeAt(this.pos)}indexOf(e){const{buffer:t,pos:n}=this,s=t.indexOf(e,n);return-1===s?t.length:s}};function h(e){e.sort(p)}function p(e,t){return e[0]-t[0]}function f(e){const s=new u;let i=0,r=0,o=0,l=0;for(let c=0;c0&&s.write(n),0===u.length)continue;let d=0;for(let e=0;e0&&s.write(t),d=a(s,n[0],d),1!==n.length&&(i=a(s,n[1],i),r=a(s,n[2],r),o=a(s,n[3],o),4!==n.length&&(l=a(s,n[4],l)))}}return s.flush()}var m=class e{constructor(t){this.bits=t instanceof e?t.bits.slice():[]}add(e){this.bits[e>>5]|=1<<(31&e)}has(e){return!!(this.bits[e>>5]&1<<(31&e))}},g=class e{constructor(e,t,n){this.start=e,this.end=t,this.original=n,this.intro="",this.outro="",this.content=n,this.storeName=!1,this.edited=!1,this.previous=null,this.next=null}appendLeft(e){this.outro+=e}appendRight(e){this.intro=this.intro+e}clone(){const t=new e(this.start,this.end,this.original);return t.intro=this.intro,t.outro=this.outro,t.content=this.content,t.storeName=this.storeName,t.edited=this.edited,t}contains(e){return this.startglobalThis.btoa(unescape(encodeURIComponent(e)));const e=globalThis.Buffer;return e?t=>e.from(t,"utf-8").toString("base64"):()=>{throw new Error("Unsupported environment: `window.btoa` or `Buffer` should be supported.")}}const b=y();var E=class{constructor(e){this.version=3,this.file=e.file,this.sources=e.sources,this.sourcesContent=e.sourcesContent,this.names=e.names,this.mappings=f(e.mappings),void 0!==e.x_google_ignoreList&&(this.x_google_ignoreList=e.x_google_ignoreList),void 0!==e.debugId&&(this.debugId=e.debugId)}toString(){return JSON.stringify(this)}toUrl(){return`data:application/json;charset=utf-8;base64,${b(this.toString())}`}};function x(e){const t=e.split("\n"),n=[];for(let e=0,s=0;e>1;e=0&&i>r;){const i=[this.generatedCodeColumn,e,n.line,n.column];s>=0&&i.push(s),this.rawSegments.push(i),this.generatedCodeLine+=1,this.raw[this.generatedCodeLine]=this.rawSegments=[],this.generatedCodeColumn=0,o=r,r=t.indexOf("\n",r+1)}const a=[this.generatedCodeColumn,e,n.line,n.column];s>=0&&a.push(s),this.rawSegments.push(a),this.advance(t.slice(o+1))}else this.pending&&(this.rawSegments.push(this.pending),this.advance(t));this.pending=null}addUneditedChunk(e,t,n,s,i){let r=t.start,o=!0,a=!1;for(;r1){for(let e=0;e{const i=s(e.start);e.intro.length&&n.advance(e.intro),e.edited?n.addEdit(0,e.content,i,e.storeName?t.indexOf(e.original):-1):n.addUneditedChunk(0,e,this.original,i,this.sourcemapLocations),e.outro.length&&n.advance(e.outro)}),this.outro&&n.advance(this.outro),{file:e.file?e.file.split(/[/\\]/).pop():void 0,sources:[e.source?A(e.file||"",e.source):e.file||""],sourcesContent:e.includeContent?[this.original]:void 0,names:t,mappings:n.raw,x_google_ignoreList:this.ignoreList?[0]:void 0}}generateMap(e){return new E(this.generateDecodedMap(e))}_ensureindentStr(){void 0===this.indentStr&&(this.indentStr=function(e){const t=e.split("\n"),n=t.filter(e=>/^\t+/.test(e)),s=t.filter(e=>/^ {2,}/.test(e));if(0===n.length&&0===s.length)return null;if(n.length>=s.length)return"\t";const i=s.reduce((e,t)=>{const n=/^ +/.exec(t)[0].length;return Math.min(n,e)},1/0);return" ".repeat(i)}(this.original))}_getRawIndentString(){return this._ensureindentStr(),this.indentStr}getIndentString(){return this._ensureindentStr(),null===this.indentStr?"\t":this.indentStr}indent(e,t){const n=/^[^\r\n]/gm;if($(e)&&(t=e,e=void 0),void 0===e&&(this._ensureindentStr(),e=this.indentStr||"\t"),""===e)return this;const s=e,i={};(t=t||{}).exclude&&("number"==typeof t.exclude[0]?[t.exclude]:t.exclude).forEach(e=>{for(let t=e[0];tr?`${s}${e}`:(r=!0,e);this.intro=this.intro.replace(n,o);let a=0,l=this.firstChunk;const c=e=>{r=!1,e===l.start||(this._splitChunk(l,e),l=l.next),l.prependRight(s)};for(;l;){const e=l.end;if(l.edited)i[a]||(l.content=l.content.replace(n,o),l.content.length&&(r="\n"===l.content[l.content.length-1]));else if(t.exclude)for(a=l.start;a=e)break;r=!0,a=t+1;continue}const t=this.original.charCodeAt(a);t!==w&&t!==N?(c(a),a+=1):a+=1}a=l.end,l=l.next}return this.outro=this.outro.replace(n,o),this}insert(){throw new Error("magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)")}insertLeft(e,t){return k.insertLeft||(console.warn("magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead"),k.insertLeft=!0),this.appendLeft(e,t)}insertRight(e,t){return k.insertRight||(console.warn("magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead"),k.insertRight=!0),this.prependRight(e,t)}move(e,t,n){if(e+=this.offset,t+=this.offset,n+=this.offset,e===t)return this;if(n>=e&&n<=t)throw new Error("Cannot move a selection inside itself");this._split(e),this._split(t),this._split(n);const s=this.byStart.get(e),i=this.byEnd.get(t),r=s.previous,o=i.next,a=this.byStart.get(n);if(!a&&i===this.lastChunk)return this;const l=a?a.previous:this.lastChunk;return r&&(r.next=o),o&&(o.previous=r),l&&(l.next=s),a&&(a.previous=i),s.previous||(this.firstChunk=i.next),i.next||(this.lastChunk=s.previous,this.lastChunk.next=null),s.previous=l,i.next=a||null,l||(this.firstChunk=s),a||(this.lastChunk=i),this}overwrite(e,t,n,s){const i="object"==typeof s&&s?s:{};return this.update(e,t,n,{...i,overwrite:!i.contentOnly})}update(e,t,n,s){if(e+=this.offset,t+=this.offset,"string"!=typeof n)throw new TypeError("replacement content must be a string");if(0!==this.original.length){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}if(t>this.original.length)throw new Error("end is out of bounds");if(e===t)throw new Error("Cannot overwrite a zero-length range – use appendLeft or prependRight instead");this._split(e),this._split(t),!0===s&&(k.storeName||(console.warn("The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string"),k.storeName=!0),s={storeName:!0});const i="object"==typeof s&&s?s:{},r=i.storeName||!1,o=i.overwrite||!1;if(r){const n=this.original.slice(e,t);Object.defineProperty(this.storedNames,n,{writable:!0,value:!0,enumerable:!0})}const a=this.byStart.get(e),l=this.byEnd.get(t);if(a){let e=a;for(;e!==l;){if(e.next!==this.byStart.get(e.end))throw new Error("Cannot overwrite across a split point");e=e.next,e.edit("",!1)}a.edit(n,r,!o)}else{const s=new g(e,t,"").edit(n,r);l.next=s,s.previous=l}return this}prepend(e){if("string"!=typeof e)throw new TypeError("outro content must be a string");return this.intro=e+this.intro,this}prependLeft(e,t){if(e+=this.offset,"string"!=typeof t)throw new TypeError("inserted content must be a string");this._split(e);const n=this.byEnd.get(e);return n?n.prependLeft(t):this.intro=t+this.intro,this}prependRight(e,t){if(e+=this.offset,"string"!=typeof t)throw new TypeError("inserted content must be a string");this._split(e);const n=this.byStart.get(e);return n?n.prependRight(t):this.outro=t+this.outro,this}remove(e,t){if(e+=this.offset,t+=this.offset,0!==this.original.length){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}if(e===t)return this;if(e<0||t>this.original.length)throw new Error("Character is out of bounds");if(e>t)throw new Error("end must be greater than start");this._split(e),this._split(t);let n=this.byStart.get(e);for(;n;)n.intro="",n.outro="",n.edit(""),n=t>n.end?this.byStart.get(n.end):null;return this}reset(e,t){if(e+=this.offset,t+=this.offset,0!==this.original.length){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}if(e===t)return this;if(e<0||t>this.original.length)throw new Error("Character is out of bounds");if(e>t)throw new Error("end must be greater than start");this._split(e),this._split(t);let n=this.byStart.get(e);for(;n;)n.reset(),n=t>n.end?this.byStart.get(n.end):null;return this}lastChar(){if(this.outro.length)return this.outro[this.outro.length-1];let e=this.lastChunk;for(;e;){if(e.outro.length)return e.outro[e.outro.length-1];if(e.content.length)return e.content[e.content.length-1];if(e.intro.length)return e.intro[e.intro.length-1];e=e.previous}return this.intro.length?this.intro[this.intro.length-1]:""}lastLine(){let e=this.outro.lastIndexOf(I);if(-1!==e)return this.outro.substr(e+1);let t=this.outro,n=this.lastChunk;for(;n;){if(n.outro.length>0){if(e=n.outro.lastIndexOf(I),-1!==e)return n.outro.substr(e+1)+t;t=n.outro+t}if(n.content.length>0){if(e=n.content.lastIndexOf(I),-1!==e)return n.content.substr(e+1)+t;t=n.content+t}if(n.intro.length>0){if(e=n.intro.lastIndexOf(I),-1!==e)return n.intro.substr(e+1)+t;t=n.intro+t}n=n.previous}return e=this.intro.lastIndexOf(I),-1!==e?this.intro.substr(e+1)+t:this.intro+t}slice(e=0,t=this.original.length-this.offset){if(e+=this.offset,t+=this.offset,0!==this.original.length){for(;e<0;)e+=this.original.length;for(;t<0;)t+=this.original.length}let n="",s=this.firstChunk;for(;s&&(s.start>e||s.end<=e);){if(s.start=t)return n;s=s.next}if(s&&s.edited&&s.start!==e)throw new Error(`Cannot use replaced character ${e} as slice start anchor.`);const i=s;for(;s;){!s.intro||i===s&&s.start!==e||(n+=s.intro);const r=s.start=t;if(r&&s.edited&&s.end!==t)throw new Error(`Cannot use replaced character ${t} as slice end anchor.`);const o=i===s?e-s.start:0,a=r?s.content.length+t-s.end:s.content.length;if(n+=s.content.slice(o,a),!s.outro||r&&s.end!==t||(n+=s.outro),r)break;s=s.next}return n}snip(e,t){const n=this.clone();return n.remove(0,e),n.remove(t,n.original.length),n}_split(e){if(this.byStart.get(e)||this.byEnd.get(e))return;let t=this.lastSearchedChunk,n=t;const s=e>t.end;for(;t;){if(t.contains(e))return this._splitChunk(t,e);if(t=s?this.byStart.get(t.end):this.byEnd.get(t.start),t===n)return;n=t}}_splitChunk(e,t){if(e.edited&&e.content.length){const n=x(this.original)(t);throw new Error(`Cannot split a chunk that has already been edited (${n.line}:${n.column} – "${e.original}")`)}const n=e.split(t);return this.byEnd.set(t,e),this.byStart.set(t,n),this.byEnd.set(n.end,n),e===this.lastChunk&&(this.lastChunk=n),this.lastSearchedChunk=e,!0}toString(){let e=this.intro,t=this.firstChunk;for(;t;)e+=t.toString(),t=t.next;return e+this.outro}isEmpty(){let e=this.firstChunk;for(;e;){if(e.intro.length&&e.intro.trim()||e.content.length&&e.content.trim()||e.outro.length&&e.outro.trim())return!1;e=e.next}return!0}length(){let e=this.firstChunk,t=0;for(;e;)t+=e.intro.length+e.content.length+e.outro.length,e=e.next;return t}trimLines(){return this.trim("[\\r\\n]")}trim(e){return this.trimStart(e).trimEnd(e)}trimEndAborted(e){const t=new RegExp(`${e||"\\s"}+$`);if(this.outro=this.outro.replace(t,""),this.outro.length)return!0;let n=this.lastChunk;do{const e=n.end,s=n.trimEnd(t);if(n.end!==e&&(this.lastChunk===n&&(this.lastChunk=n.next),this.byEnd.set(n.end,n),this.byStart.set(n.next.start,n.next),this.byEnd.set(n.next.end,n.next)),s)return!0;n=n.previous}while(n);return!1}trimEnd(e){return this.trimEndAborted(e),this}trimStartAborted(e){const t=new RegExp(`^${e||"\\s"}+`);if(this.intro=this.intro.replace(t,""),this.intro.length)return!0;let n=this.firstChunk;do{const e=n.end,s=n.trimStart(t);if(n.end!==e&&(n===this.lastChunk&&(this.lastChunk=n.next),this.byEnd.set(n.end,n),this.byStart.set(n.next.start,n.next),this.byEnd.set(n.next.end,n.next)),s)return!0;n=n.next}while(n);return!1}trimStart(e){return this.trimStartAborted(e),this}hasChanged(){return this.original!==this.toString()}_replaceRegexp(e,t){function n(e,n){return"string"==typeof t?t.replace(/\$(\$|&|\d+)/g,(t,n)=>"$"===n?"$":"&"===n?e[0]:+n{if(null!=e.index){const t=n(e,this.original);t!==e[0]&&this.overwrite(e.index,e.index+e[0].length,t)}});else{const t=this.original.match(e);if(t&&null!=t.index){const e=n(t,this.original);e!==t[0]&&this.overwrite(t.index,t.index+t[0].length,e)}}return this}_replaceString(e,t){const{original:n}=this,s=n.indexOf(e);return-1!==s&&("function"==typeof t&&(t=t(e,s,n)),e!==t&&this.overwrite(s,s+e.length,t)),this}replace(e,t){return"string"==typeof e?this._replaceString(e,t):this._replaceRegexp(e,t)}_replaceAllString(e,t){const{original:n}=this,s=e.length;for(let i=n.indexOf(e);-1!==i;i=n.indexOf(e,i+s)){const e=n.slice(i,i+s),r="function"==typeof t?t(e,i,n):t;e!==r&&this.overwrite(i,i+s,r)}return this}replaceAll(e,t){if("string"==typeof e)return this._replaceAllString(e,t);if(!e.global)throw new TypeError("MagicString.prototype.replaceAll called with a non-global RegExp argument");return this._replaceRegexp(e,t)}};const R=Object.prototype.hasOwnProperty;var D=class e{constructor(e={}){this.intro=e.intro||"",this.separator=void 0!==e.separator?e.separator:"\n",this.sources=[],this.uniqueSources=[],this.uniqueSourceIndexByFilename={}}addSource(e){if(e instanceof C)return this.addSource({content:e,filename:e.filename,separator:this.separator});if(!$(e)||!e.content)throw new Error("bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`");if(["filename","ignoreList","indentExclusionRanges","separator"].forEach(t=>{R.call(e,t)||(e[t]=e.content[t])}),void 0===e.separator&&(e.separator=this.separator),e.filename)if(R.call(this.uniqueSourceIndexByFilename,e.filename)){const t=this.uniqueSources[this.uniqueSourceIndexByFilename[e.filename]];if(e.content.original!==t.content)throw new Error(`Illegal source: same filename (${e.filename}), different contents`)}else this.uniqueSourceIndexByFilename[e.filename]=this.uniqueSources.length,this.uniqueSources.push({filename:e.filename,content:e.content.original});return this.sources.push(e),this}append(e,t){return this.addSource({content:new C(e),separator:t&&t.separator||""}),this}clone(){const t=new e({intro:this.intro,separator:this.separator});return this.sources.forEach(e=>{t.addSource({filename:e.filename,content:e.content.clone(),separator:e.separator})}),t}generateDecodedMap(e={}){const t=[];let n;this.sources.forEach(e=>{Object.keys(e.content.storedNames).forEach(e=>{t.includes(e)||t.push(e)})});const s=new P(e.hires);return this.intro&&s.advance(this.intro),this.sources.forEach((e,i)=>{i>0&&s.advance(this.separator);const r=e.filename?this.uniqueSourceIndexByFilename[e.filename]:-1,o=e.content,a=x(o.original);o.intro&&s.advance(o.intro),o.firstChunk.eachNext(n=>{const i=a(n.start);n.intro.length&&s.advance(n.intro),e.filename?n.edited?s.addEdit(r,n.content,i,n.storeName?t.indexOf(n.original):-1):s.addUneditedChunk(r,n,o.original,i,o.sourcemapLocations):s.advance(n.content),n.outro.length&&s.advance(n.outro)}),o.outro&&s.advance(o.outro),e.ignoreList&&-1!==r&&(void 0===n&&(n=[]),n.push(r))}),{file:e.file?e.file.split(/[/\\]/).pop():void 0,sources:this.uniqueSources.map(t=>e.file?A(e.file,t.filename):t.filename),sourcesContent:this.uniqueSources.map(t=>e.includeContent?t.content:null),names:t,mappings:s.raw,x_google_ignoreList:n}}generateMap(e){return new E(this.generateDecodedMap(e))}getIndentString(){const e={};return this.sources.forEach(t=>{const n=t.content._getRawIndentString();null!==n&&(e[n]||(e[n]=0),e[n]+=1)}),Object.keys(e).sort((t,n)=>e[t]-e[n])[0]||"\t"}indent(e){if(arguments.length||(e=this.getIndentString()),""===e)return this;let t=!this.intro||"\n"===this.intro.slice(-1);return this.sources.forEach((n,s)=>{const i=void 0!==n.separator?n.separator:this.separator,r=t||s>0&&/\r?\n$/.test(i);n.content.indent(e,{exclude:n.indentExclusionRanges,indentStart:r}),t="\n"===n.content.lastChar()}),this.intro&&(this.intro=e+this.intro.replace(/^[^\n]/gm,(t,n)=>n>0?e+t:t)),this}prepend(e){return this.intro=e+this.intro,this}toString(){const e=this.sources.map((e,t)=>{const n=void 0!==e.separator?e.separator:this.separator;return(t>0?n:"")+e.content.toString()}).join("");return this.intro+e}isEmpty(){return(!this.intro.length||!this.intro.trim())&&!this.sources.some(e=>!e.content.isEmpty())}length(){return this.sources.reduce((e,t)=>e+t.content.length(),this.intro.length)}trimLines(){return this.trim("[\\r\\n]")}trim(e){return this.trimStart(e).trimEnd(e)}trimStart(e){const t=new RegExp(`^${e||"\\s"}+`);if(this.intro=this.intro.replace(t,""),!this.intro){let t,n=0;do{if(t=this.sources[n++],!t)break}while(!t.content.trimStartAborted(e))}return this}trimEnd(e){const t=new RegExp(`${e||"\\s"}+$`);let n,s=this.sources.length-1;do{if(n=this.sources[s--],!n){this.intro=this.intro.replace(t,"");break}}while(!n.content.trimEndAborted(e));return this}};const O=/^(?:\/|(?:[A-Za-z]:)?[/\\|])/,M=/^\.?\.\//,_=/\\/g,L=/[/\\]/,T=/\.[^.]+$/;function B(e){return O.test(e)}function z(e){return M.test(e)}function V(e){return e.replace(_,"/")}function F(e){return e.split(L).pop()||""}function j(e){const t=/[/\\][^/\\]*$/.exec(e);if(!t)return".";return e.slice(0,-t[0].length)||"/"}function U(e){const t=T.exec(F(e));return t?t[0]:""}function G(e,t=!1){const n=[];for(const s of e)".."===s?n.length>0&&".."!==n[n.length-1]?n.pop():t||n.push(".."):"."!==s&&""!==s&&n.push(s);return n.join("/")}function H(e,t){const n=e.split(L).filter(Boolean),s=t.split(L).filter(Boolean);for("."===n[0]&&n.shift(),"."===s[0]&&s.shift();n[0]&&s[0]&&n[0]===s[0];)n.shift(),s.shift();for(;".."===s[0]&&n.length>0;)s.shift(),n.pop();for(;n.pop();)s.unshift("..");return s.join("/")}function W(...e){let t=[],n=!1;for(const s of e)B(s)?(t=s.split(L),n=!0):t.push(...s.split(L));const s=G(t,n);return n?/^[A-Za-z]:/.test(s)?s:"/"+s:s||"/"}function q(e,t,n,s){t.remove(n,s),e.removeAnnotations(t)}const K={isNoStatement:!0};function X(e,t,n=0){let s,i;for(s=e.indexOf(t,n);;){if(-1===(n=e.indexOf("/",n))||n>=s)return s;i=e.charCodeAt(++n),++n,(n=47===i?e.indexOf("\n",n)+1:e.indexOf("*/",n)+2)>s&&(s=e.indexOf(t,n))}}const J=/\S/g;function Y(e,t){J.lastIndex=t;return J.exec(e).index}const Z=/\s/;function Q(e){let t,n,s=0;for(t=e.indexOf("\n",s);;){if(s=e.indexOf("/",s),-1===s||s>t)return[t,t+1];if(n=e.charCodeAt(s+1),47===n)return[s,t+1];s=e.indexOf("*/",s+2)+2,s>t&&(t=e.indexOf("\n",s))}}function ee(e,t,n,s,i){let r,o,a,l,c=e[0],u=!c.included||c.needsBoundaries;u&&(l=n+Q(t.original.slice(n,c.start))[1]);for(let n=1;n<=e.length;n++)r=c,o=l,a=u,c=e[n],u=void 0!==c&&(!c.included||c.needsBoundaries),a||u?(l=r.end+Q(t.original.slice(r.end,void 0===c?s:c.start))[1],r.included?a?r.render(t,i,{end:l,start:o}):r.render(t,i):q(r,t,o,l)):r.render(t,i)}function te(e,t,n,s){const i=[];let r,o,a,l,c=n-1;for(const s of e){for(void 0!==r&&(c=r.end+X(t.original.slice(r.end,s.start),",")),o=a=c+1+Q(t.original.slice(c+1,s.start))[1];l=t.original.charCodeAt(o),32===l||9===l||10===l||13===l;)o++;void 0!==r&&i.push({contentEnd:a,end:o,node:r,separator:c,start:n}),r=s,n=o}return i.push({contentEnd:s,end:s,node:r,separator:null,start:n}),i}function ne(e,t,n){for(;;){const[s,i]=Q(e.original.slice(t,n));if(-1===s)break;e.remove(t+s,t+=i)}}function se(e,{exportNamesByVariable:t,snippets:{_:n,getObject:s,getPropertyAccess:i}},r=""){if(1===e.length&&1===t.get(e[0]).length){const s=e[0];return`exports(${JSON.stringify(t.get(s)[0])},${n}${s.getName(i)}${r})`}{const n=[];for(const s of e)for(const e of t.get(s))n.push([e,s.getName(i)+r]);return`exports(${s(n,{lineBreakIndent:null})})`}}function ie(e,t,n,s,{exportNamesByVariable:i,snippets:{_:r}}){s.prependRight(t,`exports(${JSON.stringify(i.get(e)[0])},${r}`),s.appendLeft(n,")")}function re(e,t,n,s,i,r){const{_:o,getPropertyAccess:a}=r.snippets;i.appendLeft(n,`,${o}${se([e],r)},${o}${e.getName(a)}`),s&&(i.prependRight(t,"("),i.appendLeft(n,")"))}const oe=Object.freeze(Object.create(null)),ae=Object.freeze({}),le=Object.freeze([]),ce=Object.freeze(new class extends Set{add(){throw new Error("Cannot add to empty set")}});function ue(e,t,n){const s=e.get(t);if(void 0!==s)return s;const i=n();return e.set(t,i),i}function de(){return new Set}function he(){return[]}const pe=Symbol("Unknown Key"),fe=Symbol("Unknown Non-Accessor Key"),me=Symbol("Unknown Integer"),ge=Symbol("Unknown Well-Known"),ye=Symbol("Symbol.toStringTag"),be=Symbol("Symbol.asyncDispose"),Ee=Symbol("Symbol.dispose"),xe=Symbol("Symbol.hasInstance"),Ae=new Set([ye,be,Ee,xe]),Se=e=>Ae.has(e)||e===ge,$e=new Set([xe,be,Ee]),ve=e=>"string"==typeof e||Ae.has(e),Pe=[],Ie=[pe],we=[fe],Ne=[me],ke=[xe],Ce=Symbol("Entities");class Re{constructor(){this.entityPaths=Object.create(null,{[Ce]:{value:new Set}})}trackEntityAtPathAndGetIfTracked(e,t){const n=this.getEntities(e);return!!n.has(t)||(n.add(t),!1)}withTrackedEntityAtPath(e,t,n,s){const i=this.getEntities(e);if(i.has(t))return s;i.add(t);const r=n();return i.delete(t),r}getEntities(e){let t=this.entityPaths;for(const n of e)t=t[n]||=Object.create(null,{[Ce]:{value:new Set}});return t[Ce]}}const De=new Re;class Oe{constructor(){this.entityPaths=Object.create(null,{[Ce]:{value:new Map}})}trackEntityAtPathAndGetIfTracked(e,t,n){let s=this.entityPaths;for(const t of e)s=s[t]||=Object.create(null,{[Ce]:{value:new Map}});const i=ue(s[Ce],t,de);return!!i.has(n)||(i.add(n),!1)}}const Me=Object.freeze({[pe]:ae});class _e{constructor(){this.includedPaths=null}includePathAndGetIfIncluded(e){let t=!0,n=this,s="includedPaths",i=this.includedPaths||=(t=!1,Object.create(null));for(const r of e){if(i[pe])return!0;if(!ve(r))return n[s]=Me,!1;n=i,s=r,i=i[r]||=(t=!1,Object.create(null))}return t}}const Le=Object.freeze({[pe]:!0});class Te{constructor(){this.includedPaths=null}includePathAndGetIfIncluded(e){let t=!0;const n=this.includedPaths||=(t=!1,Object.create(null));if(n[pe])return!0;const[s,i]=e;return s?ve(s)?i?n[s]===pe||(n[s]=pe,!1):!!n[s]||(n[s]=!0,!1):(this.includedPaths=Le,!1):t}includeAllPaths(e,t,n){const{includedPaths:s}=this;if(s)if(s[pe])e.includePath([...n,pe],t);else{const i=Object.entries(s);if(0===i.length)e.includePath(n,t);else for(const[s,r]of i)e.includePath(r===pe?[...n,s,pe]:[...n,s],t)}}}function Be(e,t){if("MemberExpression"===e.type)return!e.computed&&Be(e.object,e);if("Identifier"!==e.type)return!1;switch(t?.type){case"MemberExpression":return t.computed||e===t.object;case"MethodDefinition":return t.computed;case"MetaProperty":return t.meta===e;case"PropertyDefinition":case"Property":return t.computed||e===t.value;case"ExportSpecifier":case"ImportSpecifier":return e===t.local;case"LabeledStatement":case"BreakStatement":case"ContinueStatement":return!1;default:return!0}}function ze(){return{brokenFlow:!1,hasBreak:!1,hasContinue:!1,includedCallArguments:new Set,includedLabels:new Set}}function Ve(){return{accessed:new Re,assigned:new Re,brokenFlow:!1,called:new Oe,hasBreak:!1,hasContinue:!1,ignore:{breaks:!1,continues:!1,labels:new Set,returnYield:!1,this:!1},includedLabels:new Set,instantiated:new Oe,replacedVariableInits:new Map}}function Fe(e,t){return 0!==(e&t)}function je(e,t,n){return e&~t|-n&t}const Ue=Symbol("Unknown Value"),Ge=Symbol("Unknown Truthy Value"),He=Symbol("Unknown Falsy Value");class We{constructor(){this.flags=0}get included(){return Fe(this.flags,1)}set included(e){this.flags=je(this.flags,1,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){Xe(e)}deoptimizePath(e){}getLiteralValueAtPath(e,t,n){return Ue}getReturnExpressionWhenCalledAtPath(e,t,n,s){return Ke}hasEffectsOnInteractionAtPath(e,t,n){return!0}include(e,t,n){this.included||this.includeNode(e)}includeNode(e){this.included=!0}includePath(e,t){this.included||this.includeNode(t)}includeCallArguments(e,t){Je(e,t)}shouldBeIncluded(e){return!0}}const qe=new class extends We{},Ke=[qe,!1],Xe=e=>{for(const t of e.args)t?.deoptimizePath(Ie)},Je=(e,t)=>{e.args[0]?.includePath(Ie,t),Ye(e,t)},Ye=({args:e},t)=>{for(let n=1;n{const n=i+e.length+1,s={start:i,end:n,line:t};return i=n,s});let o=0;return function(t,i){if("string"==typeof t&&(t=e.indexOf(t,i??0)),-1===t)return;let a=r[o];const l=t>=a.end?1:-1;for(;a;){if(lt(a,t))return{line:n+a.line,column:s+t-a.start,character:t};o+=l,a=r[o]}}}(e,n)(t,n&&n.startIndex)}function ut(e){return e.replace(/^\t+/,e=>e.split("\t").join(" "))}const dt="...";function ht(e,t,n){let s=e.split("\n");if(t>s.length)return"";const i=Math.max(ut(s[t-1].slice(0,n)).length+10+3,120),r=Math.max(0,t-3);let o=Math.min(t+2,s.length);for(s=s.slice(r,o);!/\S/.test(s[s.length-1]);)s.pop(),o-=1;const a=String(o).length;return s.map((e,s)=>{const o=r+s+1===t;let l=String(s+r+1);for(;l.lengthi&&(c=`${c.slice(0,i-3)}${dt}`),o){const t=function(e){let t="";for(;e--;)t+=" ";return t}(a+2+ut(e.slice(0,n)).length)+"^";return`${l}: ${c}\n${t}`}return`${l}: ${c}`}).join("\n")}const pt="silent",ft="warn",mt="info",gt="debug",yt={[gt]:0,[mt]:1,[pt]:3,[ft]:2};function bt(e,t){const n=e.length<=1,s=e.map(e=>`"${e}"`);let i=n?s[0]:`${s.slice(0,-1).join(", ")} and ${s.slice(-1)[0]}`;return t&&(i+=` ${n?t[0]:t[1]}`),i}function Et(e){const t=F(e);return t.slice(0,Math.max(0,t.length-U(e).length))}function xt(e){return B(e)?H(W(),e):e}function At(e){return"/"===e[0]||"."===e[0]&&("/"===e[1]||"."===e[1])||B(e)}const St=/^(\.\.\/)*\.\.$/;function $t(e,t,n,s){for(;t.startsWith("../");)t=t.slice(3),e="_/"+e;let i=V(H(j(e),t));if(n&&i.endsWith(".js")&&(i=i.slice(0,-3)),s){if(""===i)return"../"+F(t);if(St.test(i))return[...i.split("/"),"..",F(t)].join("/")}return i?i.startsWith("..")?i:"./"+i:"."}function vt(e){return`https://rollupjs.org/${e}`}const Pt="troubleshooting/#error-name-is-not-exported-by-module",It="configuration-options/#jsx",wt="configuration-options/#output-amd-id",Nt="configuration-options/#output-dir",kt="configuration-options/#output-exports",Ct="configuration-options/#output-format",Rt="configuration-options/#output-inlinedynamicimports",Dt="configuration-options/#output-interop",Ot="configuration-options/#output-manualchunks",Mt="configuration-options/#output-name",_t="configuration-options/#output-sourcemapfile",Lt="es-module-syntax/#source-phase-import",Tt="plugin-development/#generatebundle";function Bt(e){throw e instanceof Error?e:zt(e)}function zt(e){jt(e);const t=Object.assign(new Error(e.message),e);return Object.defineProperty(t,"name",{value:"RollupError",writable:!0}),t}function Vt(e,t,n,s){if("object"==typeof t){const{line:n,column:i}=t;e.loc={column:i,file:s,line:n}}else{e.pos=t;const i=ct(n,t,{offsetLine:1});if(!i)return;const{line:r,column:o}=i;e.loc={column:o,file:s,line:r}}if(void 0===e.frame){const{line:t,column:s}=e.loc;e.frame=ht(n,t,s)}}const Ft=Symbol("augmented");function jt(e){if(!e.plugin&&!e.loc||e[Ft])return;e[Ft]=!0;let t="";e.plugin&&(t+=`[plugin ${e.plugin}] `);const n=e.id||e.loc?.file;if(n){const s=e.loc?` (${e.loc.line}:${e.loc.column})`:"";t+=`${xt(n)}${s}: `}const s=e.message;e.message=t+e.message,pn(e,s)}const Ut="INVALID_EXPORT_OPTION",Gt="INVALID_IMPORT_ATTRIBUTE",Ht="INVALID_PLUGIN_HOOK",Wt="MISSING_EXPORT",qt="MISSING_IMPLICIT_DEPENDANT",Kt="MISSING_NAME_OPTION_FOR_IIFE_EXPORT",Xt="PARSE_ERROR",Jt="SOURCEMAP_BROKEN",Yt="UNEXPECTED_NAMED_IMPORT",Zt="UNRESOLVED_ENTRY",Qt="UNRESOLVED_IMPORT";function en(e){return{code:"ASSET_SOURCE_MISSING",message:`Plugin error creating asset "${e}" - no asset source set.`}}function tn(e){return{code:"CANNOT_CALL_NAMESPACE",message:`Cannot call a namespace ("${e}").`}}function nn({fileName:e,code:t},{pos:n,message:s}){const i={code:"CHUNK_INVALID",message:`Chunk "${e}" is not valid JavaScript: ${s}.`};return Vt(i,n,t,e),i}function sn(e){return{code:"CIRCULAR_DEPENDENCY",ids:e,message:`Circular dependency: ${e.map(xt).join(" -> ")}`}}function rn(e,t,n,s,i){return{code:"CYCLIC_CROSS_CHUNK_REEXPORT",exporter:t,id:s,message:`Export "${e}" of module "${xt(t)}" was reexported through module "${xt(n)}" while both modules are dependencies of each other and will end up in different chunks by current Rollup settings. This scenario is not well supported at the moment as it will produce a circular dependency between chunks and will likely lead to broken execution order.\nEither change the import in "${xt(s)}" to point directly to the exporting module or ${i?'do not use "output.preserveModules"':'reconfigure "output.manualChunks"'} to ensure these modules end up in the same chunk.`,reexporter:n}}function on(e){return{code:"FILE_NAME_OUTSIDE_OUTPUT_DIRECTORY",message:`The output file name "${e}" is not contained in the output directory. Make sure all file names are relative paths without ".." segments.`}}function an(e,t,{line:n,column:s}){return{code:"FIRST_SIDE_EFFECT",message:`First side effect in ${xt(t)} is at (${n}:${s})\n${ht(e,n,s)}`}}function ln(e,t){return{code:"ILLEGAL_REASSIGNMENT",message:`Illegal reassignment of import "${e}" in "${xt(t)}".`}}function cn(e,t,n,s){return{code:"INCONSISTENT_IMPORT_ATTRIBUTES",message:`Module "${xt(s)}" tried to import "${xt(n)}" with ${un(t)} attributes, but it was already imported elsewhere with ${un(e)} attributes. Please ensure that import attributes for the same module are always consistent.`}}const un=e=>{const t=Object.entries(e);return 0===t.length?"no":t.map(([e,t])=>`"${e}": "${t}"`).join(", ")};function dn(e,t,n){return{code:"INVALID_ANNOTATION",id:t,message:`A comment\n\n"${e}"\n\nin "${xt(t)}" contains an annotation that Rollup cannot interpret due to the position of the comment. The comment will be removed to avoid issues.`,url:vt("noSideEffects"===n?"configuration-options/#no-side-effects":"configuration-options/#pure")}}function hn(e,t){return{code:"INPUT_HOOK_IN_OUTPUT_PLUGIN",message:`The "${t}" hook used by the output plugin ${e} is a build time hook and will not be run for that plugin. Either this plugin cannot be used as an output plugin, or it should have an option to configure it as an output plugin.`}}function pn(e,t){return e.stack?(e.stack=e.stack.replace(t,e.message),e):e}function fn(e,t,n){return{code:Ut,message:`"${e}" was specified for "output.exports", but entry module "${xt(n)}" has the following exports: ${bt(t)}`,url:vt(kt)}}function mn(e){return{code:Gt,message:`Rollup could not statically analyze an import attribute of a dynamic import in "${xt(e)}". Import attributes need to have string keys and values.`}}function gn(e,t,n,s){return{code:"INVALID_OPTION",message:`Invalid value ${void 0===s?"":`${JSON.stringify(s)} `}for option "${e}" - ${n}.`,url:vt(t)}}function yn(e,t){return{binding:e,code:Wt,exporter:t,message:`Exported variable "${e}" is not defined in "${xt(t)}".`,url:vt(Pt)}}function bn(e,t,n,s){const i={binding:e,code:Wt,exporter:n,id:t,url:vt(Pt)};if(s)return{...i,message:`Exported variable "${e}" is not defined in "${xt(n)}", but it is imported by "${xt(t)}".`};const r=".json"===U(n);return{...i,message:`"${e}" is not exported by "${xt(n)}", imported by "${xt(t)}".${r?" (Note that you need @rollup/plugin-json to import JSON files)":""}`}}function En(e){const t=[...e.implicitlyLoadedBefore].map(e=>xt(e.id)).sort();return{code:qt,message:`Module "${xt(e.id)}" that should be implicitly loaded before ${bt(t)} is not included in the module graph. Either it was not imported by an included module or only via a tree-shaken dynamic import, or no imported bindings were used and it had otherwise no side-effects.`}}function xn(e,t){return{code:"NON_EXTERNAL_SOURCE_PHASE_IMPORT",message:`Source phase import "${e}" in "${xt(t)}" must be external. Source phase imports are only supported for external modules. Use the "external" option to mark this module as external.`,url:vt(Lt)}}function An(e,t,n){return{code:"OPTIMIZE_CHUNK_STATUS",message:`${n}, there are\n${e} chunks, of which\n${t} are below minChunkSize.`}}function Sn(e,t){return{code:Xt,message:e,pos:t}}function $n(e){return{code:"REDECLARATION_ERROR",message:`Identifier "${e}" has already been declared`}}function vn(e){return{code:"RESERVED_NAMESPACE",message:`You have overridden reserved namespace "${e}"`}}function Pn(e,t){let n=e.message.replace(/ \(\d+:\d+\)$/,"");return t.endsWith(".json")?n+=" (Note that you need @rollup/plugin-json to import JSON files)":t.endsWith(".js")||(n+=" (Note that you need plugins to import files that are not JavaScript)"),pn({cause:e,code:Xt,id:t,message:n,stack:e.stack},e.message)}function In(e,t,{hook:n,id:s}={}){const i=e.code;return e.pluginCode||null==i||"string"==typeof i&&i.startsWith("PLUGIN_")||(e.pluginCode=i),e.code="PLUGIN_ERROR",e.plugin=t,n&&(e.hook=n),s&&(e.id=s),e}function wn(e){return{code:Jt,message:`Multiple conflicting contents for sourcemap source ${e}`}}function Nn(e,t,n){const s=n?"reexport":"import";return{code:Yt,exporter:e,message:`The named export "${t}" was ${s}ed from the external module "${xt(e)}" even though its interop type is "defaultOnly". Either remove or change this ${s} or change the value of the "output.interop" option.`,url:vt(Dt)}}function kn(e){return{code:Yt,exporter:e,message:`There was a namespace "*" reexport from the external module "${xt(e)}" even though its interop type is "defaultOnly". This will be ignored as namespace reexports only reexport named exports. If this is not intended, either remove or change this reexport or change the value of the "output.interop" option.`,url:vt(Dt)}}function Cn(e){return{code:"VALIDATION_ERROR",message:e}}function Rn(e,t,n,s,i){!function(e,t,n,s,i){if(n||i){const n=function(e,t){return{code:"DEPRECATED_FEATURE",message:e,url:vt(t)}}(e,t);if(i)return Bt(n);s(ft,n)}}(e,t,n,s.onLog,s.strictDeprecations)}const Dn=Symbol("PureFunction");class On extends We{markReassigned(){this.isReassigned=!0}constructor(e){super(),this.name=e,this.alwaysRendered=!1,this.forbiddenNames=null,this.globalName=null,this.initReached=!1,this.isId=!1,this.kind=null,this.renderBaseName=null,this.renderName=null,this.isReassigned=!1,this.onlyFunctionCallUsed=!0}addReference(e){}getOnlyFunctionCallUsed(){return this.onlyFunctionCallUsed}addUsedPlace(e){e.parent.type===nt&&e.parent.callee===e||e.parent.type===st||(this.onlyFunctionCallUsed=!1)}forbidName(e){(this.forbiddenNames||=new Set).add(e)}getBaseVariableName(){return this.renderedLikeHoisted?.getBaseVariableName()||this.renderBaseName||this.renderName||this.name}getName(e,t){if(this.globalName)return this.globalName;if(t?.(this))return this.name;if(this.renderedLikeHoisted)return this.renderedLikeHoisted.getName(e,t);const n=this.renderName||this.name;return this.renderBaseName?`${this.renderBaseName}${e(n)}`:n}hasEffectsOnInteractionAtPath(e,{type:t},n){return 0!==t||e.length>0}includePath(e,t){this.included=!0,this.renderedLikeHoisted?.includePath(e,t)}renderLikeHoisted(e){this.renderedLikeHoisted=e}markCalledFromTryStatement(){}setRenderNames(e,t){this.renderBaseName=e,this.renderName=t}}const Mn="*source";class _n extends On{constructor(e,t){super(t),this.referenced=!1,this.module=e,this.isNamespace="*"===t,this.isSourcePhase=t===Mn}addReference(e){this.referenced=!0,"default"!==this.name&&"*"!==this.name||this.module.suggestName(e.name)}hasEffectsOnInteractionAtPath(e,{type:t}){return 0!==t||e.length>(this.isNamespace?1:0)}includePath(e,t){super.includePath(e,t),this.module.used=!0}}function Ln(e,t){for(const n of t){const t=Object.getOwnPropertyDescriptor(e,n).get;Object.defineProperty(e,n,{get(){const s=t.call(e);return Object.defineProperty(e,n,{value:s}),s}})}}const Tn=new Set(["await","break","case","catch","class","const","continue","debugger","default","delete","do","else","enum","eval","export","extends","false","finally","for","function","if","implements","import","in","instanceof","interface","let","NaN","new","null","package","private","protected","public","return","static","super","switch","this","throw","true","try","typeof","undefined","var","void","while","with","yield"]),Bn=/[^\w$]/g,zn=/[^\w$]/,Vn=e=>(e=>/\d/.test(e[0]))(e)||Tn.has(e)||"arguments"===e;function Fn(e){return e=e.replace(/-(\w)/g,(e,t)=>t.toUpperCase()).replace(Bn,"_"),Vn(e)&&(e=`_${e}`),e||"_"}const jn=/^[$_\p{ID_Start}][$\u200C\u200D\p{ID_Continue}]*$/u,Un=/^(?:0|[1-9]\d*)$/;function Gn(e){return jn.test(e)?"__proto__"===e?'["__proto__"]':e:Un.test(e)&&+e<=Number.MAX_SAFE_INTEGER?e:JSON.stringify(e)}function Hn(e){return jn.test(e)?e:JSON.stringify(e)}class Wn{constructor(e,t,n,s,i,r){this.options=e,this.id=t,this.renormalizeRenderPath=i,this.dynamicImporters=[],this.execIndex=1/0,this.exportedVariables=new Map,this.importers=[],this.reexported=!1,this.used=!1,this.declarations=new Map,this.importersByExportedName=new Map,this.mostCommonSuggestion=0,this.nameSuggestions=new Map,this.suggestedVariableName=Fn(t.split(/[/\\]/).pop());const{importers:o,dynamicImporters:a}=this;this.info={ast:null,attributes:r,code:null,dynamicallyImportedIdResolutions:le,dynamicallyImportedIds:le,get dynamicImporters(){return a.sort()},exportedBindings:null,exports:null,hasDefaultExport:null,id:t,implicitlyLoadedAfterOneOf:le,implicitlyLoadedBefore:le,importedIdResolutions:le,importedIds:le,get importers(){return o.sort()},isEntry:!1,isExternal:!0,isIncluded:null,meta:s,moduleSideEffects:n,safeVariableNames:null,syntheticNamedExports:!1}}cacheInfoGetters(){Ln(this.info,["dynamicImporters","importers"])}getVariableForExportName(e,{importChain:t}){const n=this.declarations.get(e);for(const n of t)ue(this.importersByExportedName,e,de).add(n);if(n)return[n];const s=new _n(this,e);return this.declarations.set(e,s),this.exportedVariables.set(s,e),[s]}suggestName(e){const t=(this.nameSuggestions.get(e)??0)+1;this.nameSuggestions.set(e,t),t>this.mostCommonSuggestion&&(this.mostCommonSuggestion=t,this.suggestedVariableName=e)}warnUnusedImports(){const e=[...this.declarations].filter(([e,t])=>"*"!==e&&!t.included&&!this.reexported&&!t.referenced).map(([e])=>e);if(0===e.length)return;const t=new Set;for(const n of e){const e=this.importersByExportedName.get(n);for(const n of this.importers)e?.has(n)&&t.add(n)}const n=[...t];var s,i,r;this.options.onLog(ft,{code:"UNUSED_EXTERNAL_IMPORT",exporter:s=this.id,ids:r=n,message:`${bt(i=e,["is","are"])} imported from external module "${s}" but never used in ${bt(r.map(e=>xt(e)))}.`,names:i})}}function qn(e){e.isExecuted=!0;const t=[e],n=new Set;for(const e of t)for(const s of[...e.dependencies,...e.implicitlyLoadedBefore])s instanceof Wn||s.isExecuted||!s.info.moduleSideEffects&&!e.implicitlyLoadedBefore.has(s)||n.has(s.id)||(s.isExecuted=!0,n.add(s.id),t.push(s))}const Kn=()=>{};var Xn=["var","let","const","init","get","set","constructor","method","-","+","!","~","typeof","void","delete","++","--","==","!=","===","!==","<","<=",">",">=","<<",">>",">>>","+","-","*","/","%","|","^","&","||","&&","in","instanceof","**","??","=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","|=","^=","&=","**=","&&=","||=","??=","pure","noSideEffects","sourcemap","using","await using","source","defer"];const Jn="_rollupAnnotations",Yn="_rollupRemoved",Zn=(e,t)=>{if(0===e)return le;const n=t[e++],s=new Array(n);for(let i=0;i{const n=t[e++];return{end:t[e++],start:n,type:Xn[t[e]]}},es={ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],AwaitExpression:["argument"],BinaryExpression:["left","right"],BlockStatement:["body"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ChainExpression:["expression"],ClassBody:["body"],ClassDeclaration:["decorators","id","superClass","body"],ClassExpression:["decorators","id","superClass","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],Decorator:["expression"],DoWhileStatement:["body","test"],EmptyStatement:[],ExportAllDeclaration:["exported","source","attributes"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["specifiers","source","attributes","declaration"],ExportSpecifier:["local","exported"],ExpressionStatement:["expression"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],ForStatement:["init","test","update","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportAttribute:["key","value"],ImportDeclaration:["specifiers","source","attributes"],ImportDefaultSpecifier:["local"],ImportExpression:["source","options"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],JSXAttribute:["name","value"],JSXClosingElement:["name"],JSXClosingFragment:[],JSXElement:["openingElement","children","closingElement"],JSXEmptyExpression:[],JSXExpressionContainer:["expression"],JSXFragment:["openingFragment","children","closingFragment"],JSXIdentifier:[],JSXMemberExpression:["object","property"],JSXNamespacedName:["namespace","name"],JSXOpeningElement:["name","attributes"],JSXOpeningFragment:[],JSXSpreadAttribute:["argument"],JSXSpreadChild:["expression"],JSXText:[],LabeledStatement:["label","body"],Literal:[],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["decorators","key","value"],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],PanicError:[],ParseError:[],PrivateIdentifier:[],Program:["body"],Property:["key","value"],PropertyDefinition:["decorators","key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],StaticBlock:["body"],Super:[],SwitchCase:["test","consequent"],SwitchStatement:["discriminant","cases"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],YieldExpression:["argument"]},ts="variables",ns=Symbol("IS_SKIPPED_CHAIN");class ss extends We{get deoptimized(){return Fe(this.flags,2)}set deoptimized(e){this.flags=je(this.flags,2,e)}constructor(e,t){super(),this.parent=e,this.scope=t,this.createScope(t)}addExportedVariables(e,t){}bind(){for(const e of es[this.type]){const t=this[e];if(Array.isArray(t))for(const e of t)e?.bind();else t&&t.bind()}}createScope(e){this.scope=e}hasEffects(e){this.deoptimized||this.applyDeoptimizations();for(const t of es[this.type]){const n=this[t];if(null!==n)if(Array.isArray(n)){for(const t of n)if(t?.hasEffects(e))return!0}else if(n.hasEffects(e))return!0}return!1}hasEffectsAsAssignmentTarget(e,t){return this.hasEffects(e)||this.hasEffectsOnInteractionAtPath(Pe,this.assignmentInteraction,e)}include(e,t,n){this.included||this.includeNode(e);for(const n of es[this.type]){const s=this[n];if(null!==s)if(Array.isArray(s))for(const n of s)n?.include(e,t);else s.include(e,t)}}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations();for(const t of es[this.type]){const n=this[t];if(null!==n)if(Array.isArray(n))for(const t of n)t?.includePath(Ie,e);else n.includePath(Ie,e)}}includeAsAssignmentTarget(e,t,n){this.include(e,t)}initialise(){this.scope.context.magicString.addSourcemapLocation(this.start),this.scope.context.magicString.addSourcemapLocation(this.end)}parseNode(e){for(const[t,n]of Object.entries(e))if(!this.hasOwnProperty(t))if(95===t.charCodeAt(0))t===Jn?this.annotations=n:t===Yn&&(this.invalidAnnotations=n);else if("object"!=typeof n||null===n)this[t]=n;else if(Array.isArray(n)){this[t]=new Array(n.length);let e=0;for(const s of n)this[t][e++]=null===s?null:new(this.scope.context.getNodeConstructor(s.type))(this,this.scope).parseNode(s)}else this[t]=new(this.scope.context.getNodeConstructor(n.type))(this,this.scope).parseNode(n);return es[e.type]||=function(e){return Object.keys(e).filter(t=>"object"==typeof e[t]&&95!==t.charCodeAt(0))}(e),this.initialise(),this}removeAnnotations(e){if(this.annotations)for(const t of this.annotations)e.remove(t.start,t.end)}render(e,t){for(const n of es[this.type]){const s=this[n];if(null!==s)if(Array.isArray(s))for(const n of s)n?.render(e,t);else s.render(e,t)}}setAssignedValue(e){this.assignmentInteraction={args:[null,e],type:1}}shouldBeIncluded(e){return this.included||!e.brokenFlow&&this.hasEffects(Ve())}applyDeoptimizations(){this.deoptimized=!0;for(const e of es[this.type]){const t=this[e];if(null!==t)if(Array.isArray(t))for(const e of t)e?.deoptimizePath(Ie);else t.deoptimizePath(Ie)}this.scope.context.requestTreeshakingPass()}}function is(){this.included=!0,this.deoptimized||this.applyDeoptimizations()}function rs(){this.included=!0}function os(){this.deoptimized=!0}function as(e){return e instanceof ss&&e.type===tt}function ls(e){return e instanceof ss&&"FunctionExpression"===e.type}function cs(e){return e instanceof ss&&e.type===nt}function us(e){return e instanceof ss&&"MemberExpression"===e.type}function ds(e){return e instanceof ss&&e.type===rt}function hs(e){return e instanceof ss&&e.type===it}function ps(e,t=null){return Object.create(t,e)}const fs=new class extends We{getLiteralValueAtPath(e){return e.length>0?Ue:void 0}},ms={value:{hasEffectsWhenCalled:null,returns:qe}},gs=new class extends We{getReturnExpressionWhenCalledAtPath(e){return 1===e.length?ks(vs,e[0]):Ke}hasEffectsOnInteractionAtPath(e,t,n){return 0===t.type?e.length>1:2!==t.type||1!==e.length||Ns(vs,e[0],t,n)}},ys={value:{hasEffectsWhenCalled:null,returns:gs}},bs=new class extends We{getReturnExpressionWhenCalledAtPath(e){return 1===e.length?ks(Ps,e[0]):Ke}hasEffectsOnInteractionAtPath(e,t,n){return 0===t.type?e.length>1:2!==t.type||1!==e.length||Ns(Ps,e[0],t,n)}},Es={value:{hasEffectsWhenCalled:null,returns:bs}},xs=new class extends We{getReturnExpressionWhenCalledAtPath(e){return 1===e.length?ks(ws,e[0]):Ke}hasEffectsOnInteractionAtPath(e,t,n){return 0===t.type?e.length>1:2!==t.type||1!==e.length||Ns(ws,e[0],t,n)}},As={value:{hasEffectsWhenCalled:null,returns:xs}},Ss={value:{hasEffectsWhenCalled({args:e},t){const n=e[2];return e.length<3||"symbol"==typeof n.getLiteralValueAtPath(Pe,De,{deoptimizeCache(){}})&&n.hasEffectsOnInteractionAtPath(Pe,et,t)},returns:xs}},$s=ps({hasOwnProperty:ys,isPrototypeOf:ys,propertyIsEnumerable:ys,toLocaleString:As,toString:As,valueOf:ms}),vs=ps({valueOf:ys},$s),Ps=ps({toExponential:As,toFixed:As,toLocaleString:As,toPrecision:As,valueOf:Es},$s),Is=ps({exec:ms,test:ys},$s),ws=ps({anchor:As,at:ms,big:As,blink:As,bold:As,charAt:As,charCodeAt:Es,codePointAt:ms,concat:As,endsWith:ys,fixed:As,fontcolor:As,fontsize:As,includes:ys,indexOf:Es,italics:As,lastIndexOf:Es,link:As,localeCompare:Es,match:ms,matchAll:ms,normalize:As,padEnd:As,padStart:As,repeat:As,replace:Ss,replaceAll:Ss,search:Es,slice:As,small:As,split:ms,startsWith:ys,strike:As,sub:As,substr:As,substring:As,sup:As,toLocaleLowerCase:As,toLocaleUpperCase:As,toLowerCase:As,toString:As,toUpperCase:As,trim:As,trimEnd:As,trimLeft:As,trimRight:As,trimStart:As,valueOf:As},$s);function Ns(e,t,n,s){return"string"!=typeof t||!e[t]||(e[t].hasEffectsWhenCalled?.(n,s)||!1)}function ks(e,t){return"string"==typeof t&&e[t]?[e[t].returns,!1]:Ke}class Cs extends We{constructor(e){super(),this.description=e}deoptimizeArgumentsOnInteractionAtPath({args:e,type:t},n){if(2===t&&0===n.length&&(this.description.mutatesSelfAsArray&&e[0]?.deoptimizePath(Ne),this.description.mutatesArgs))for(let t=1;t0?Ke:[this.description.returnsPrimitive||("self"===this.description.returns?t[0]||qe:this.description.returns()),!1]}hasEffectsOnInteractionAtPath(e,{args:t,type:n},s){if(e.length>(0===n?1:0))return!0;if(2===n){if(!0===this.description.mutatesSelfAsArray&&t[0]?.hasEffectsOnInteractionAtPath(Ne,Qe,s))return!0;if(this.description.callsArgs)for(const e of this.description.callsArgs)if(t[e+1]?.hasEffectsOnInteractionAtPath(Pe,et,s))return!0}return!1}}const Rs=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!1,returns:null,returnsPrimitive:gs})],Ds=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!1,returns:null,returnsPrimitive:xs})],Os=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!1,returns:null,returnsPrimitive:bs})],Ms=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!1,returns:null,returnsPrimitive:qe})],_s=/^\d+$/;class Ls extends We{get hasLostTrack(){return Fe(this.flags,2048)}set hasLostTrack(e){this.flags=je(this.flags,2048,e)}get hasUnknownDeoptimizedInteger(){return Fe(this.flags,4096)}set hasUnknownDeoptimizedInteger(e){this.flags=je(this.flags,4096,e)}get hasUnknownDeoptimizedProperty(){return Fe(this.flags,8192)}set hasUnknownDeoptimizedProperty(e){this.flags=je(this.flags,8192,e)}constructor(e,t,n=!1){if(super(),this.prototypeExpression=t,this.immutable=n,this.additionalExpressionsToBeDeoptimized=new Set,this.allProperties=[],this.alwaysIncludedProperties=new Set,this.deoptimizedPaths=new Map,this.expressionsToBeDeoptimizedByKey=new Map,this.gettersByKey=new Map,this.propertiesAndGettersByKey=new Map,this.propertiesAndSettersByKey=new Map,this.settersByKey=new Map,this.unknownIntegerProps=[],this.unmatchableGetters=[],this.unmatchablePropertiesAndGetters=[],this.unmatchablePropertiesAndSetters=[],this.unmatchableSetters=[],Array.isArray(e))this.buildPropertyMaps(e);else{this.propertiesAndGettersByKey=this.propertiesAndSettersByKey=e;for(const t of e.values())this.allProperties.push(...t)}}deoptimizeAllProperties(e){const t=this.hasLostTrack||this.hasUnknownDeoptimizedProperty;if(e?this.hasUnknownDeoptimizedProperty=!0:this.hasLostTrack=!0,!t){for(const e of[...this.propertiesAndGettersByKey.values(),...this.settersByKey.values()])for(const t of e)t.deoptimizePath(Ie);this.prototypeExpression?.deoptimizePath([pe,pe]),this.deoptimizeCachedEntities()}}deoptimizeArgumentsOnInteractionAtPath(e,t,n){const[s,...i]=t,{args:r,type:o}=e;if(this.hasLostTrack||(2===o||t.length>1)&&(this.hasUnknownDeoptimizedProperty||ve(s)&&this.deoptimizedPaths.get(s)))return void Xe(e);const[a,l,c]=2===o||t.length>1?[this.propertiesAndGettersByKey,this.propertiesAndGettersByKey,this.unmatchablePropertiesAndGetters]:0===o?[this.propertiesAndGettersByKey,this.gettersByKey,this.unmatchableGetters]:[this.propertiesAndSettersByKey,this.settersByKey,this.unmatchableSetters];if(ve(s)){if(a.get(s)){const t=l.get(s);if(t)for(const s of t)s.deoptimizeArgumentsOnInteractionAtPath(e,i,n);if(!this.immutable)for(const e of r)e&&this.additionalExpressionsToBeDeoptimized.add(e);return}for(const t of c)t.deoptimizeArgumentsOnInteractionAtPath(e,i,n);if("string"==typeof s&&_s.test(s))for(const t of this.unknownIntegerProps)t.deoptimizeArgumentsOnInteractionAtPath(e,i,n)}else{for(const t of[...l.values(),c])for(const s of t)s.deoptimizeArgumentsOnInteractionAtPath(e,i,n);for(const t of this.unknownIntegerProps)t.deoptimizeArgumentsOnInteractionAtPath(e,i,n)}if(!this.immutable)for(const e of r)e&&this.additionalExpressionsToBeDeoptimized.add(e);this.prototypeExpression?.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizeIntegerProperties(){if(!(this.hasLostTrack||this.hasUnknownDeoptimizedProperty||this.hasUnknownDeoptimizedInteger)){this.hasUnknownDeoptimizedInteger=!0;for(const[e,t]of this.propertiesAndGettersByKey.entries())if("string"==typeof e&&_s.test(e))for(const e of t)e.deoptimizePath(Ie);this.deoptimizeCachedIntegerEntities()}}deoptimizePath(e){if(this.hasLostTrack||this.immutable)return;const t=e[0];if(1===e.length){if(t===me)return this.deoptimizeIntegerProperties();if(!ve(t))return this.deoptimizeAllProperties(t===fe);if(!this.deoptimizedPaths.get(t)){this.deoptimizedPaths.set(t,!0);const e=this.expressionsToBeDeoptimizedByKey.get(t);if(e)for(const t of e)t.deoptimizeCache()}}const n=1===e.length?Ie:e.slice(1);for(const e of ve(t)?[...this.propertiesAndGettersByKey.get(t)||this.unmatchablePropertiesAndGetters,...this.settersByKey.get(t)||this.unmatchableSetters]:this.allProperties)e.deoptimizePath(n);this.prototypeExpression?.deoptimizePath(1===e.length?[e[0],pe]:e)}getLiteralValueAtPath(e,t,n){if(0===e.length)return Ue;const s=e[0],i=this.getMemberExpressionAndTrackDeopt(s,n);return i?i.getLiteralValueAtPath(e.slice(1),t,n):this.prototypeExpression?this.prototypeExpression.getLiteralValueAtPath(e,t,n):1!==e.length?Ue:void 0}getReturnExpressionWhenCalledAtPath(e,t,n,s){if(0===e.length)return Ke;const[i,...r]=e,o=this.getMemberExpressionAndTrackDeopt(i,s);return o?o.getReturnExpressionWhenCalledAtPath(r,t,n,s):this.prototypeExpression?this.prototypeExpression.getReturnExpressionWhenCalledAtPath(e,t,n,s):Ke}hasEffectsOnInteractionAtPath(e,t,n){const[s,...i]=e;if(i.length>0||2===t.type){const r=this.getMemberExpression(s);return r?r.hasEffectsOnInteractionAtPath(i,t,n):!this.prototypeExpression||this.prototypeExpression.hasEffectsOnInteractionAtPath(e,t,n)}if(s===fe)return!1;if(this.hasLostTrack)return!0;const[r,o,a]=0===t.type?[this.propertiesAndGettersByKey,this.gettersByKey,this.unmatchableGetters]:[this.propertiesAndSettersByKey,this.settersByKey,this.unmatchableSetters];if(ve(s)){if(r.get(s)){const e=o.get(s);if(e)for(const s of e)if(s.hasEffectsOnInteractionAtPath(i,t,n))return!0;return!1}for(const e of a)if(e.hasEffectsOnInteractionAtPath(i,t,n))return!0}else for(const e of[...o.values(),a])for(const s of e)if(s.hasEffectsOnInteractionAtPath(i,t,n))return!0;return!!this.prototypeExpression&&this.prototypeExpression.hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){this.included=!0;for(const n of this.allProperties)(t||n.shouldBeIncluded(e)||this.alwaysIncludedProperties.has(n))&&n.include(e,t);this.prototypeExpression?.include(e,t)}includePath(e,t){this.included=!0;for(const e of this.alwaysIncludedProperties)e.includePath(Ie,t);if(0===e.length)return;const[n,...s]=e,[i,r]=ve(n)?[new Set([...this.propertiesAndGettersByKey.get(n)||this.unmatchablePropertiesAndGetters,...this.propertiesAndSettersByKey.get(n)||this.unmatchablePropertiesAndSetters]),s]:[this.allProperties,Ie];for(const e of i)e.includePath(r,t);this.prototypeExpression?.includePath(e,t)}buildPropertyMaps(e){const{allProperties:t,alwaysIncludedProperties:n,propertiesAndGettersByKey:s,propertiesAndSettersByKey:i,settersByKey:r,gettersByKey:o,unknownIntegerProps:a,unmatchablePropertiesAndGetters:l,unmatchablePropertiesAndSetters:c,unmatchableGetters:u,unmatchableSetters:d}=this;for(let h=e.length-1;h>=0;h--){const{key:p,kind:f,property:m}=e[h];if(t.push(m),!Se(p)||$e.has(p)||(n.add(m),p!==ge))if(ve(p))"set"===f?i.has(p)||(i.set(p,[m,...c]),r.set(p,[m,...d])):"get"===f?s.has(p)||(s.set(p,[m,...l]),o.set(p,[m,...u])):(i.has(p)||i.set(p,[m,...c]),s.has(p)||s.set(p,[m,...l]));else{if(p===me){a.push(m);continue}"set"===f&&d.push(m),"get"===f&&u.push(m),"get"!==f&&c.push(m),"set"!==f&&l.push(m)}}}deoptimizeCachedEntities(){for(const e of this.expressionsToBeDeoptimizedByKey.values())for(const t of e)t.deoptimizeCache();for(const e of this.additionalExpressionsToBeDeoptimized)e.deoptimizePath(Ie)}deoptimizeCachedIntegerEntities(){for(const[e,t]of this.expressionsToBeDeoptimizedByKey.entries())if("string"==typeof e&&_s.test(e))for(const e of t)e.deoptimizeCache();for(const e of this.additionalExpressionsToBeDeoptimized)e.deoptimizePath(Ne)}getMemberExpression(e){if(this.hasLostTrack||this.hasUnknownDeoptimizedProperty||!ve(e)||this.hasUnknownDeoptimizedInteger&&"string"==typeof e&&_s.test(e)||this.deoptimizedPaths.get(e))return qe;const t=this.propertiesAndGettersByKey.get(e);return 1===t?.length?t[0]:t||this.unmatchablePropertiesAndGetters.length>0||this.unknownIntegerProps.length>0&&"string"==typeof e&&_s.test(e)?qe:null}getMemberExpressionAndTrackDeopt(e,t){if(!ve(e))return qe;const n=this.getMemberExpression(e);if(n!==qe&&!this.immutable){let n=this.expressionsToBeDeoptimizedByKey.get(e);n||this.expressionsToBeDeoptimizedByKey.set(e,n=[]),n.push(t)}return n}}const Ts=e=>"string"==typeof e&&/^\d+$/.test(e),Bs=new class extends We{deoptimizeArgumentsOnInteractionAtPath(e,t){2!==e.type||1!==t.length||Ts(t[0])||Xe(e)}getLiteralValueAtPath(e){return 1===e.length&&Ts(e[0])?void 0:Ue}hasEffectsOnInteractionAtPath(e,{type:t}){return e.length>1||2===t}},zs=new Ls(new Map([["hasOwnProperty",Rs],["isPrototypeOf",Rs],["propertyIsEnumerable",Rs],["toLocaleString",Ds],["toString",Ds],["valueOf",Ms]]),Bs,!0),Vs=[{key:me,kind:"init",property:qe},{key:"length",kind:"init",property:bs}],Fs=[new Cs({callsArgs:[0],mutatesArgs:!1,mutatesSelfAsArray:"deopt-only",returns:null,returnsPrimitive:gs})],js=[new Cs({callsArgs:[0],mutatesArgs:!1,mutatesSelfAsArray:"deopt-only",returns:null,returnsPrimitive:bs})],Us=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!0,returns:()=>new Ls(Vs,Zs),returnsPrimitive:null})],Gs=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:"deopt-only",returns:()=>new Ls(Vs,Zs),returnsPrimitive:null})],Hs=[new Cs({callsArgs:[0],mutatesArgs:!1,mutatesSelfAsArray:"deopt-only",returns:()=>new Ls(Vs,Zs),returnsPrimitive:null})],Ws=[new Cs({callsArgs:null,mutatesArgs:!0,mutatesSelfAsArray:!0,returns:null,returnsPrimitive:bs})],qs=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!0,returns:null,returnsPrimitive:qe})],Ks=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:"deopt-only",returns:null,returnsPrimitive:qe})],Xs=[new Cs({callsArgs:[0],mutatesArgs:!1,mutatesSelfAsArray:"deopt-only",returns:null,returnsPrimitive:qe})],Js=[new Cs({callsArgs:null,mutatesArgs:!1,mutatesSelfAsArray:!0,returns:"self",returnsPrimitive:null})],Ys=[new Cs({callsArgs:[0],mutatesArgs:!1,mutatesSelfAsArray:!0,returns:"self",returnsPrimitive:null})],Zs=new Ls(new Map([["at",Ks],["concat",Gs],["copyWithin",Js],["entries",Gs],["every",Fs],["fill",Js],["filter",Hs],["find",Xs],["findIndex",js],["findLast",Xs],["findLastIndex",js],["flat",Gs],["flatMap",Hs],["forEach",Xs],["includes",Rs],["indexOf",Os],["join",Ds],["keys",Ms],["lastIndexOf",Os],["map",Hs],["pop",qs],["push",Ws],["reduce",Xs],["reduceRight",Xs],["reverse",Js],["shift",qs],["slice",Gs],["some",Fs],["sort",Ys],["splice",Us],["toLocaleString",Ds],["toString",Ds],["unshift",Ws],["values",Ks]]),zs,!0);class Qs extends ss{deoptimizeArgumentsOnInteractionAtPath(e,t,n){t.length>0&&this.argument.deoptimizeArgumentsOnInteractionAtPath(e,Ie,n)}hasEffects(e){this.deoptimized||this.applyDeoptimizations();const{propertyReadSideEffects:t}=this.scope.context.options.treeshake;return this.argument.hasEffects(e)||t&&("always"===t||this.argument.hasEffectsOnInteractionAtPath(Ie,Ze,e))}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.argument.includePath(Ie,e)}applyDeoptimizations(){this.deoptimized=!0,this.argument.deoptimizePath([pe,pe]),this.scope.context.requestTreeshakingPass()}}class ei extends ss{constructor(){super(...arguments),this.objectEntity=null}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){this.getObjectEntity().deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.getObjectEntity().getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e,t,n,s)}hasEffectsOnInteractionAtPath(e,t,n){return this.getObjectEntity().hasEffectsOnInteractionAtPath(e,t,n)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations();for(const t of this.elements)t&&t?.includePath(Ie,e)}applyDeoptimizations(){this.deoptimized=!0;let e=!1;for(let t=0;tUe,si=()=>!1,ii=()=>!0,ri=e=>({__proto__:null,[ti]:{deoptimizeArgumentsOnCall:Kn,getLiteralValue:()=>e,hasEffectsWhenCalled:ii}}),oi={deoptimizeArgumentsOnCall:Kn,getLiteralValue:ni,hasEffectsWhenCalled:si},ai={deoptimizeArgumentsOnCall:Kn,getLiteralValue:ni,hasEffectsWhenCalled:ii},li={deoptimizeArgumentsOnCall:Kn,getLiteralValue:ni,hasEffectsWhenCalled:({args:e})=>e.length>1&&!(e[1]instanceof ei)},ci={deoptimizeArgumentsOnCall:Kn,getLiteralValue:ni,hasEffectsWhenCalled({args:e},t){const[n,s]=e;return!(s instanceof We)||s.hasEffectsOnInteractionAtPath(Ie,Ze,t)}},ui={__proto__:null,[ti]:ai},di={__proto__:null,[ti]:oi},hi={__proto__:null,[ti]:ci},pi={__proto__:null,[ti]:{deoptimizeArgumentsOnCall({args:[,e]}){e?.deoptimizePath(Ie)},getLiteralValue:ni,hasEffectsWhenCalled:({args:e},t)=>e.length<=1||e[1].hasEffectsOnInteractionAtPath(we,Qe,t)}},fi={__proto__:null,[ti]:ai,prototype:ui},mi={__proto__:null,[ti]:oi,prototype:ui},gi={__proto__:null,[ti]:li,prototype:ui},yi={__proto__:null,[ti]:oi,from:ui,of:di,prototype:ui},bi={__proto__:null,[ti]:oi,supportedLocalesOf:mi},Ei={deoptimizeArgumentsOnCall:Kn,getLiteralValue:()=>ge,hasEffectsWhenCalled:ii},xi={global:ui,globalThis:ui,self:ui,window:ui,__proto__:null,[ti]:ai,Array:{__proto__:null,[ti]:ai,from:ui,isArray:di,of:di,prototype:ui},ArrayBuffer:{__proto__:null,[ti]:oi,isView:di,prototype:ui},AggregateError:gi,Atomics:ui,BigInt:fi,BigInt64Array:fi,BigUint64Array:fi,Boolean:mi,constructor:fi,DataView:mi,Date:{__proto__:null,[ti]:oi,now:di,parse:di,prototype:ui,UTC:di},decodeURI:di,decodeURIComponent:di,encodeURI:di,encodeURIComponent:di,Error:mi,escape:di,eval:ui,EvalError:mi,FinalizationRegistry:fi,Float32Array:yi,Float64Array:yi,Function:fi,hasOwnProperty:ui,Infinity:ui,Int16Array:yi,Int32Array:yi,Int8Array:yi,isFinite:di,isNaN:di,isPrototypeOf:ui,JSON:ui,Map:gi,Math:{__proto__:null,[ti]:ai,abs:di,acos:di,acosh:di,asin:di,asinh:di,atan:di,atan2:di,atanh:di,cbrt:di,ceil:di,clz32:di,cos:di,cosh:di,exp:di,expm1:di,floor:di,fround:di,hypot:di,imul:di,log:di,log10:di,log1p:di,log2:di,max:di,min:di,pow:di,random:di,round:di,sign:di,sin:di,sinh:di,sqrt:di,tan:di,tanh:di,trunc:di},NaN:ui,Number:{__proto__:null,[ti]:oi,isFinite:di,isInteger:di,isNaN:di,isSafeInteger:di,parseFloat:di,parseInt:di,prototype:ui},Object:{__proto__:null,[ti]:oi,create:di,defineProperty:pi,defineProperties:pi,freeze:pi,getOwnPropertyDescriptor:di,getOwnPropertyDescriptors:di,getOwnPropertyNames:di,getOwnPropertySymbols:di,getPrototypeOf:di,hasOwn:di,is:di,isExtensible:di,isFrozen:di,isSealed:di,keys:di,fromEntries:ui,entries:hi,values:hi,prototype:ui},parseFloat:di,parseInt:di,Promise:{__proto__:null,[ti]:ai,all:ui,allSettled:ui,any:ui,prototype:ui,race:ui,reject:ui,resolve:ui},propertyIsEnumerable:ui,Proxy:{__proto__:null,[ti]:{deoptimizeArgumentsOnCall:({args:[,e,t]})=>{if((n=t)instanceof ss&&"ObjectExpression"===n.type){const n=t.properties.some(e=>!function(e){return e instanceof ss&&e.type===at}(e));if(!n){for(const n of t.properties)n.deoptimizeArgumentsOnInteractionAtPath({args:[null,e],type:2,withNew:!1},Pe,De);return}}var n;e.deoptimizePath(Ie)},getLiteralValue:ni,hasEffectsWhenCalled:ii}},RangeError:mi,ReferenceError:mi,Reflect:ui,RegExp:mi,Set:gi,SharedArrayBuffer:fi,String:{__proto__:null,[ti]:oi,fromCharCode:di,fromCodePoint:di,prototype:ui,raw:di},Symbol:{__proto__:null,[ti]:oi,for:di,keyFor:di,prototype:ui,asyncDispose:ri(Ee),dispose:ri(be),hasInstance:ri(xe),toStringTag:ri(ye)},SyntaxError:mi,toLocaleString:ui,toString:ui,TypeError:mi,Uint16Array:yi,Uint32Array:yi,Uint8Array:yi,Uint8ClampedArray:yi,unescape:di,URIError:mi,valueOf:ui,WeakMap:gi,WeakRef:fi,WeakSet:gi,clearInterval:fi,clearTimeout:fi,console:{__proto__:null,[ti]:ai,assert:fi,clear:fi,count:fi,countReset:fi,debug:fi,dir:fi,dirxml:fi,error:fi,exception:fi,group:fi,groupCollapsed:fi,groupEnd:fi,info:fi,log:fi,table:fi,time:fi,timeEnd:fi,timeLog:fi,trace:fi,warn:fi},Intl:{__proto__:null,[ti]:ai,Collator:bi,DateTimeFormat:bi,DisplayNames:bi,ListFormat:bi,Locale:bi,NumberFormat:bi,PluralRules:bi,RelativeTimeFormat:bi,Segmenter:bi},setInterval:fi,setTimeout:fi,TextDecoder:fi,TextEncoder:fi,URL:{__proto__:null,[ti]:ai,prototype:ui,canParse:di},URLSearchParams:fi,AbortController:fi,AbortSignal:fi,addEventListener:ui,alert:ui,AnalyserNode:fi,Animation:fi,AnimationEvent:fi,applicationCache:ui,ApplicationCache:fi,ApplicationCacheErrorEvent:fi,atob:ui,Attr:fi,Audio:fi,AudioBuffer:fi,AudioBufferSourceNode:fi,AudioContext:fi,AudioDestinationNode:fi,AudioListener:fi,AudioNode:fi,AudioParam:fi,AudioProcessingEvent:fi,AudioScheduledSourceNode:fi,AudioWorkletNode:fi,BarProp:fi,BaseAudioContext:fi,BatteryManager:fi,BeforeUnloadEvent:fi,BiquadFilterNode:fi,Blob:fi,BlobEvent:fi,blur:ui,BroadcastChannel:fi,btoa:ui,ByteLengthQueuingStrategy:fi,Cache:fi,caches:ui,CacheStorage:fi,cancelAnimationFrame:ui,cancelIdleCallback:ui,CanvasCaptureMediaStreamTrack:fi,CanvasGradient:fi,CanvasPattern:fi,CanvasRenderingContext2D:fi,ChannelMergerNode:fi,ChannelSplitterNode:fi,CharacterData:fi,clientInformation:ui,ClipboardEvent:fi,close:ui,closed:ui,CloseEvent:fi,Comment:fi,CompositionEvent:fi,confirm:ui,ConstantSourceNode:fi,ConvolverNode:fi,CountQueuingStrategy:fi,createImageBitmap:ui,Credential:fi,CredentialsContainer:fi,crypto:ui,Crypto:fi,CryptoKey:fi,CSS:fi,CSSConditionRule:fi,CSSFontFaceRule:fi,CSSGroupingRule:fi,CSSImportRule:fi,CSSKeyframeRule:fi,CSSKeyframesRule:fi,CSSMediaRule:fi,CSSNamespaceRule:fi,CSSPageRule:fi,CSSRule:fi,CSSRuleList:fi,CSSStyleDeclaration:fi,CSSStyleRule:fi,CSSStyleSheet:fi,CSSSupportsRule:fi,CustomElementRegistry:fi,customElements:ui,CustomEvent:{__proto__:null,[ti]:{deoptimizeArgumentsOnCall({args:e}){e[2]?.deoptimizePath(["detail"])},getLiteralValue:ni,hasEffectsWhenCalled:si},prototype:ui},DataTransfer:fi,DataTransferItem:fi,DataTransferItemList:fi,defaultstatus:ui,defaultStatus:ui,DelayNode:fi,DeviceMotionEvent:fi,DeviceOrientationEvent:fi,devicePixelRatio:ui,dispatchEvent:ui,document:ui,Document:fi,DocumentFragment:fi,DocumentType:fi,DOMError:fi,DOMException:fi,DOMImplementation:fi,DOMMatrix:fi,DOMMatrixReadOnly:fi,DOMParser:fi,DOMPoint:fi,DOMPointReadOnly:fi,DOMQuad:fi,DOMRect:fi,DOMRectReadOnly:fi,DOMStringList:fi,DOMStringMap:fi,DOMTokenList:fi,DragEvent:fi,DynamicsCompressorNode:fi,Element:fi,ErrorEvent:fi,Event:fi,EventSource:fi,EventTarget:fi,external:ui,fetch:ui,File:fi,FileList:fi,FileReader:fi,find:ui,focus:ui,FocusEvent:fi,FontFace:fi,FontFaceSetLoadEvent:fi,FormData:fi,frames:ui,GainNode:fi,Gamepad:fi,GamepadButton:fi,GamepadEvent:fi,getComputedStyle:ui,getSelection:ui,HashChangeEvent:fi,Headers:fi,history:ui,History:fi,HTMLAllCollection:fi,HTMLAnchorElement:fi,HTMLAreaElement:fi,HTMLAudioElement:fi,HTMLBaseElement:fi,HTMLBodyElement:fi,HTMLBRElement:fi,HTMLButtonElement:fi,HTMLCanvasElement:fi,HTMLCollection:fi,HTMLContentElement:fi,HTMLDataElement:fi,HTMLDataListElement:fi,HTMLDetailsElement:fi,HTMLDialogElement:fi,HTMLDirectoryElement:fi,HTMLDivElement:fi,HTMLDListElement:fi,HTMLDocument:fi,HTMLElement:fi,HTMLEmbedElement:fi,HTMLFieldSetElement:fi,HTMLFontElement:fi,HTMLFormControlsCollection:fi,HTMLFormElement:fi,HTMLFrameElement:fi,HTMLFrameSetElement:fi,HTMLHeadElement:fi,HTMLHeadingElement:fi,HTMLHRElement:fi,HTMLHtmlElement:fi,HTMLIFrameElement:fi,HTMLImageElement:fi,HTMLInputElement:fi,HTMLLabelElement:fi,HTMLLegendElement:fi,HTMLLIElement:fi,HTMLLinkElement:fi,HTMLMapElement:fi,HTMLMarqueeElement:fi,HTMLMediaElement:fi,HTMLMenuElement:fi,HTMLMetaElement:fi,HTMLMeterElement:fi,HTMLModElement:fi,HTMLObjectElement:fi,HTMLOListElement:fi,HTMLOptGroupElement:fi,HTMLOptionElement:fi,HTMLOptionsCollection:fi,HTMLOutputElement:fi,HTMLParagraphElement:fi,HTMLParamElement:fi,HTMLPictureElement:fi,HTMLPreElement:fi,HTMLProgressElement:fi,HTMLQuoteElement:fi,HTMLScriptElement:fi,HTMLSelectElement:fi,HTMLShadowElement:fi,HTMLSlotElement:fi,HTMLSourceElement:fi,HTMLSpanElement:fi,HTMLStyleElement:fi,HTMLTableCaptionElement:fi,HTMLTableCellElement:fi,HTMLTableColElement:fi,HTMLTableElement:fi,HTMLTableRowElement:fi,HTMLTableSectionElement:fi,HTMLTemplateElement:fi,HTMLTextAreaElement:fi,HTMLTimeElement:fi,HTMLTitleElement:fi,HTMLTrackElement:fi,HTMLUListElement:fi,HTMLUnknownElement:fi,HTMLVideoElement:fi,IDBCursor:fi,IDBCursorWithValue:fi,IDBDatabase:fi,IDBFactory:fi,IDBIndex:fi,IDBKeyRange:fi,IDBObjectStore:fi,IDBOpenDBRequest:fi,IDBRequest:fi,IDBTransaction:fi,IDBVersionChangeEvent:fi,IdleDeadline:fi,IIRFilterNode:fi,Image:fi,ImageBitmap:fi,ImageBitmapRenderingContext:fi,ImageCapture:fi,ImageData:fi,indexedDB:ui,innerHeight:ui,innerWidth:ui,InputEvent:fi,IntersectionObserver:fi,IntersectionObserverEntry:fi,isSecureContext:ui,KeyboardEvent:fi,KeyframeEffect:fi,length:ui,localStorage:ui,location:ui,Location:fi,locationbar:ui,matchMedia:ui,MediaDeviceInfo:fi,MediaDevices:fi,MediaElementAudioSourceNode:fi,MediaEncryptedEvent:fi,MediaError:fi,MediaKeyMessageEvent:fi,MediaKeySession:fi,MediaKeyStatusMap:fi,MediaKeySystemAccess:fi,MediaList:fi,MediaQueryList:fi,MediaQueryListEvent:fi,MediaRecorder:fi,MediaSettingsRange:fi,MediaSource:fi,MediaStream:fi,MediaStreamAudioDestinationNode:fi,MediaStreamAudioSourceNode:fi,MediaStreamEvent:fi,MediaStreamTrack:fi,MediaStreamTrackEvent:fi,menubar:ui,MessageChannel:fi,MessageEvent:fi,MessagePort:fi,MIDIAccess:fi,MIDIConnectionEvent:fi,MIDIInput:fi,MIDIInputMap:fi,MIDIMessageEvent:fi,MIDIOutput:fi,MIDIOutputMap:fi,MIDIPort:fi,MimeType:fi,MimeTypeArray:fi,MouseEvent:fi,moveBy:ui,moveTo:ui,MutationEvent:fi,MutationObserver:fi,MutationRecord:fi,name:ui,NamedNodeMap:fi,NavigationPreloadManager:fi,navigator:ui,Navigator:fi,NetworkInformation:fi,Node:fi,NodeFilter:ui,NodeIterator:fi,NodeList:fi,Notification:fi,OfflineAudioCompletionEvent:fi,OfflineAudioContext:fi,offscreenBuffering:ui,OffscreenCanvas:fi,open:ui,openDatabase:ui,Option:fi,origin:ui,OscillatorNode:fi,outerHeight:ui,outerWidth:ui,PageTransitionEvent:fi,pageXOffset:ui,pageYOffset:ui,PannerNode:fi,parent:ui,Path2D:fi,PaymentAddress:fi,PaymentRequest:fi,PaymentRequestUpdateEvent:fi,PaymentResponse:fi,performance:ui,Performance:fi,PerformanceEntry:fi,PerformanceLongTaskTiming:fi,PerformanceMark:fi,PerformanceMeasure:fi,PerformanceNavigation:fi,PerformanceNavigationTiming:fi,PerformanceObserver:fi,PerformanceObserverEntryList:fi,PerformancePaintTiming:fi,PerformanceResourceTiming:fi,PerformanceTiming:fi,PeriodicWave:fi,Permissions:fi,PermissionStatus:fi,personalbar:ui,PhotoCapabilities:fi,Plugin:fi,PluginArray:fi,PointerEvent:fi,PopStateEvent:fi,postMessage:ui,Presentation:fi,PresentationAvailability:fi,PresentationConnection:fi,PresentationConnectionAvailableEvent:fi,PresentationConnectionCloseEvent:fi,PresentationConnectionList:fi,PresentationReceiver:fi,PresentationRequest:fi,print:ui,ProcessingInstruction:fi,ProgressEvent:fi,PromiseRejectionEvent:fi,prompt:ui,PushManager:fi,PushSubscription:fi,PushSubscriptionOptions:fi,queueMicrotask:ui,RadioNodeList:fi,Range:fi,ReadableStream:fi,RemotePlayback:fi,removeEventListener:ui,Request:fi,requestAnimationFrame:ui,requestIdleCallback:ui,resizeBy:ui,ResizeObserver:fi,ResizeObserverEntry:fi,resizeTo:ui,Response:fi,RTCCertificate:fi,RTCDataChannel:fi,RTCDataChannelEvent:fi,RTCDtlsTransport:fi,RTCIceCandidate:fi,RTCIceTransport:fi,RTCPeerConnection:fi,RTCPeerConnectionIceEvent:fi,RTCRtpReceiver:fi,RTCRtpSender:fi,RTCSctpTransport:fi,RTCSessionDescription:fi,RTCStatsReport:fi,RTCTrackEvent:fi,screen:ui,Screen:fi,screenLeft:ui,ScreenOrientation:fi,screenTop:ui,screenX:ui,screenY:ui,ScriptProcessorNode:fi,scroll:ui,scrollbars:ui,scrollBy:ui,scrollTo:ui,scrollX:ui,scrollY:ui,SecurityPolicyViolationEvent:fi,Selection:fi,ServiceWorker:fi,ServiceWorkerContainer:fi,ServiceWorkerRegistration:fi,sessionStorage:ui,ShadowRoot:fi,SharedWorker:fi,SourceBuffer:fi,SourceBufferList:fi,speechSynthesis:ui,SpeechSynthesisEvent:fi,SpeechSynthesisUtterance:fi,StaticRange:fi,status:ui,statusbar:ui,StereoPannerNode:fi,stop:ui,Storage:fi,StorageEvent:fi,StorageManager:fi,styleMedia:ui,StyleSheet:fi,StyleSheetList:fi,SubtleCrypto:fi,SVGAElement:fi,SVGAngle:fi,SVGAnimatedAngle:fi,SVGAnimatedBoolean:fi,SVGAnimatedEnumeration:fi,SVGAnimatedInteger:fi,SVGAnimatedLength:fi,SVGAnimatedLengthList:fi,SVGAnimatedNumber:fi,SVGAnimatedNumberList:fi,SVGAnimatedPreserveAspectRatio:fi,SVGAnimatedRect:fi,SVGAnimatedString:fi,SVGAnimatedTransformList:fi,SVGAnimateElement:fi,SVGAnimateMotionElement:fi,SVGAnimateTransformElement:fi,SVGAnimationElement:fi,SVGCircleElement:fi,SVGClipPathElement:fi,SVGComponentTransferFunctionElement:fi,SVGDefsElement:fi,SVGDescElement:fi,SVGDiscardElement:fi,SVGElement:fi,SVGEllipseElement:fi,SVGFEBlendElement:fi,SVGFEColorMatrixElement:fi,SVGFEComponentTransferElement:fi,SVGFECompositeElement:fi,SVGFEConvolveMatrixElement:fi,SVGFEDiffuseLightingElement:fi,SVGFEDisplacementMapElement:fi,SVGFEDistantLightElement:fi,SVGFEDropShadowElement:fi,SVGFEFloodElement:fi,SVGFEFuncAElement:fi,SVGFEFuncBElement:fi,SVGFEFuncGElement:fi,SVGFEFuncRElement:fi,SVGFEGaussianBlurElement:fi,SVGFEImageElement:fi,SVGFEMergeElement:fi,SVGFEMergeNodeElement:fi,SVGFEMorphologyElement:fi,SVGFEOffsetElement:fi,SVGFEPointLightElement:fi,SVGFESpecularLightingElement:fi,SVGFESpotLightElement:fi,SVGFETileElement:fi,SVGFETurbulenceElement:fi,SVGFilterElement:fi,SVGForeignObjectElement:fi,SVGGElement:fi,SVGGeometryElement:fi,SVGGradientElement:fi,SVGGraphicsElement:fi,SVGImageElement:fi,SVGLength:fi,SVGLengthList:fi,SVGLinearGradientElement:fi,SVGLineElement:fi,SVGMarkerElement:fi,SVGMaskElement:fi,SVGMatrix:fi,SVGMetadataElement:fi,SVGMPathElement:fi,SVGNumber:fi,SVGNumberList:fi,SVGPathElement:fi,SVGPatternElement:fi,SVGPoint:fi,SVGPointList:fi,SVGPolygonElement:fi,SVGPolylineElement:fi,SVGPreserveAspectRatio:fi,SVGRadialGradientElement:fi,SVGRect:fi,SVGRectElement:fi,SVGScriptElement:fi,SVGSetElement:fi,SVGStopElement:fi,SVGStringList:fi,SVGStyleElement:fi,SVGSVGElement:fi,SVGSwitchElement:fi,SVGSymbolElement:fi,SVGTextContentElement:fi,SVGTextElement:fi,SVGTextPathElement:fi,SVGTextPositioningElement:fi,SVGTitleElement:fi,SVGTransform:fi,SVGTransformList:fi,SVGTSpanElement:fi,SVGUnitTypes:fi,SVGUseElement:fi,SVGViewElement:fi,TaskAttributionTiming:fi,Text:fi,TextEvent:fi,TextMetrics:fi,TextTrack:fi,TextTrackCue:fi,TextTrackCueList:fi,TextTrackList:fi,TimeRanges:fi,toolbar:ui,top:ui,Touch:fi,TouchEvent:fi,TouchList:fi,TrackEvent:fi,TransitionEvent:fi,TreeWalker:fi,UIEvent:fi,ValidityState:fi,visualViewport:ui,VisualViewport:fi,VTTCue:fi,WaveShaperNode:fi,WebAssembly:ui,WebGL2RenderingContext:fi,WebGLActiveInfo:fi,WebGLBuffer:fi,WebGLContextEvent:fi,WebGLFramebuffer:fi,WebGLProgram:fi,WebGLQuery:fi,WebGLRenderbuffer:fi,WebGLRenderingContext:fi,WebGLSampler:fi,WebGLShader:fi,WebGLShaderPrecisionFormat:fi,WebGLSync:fi,WebGLTexture:fi,WebGLTransformFeedback:fi,WebGLUniformLocation:fi,WebGLVertexArrayObject:fi,WebSocket:fi,WheelEvent:fi,Window:fi,Worker:fi,WritableStream:fi,XMLDocument:fi,XMLHttpRequest:fi,XMLHttpRequestEventTarget:fi,XMLHttpRequestUpload:fi,XMLSerializer:fi,XPathEvaluator:fi,XPathExpression:fi,XPathResult:fi,XSLTProcessor:fi};for(const e of["window","global","self","globalThis"])xi[e]=xi;function Ai(e){let t=xi;for(const n of e){if("string"!=typeof n)return null;if(t=t[n],!t)return"Symbol"===e[0]&&2===e.length?Ei:null}return t[ti]}class Si extends On{constructor(e){super(e),this.markReassigned()}deoptimizeArgumentsOnInteractionAtPath(e,t,n){switch(e.type){case 0:case 1:return void(Ai([this.name,...t].slice(0,-1))||super.deoptimizeArgumentsOnInteractionAtPath(e,t,n));case 2:{const s=Ai([this.name,...t]);return void(s?s.deoptimizeArgumentsOnCall(e):super.deoptimizeArgumentsOnInteractionAtPath(e,t,n))}}}getLiteralValueAtPath(e,t,n){const s=Ai([this.name,...e]);return s?s.getLiteralValue():Ue}hasEffectsOnInteractionAtPath(e,t,n){switch(t.type){case 0:return 0===e.length?"undefined"!==this.name&&!Ai([this.name]):!Ai([this.name,...e].slice(0,-1));case 1:return!0;case 2:{const s=Ai([this.name,...e]);return!s||s.hasEffectsWhenCalled(t,n)}}}}const $i=(e,t)=>{const{length:n}=e,{length:s}=t;return 0===n?t:0===s?e:n+s>6?[...e,...t.slice(0,5-e.length),"UnknownKey"]:[...e,...t]};class vi extends On{constructor(e,t,n,s,i,r){super(e),this.init=n,this.initPath=s,this.kind=r,this.calledFromTryStatement=!1,this.additionalInitializers=null,this.includedPathTracker=new _e,this.expressionsToBeDeoptimized=[],this.declarations=t?[t]:[],this.deoptimizationTracker=i.deoptimizationTracker,this.module=i.module}addDeclaration(e,t){this.declarations.push(e),this.markInitializersForDeoptimization().push(t)}consolidateInitializers(){if(this.additionalInitializers)for(const e of this.additionalInitializers)e.deoptimizePath(Ie)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.isReassigned||t.length+this.initPath.length>6?Xe(e):n.withTrackedEntityAtPath(t,this.init,()=>{this.init.deoptimizeArgumentsOnInteractionAtPath(e,[...this.initPath,...t],n)},void 0)}deoptimizePath(e){if(!this.isReassigned&&!this.deoptimizationTracker.trackEntityAtPathAndGetIfTracked(e,this))if(0===e.length){this.markReassigned();const e=this.expressionsToBeDeoptimized;this.expressionsToBeDeoptimized=le;for(const t of e)t.deoptimizeCache();this.init.deoptimizePath([...this.initPath,pe])}else this.init.deoptimizePath($i(this.initPath,e))}getLiteralValueAtPath(e,t,n){return this.isReassigned||e.length+this.initPath.length>6?Ue:t.withTrackedEntityAtPath(e,this.init,()=>(this.expressionsToBeDeoptimized.push(n),this.init.getLiteralValueAtPath([...this.initPath,...e],t,n)),Ue)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return this.isReassigned||e.length+this.initPath.length>6?Ke:n.withTrackedEntityAtPath(e,this.init,()=>(this.expressionsToBeDeoptimized.push(s),this.init.getReturnExpressionWhenCalledAtPath([...this.initPath,...e],t,n,s)),Ke)}hasEffectsOnInteractionAtPath(e,t,n){if(e.length+this.initPath.length>6)return!0;switch(t.type){case 0:return!!this.isReassigned||!n.accessed.trackEntityAtPathAndGetIfTracked(e,this)&&this.init.hasEffectsOnInteractionAtPath([...this.initPath,...e],t,n);case 1:return!!this.included||0!==e.length&&(!!this.isReassigned||!n.assigned.trackEntityAtPathAndGetIfTracked(e,this)&&this.init.hasEffectsOnInteractionAtPath([...this.initPath,...e],t,n));case 2:return!!this.isReassigned||!(t.withNew?n.instantiated:n.called).trackEntityAtPathAndGetIfTracked(e,t.args,this)&&this.init.hasEffectsOnInteractionAtPath([...this.initPath,...e],t,n)}}includePath(e,t){if(!this.includedPathTracker.includePathAndGetIfIncluded(e)){this.module.scope.context.requestTreeshakingPass(),this.included||this.module.scope.context.newlyIncludedVariableInits.add(this.init),super.includePath(e,t);for(const e of this.declarations){e.included||e.include(t,!1);let n=e.parent;for(;!n.included&&(n.includeNode(t),n.type!==ot);)n=n.parent}e.length>0&&(this.init.includePath($i(this.initPath,e),t),this.additionalInitializers?.forEach(e=>e.includePath(Ie,t)))}}includeCallArguments(e,t){this.isReassigned||t.includedCallArguments.has(this.init)||this.initPath.length>0?Je(e,t):(t.includedCallArguments.add(this.init),this.init.includeCallArguments(e,t),t.includedCallArguments.delete(this.init))}markCalledFromTryStatement(){this.calledFromTryStatement=!0}markInitializersForDeoptimization(){return null===this.additionalInitializers&&(this.additionalInitializers=[this.init],this.init=qe,this.markReassigned()),this.additionalInitializers}}const Pi=new Set(["class","const","let","var","using","await using"]);class Ii extends ss{constructor(){super(...arguments),this.variable=null,this.isVariableReference=!1}get isTDZAccess(){return Fe(this.flags,4)?Fe(this.flags,8):null}set isTDZAccess(e){this.flags=je(this.flags,4,!0),this.flags=je(this.flags,8,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.variable.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){0!==e.length||this.scope.contains(this.name)||this.disallowImportReassignment(),this.variable?.deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.getVariableRespectingTDZ().getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){const[i,r]=this.getVariableRespectingTDZ().getReturnExpressionWhenCalledAtPath(e,t,n,s);return[i,r||this.isPureFunction(e)]}hasEffects(e){return this.deoptimized||this.applyDeoptimizations(),!(!this.isPossibleTDZ()||"var"===this.variable.kind)||this.scope.context.options.treeshake.unknownGlobalSideEffects&&this.variable instanceof Si&&!this.isPureFunction(Pe)&&this.variable.hasEffectsOnInteractionAtPath(Pe,Ze,e)}hasEffectsOnInteractionAtPath(e,t,n){switch(t.type){case 0:return null!==this.variable&&!this.isPureFunction(e)&&this.getVariableRespectingTDZ().hasEffectsOnInteractionAtPath(e,t,n);case 1:return(e.length>0?this.getVariableRespectingTDZ():this.variable).hasEffectsOnInteractionAtPath(e,t,n);case 2:return!this.isPureFunction(e)&&this.getVariableRespectingTDZ().hasEffectsOnInteractionAtPath(e,t,n)}}include(e,t){this.included||this.includeNode(e),t&&this.variable?.includePath(Ie,e)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),null!==this.variable&&this.scope.context.includeVariableInModule(this.variable,Pe,e)}includePath(e,t){this.included?e.length>0&&this.variable?.includePath(e,t):(this.included=!0,this.deoptimized||this.applyDeoptimizations(),null!==this.variable&&this.scope.context.includeVariableInModule(this.variable,e,t))}includeCallArguments(e,t){this.variable.includeCallArguments(e,t)}isPossibleTDZ(){const e=this.isTDZAccess;if(null!==e)return e;if(!(this.variable instanceof vi&&this.variable.kind&&Pi.has(this.variable.kind)&&this.variable.module.hasTreeShakingPassStarted))return this.isTDZAccess=!1;let t;return this.variable.declarations&&1===this.variable.declarations.length&&(t=this.variable.declarations[0])&&this.start0&&n.hasEffectsOnInteractionAtPath(t,Ze,e)}includeDestructuredIfNecessary(e,t,n){t.length>0&&!this.isDestructuringDeoptimized&&(this.isDestructuringDeoptimized=!0,n.deoptimizeArgumentsOnInteractionAtPath({args:[new Ni(n,t.slice(0,-1))],type:0},t,De));const{propertyReadSideEffects:s}=this.scope.context.options.treeshake;let i=this.included;return(i||=t.length>0&&!e.brokenFlow&&s&&("always"===s||n.hasEffectsOnInteractionAtPath(t,Ze,Ve())))&&(this.variable&&!this.variable.included&&this.scope.context.includeVariableInModule(this.variable,Pe,e),n.includePath(t,e)),!this.included&&i&&this.includeNode(e),this.included}markDeclarationReached(){this.variable.initReached=!0}render(e,{snippets:{getPropertyAccess:t},useOriginalName:n},{renderedParentType:s,isCalleeOfRenderedParent:i,isShorthandProperty:r}=oe){if(this.variable){const o=this.variable.getName(t,n);o!==this.name&&(e.overwrite(this.start,this.end,o,{contentOnly:!0,storeName:!0}),r&&e.prependRight(this.start,`${this.name}: `)),"eval"===o&&s===nt&&i&&e.appendRight(this.start,"0, ")}}}function Ci(e){let t="";do{const n=e%64;e=e/64|0,t="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$"[n]+t}while(0!==e);return t}function Ri(e,t,n){let s=e,i=1;for(;t.has(s)||Tn.has(s)||n?.has(s);)s=`${e}$${Ci(i++)}`;return t.add(s),s}class Di{constructor(){this.children=[],this.variables=new Map}addDeclaration(e,t,n,s,i){const r=e.name,o=this.hoistedVariables?.get(r)||this.variables.get(r);if(o){if("var"===i&&"var"===o.kind)return o.addDeclaration(e,n),o;t.error($n(r),e.start)}const a=new vi(e.name,e,n,s,t,i);return this.variables.set(r,a),a}addHoistedVariable(e,t){(this.hoistedVariables||=new Map).set(e,t)}contains(e){return this.variables.has(e)}findVariable(e){throw new Error("Internal Error: findVariable needs to be implemented by a subclass")}}class Oi extends Di{constructor(e,t){super(),this.parent=e,this.context=t,this.accessedOutsideVariables=new Map,e.children.push(this)}addAccessedDynamicImport(e){(this.accessedDynamicImports||(this.accessedDynamicImports=new Set)).add(e),this.parent instanceof Oi&&this.parent.addAccessedDynamicImport(e)}addAccessedGlobals(e,t){const n=t.get(this)||new Set;for(const t of e)n.add(t);t.set(this,n),this.parent instanceof Oi&&this.parent.addAccessedGlobals(e,t)}addNamespaceMemberAccess(e,t){this.accessedOutsideVariables.set(e,t),this.parent.addNamespaceMemberAccess(e,t)}addReturnExpression(e){this.parent instanceof Oi&&this.parent.addReturnExpression(e)}addUsedOutsideNames(e,t,n,s){for(const s of this.accessedOutsideVariables.values())s.included&&(e.add(s.getBaseVariableName()),"system"===t&&n.has(s)&&e.add("exports"));const i=s.get(this);if(i)for(const t of i)e.add(t)}contains(e){return this.variables.has(e)||this.parent.contains(e)}deconflict(e,t,n){const s=new Set;if(this.addUsedOutsideNames(s,e,t,n),this.accessedDynamicImports)for(const e of this.accessedDynamicImports)e.inlineNamespace&&s.add(e.inlineNamespace.getBaseVariableName());for(const[e,t]of this.variables)(t.included||t.alwaysRendered)&&t.setRenderNames(null,Ri(e,s,t.forbiddenNames));for(const s of this.children)s.deconflict(e,t,n)}findLexicalBoundary(){return this.parent.findLexicalBoundary()}findGlobal(e){const t=this.parent.findVariable(e);return this.accessedOutsideVariables.set(e,t),t}findVariable(e){const t=this.variables.get(e)||this.accessedOutsideVariables.get(e);if(t)return t;const n=this.parent.findVariable(e);return this.accessedOutsideVariables.set(e,n),n}}function Mi(e,t){for(const n of e)if(n.hasEffects(t))return!0;return!1}class _i extends ss{constructor(){super(...arguments),this.accessedValue=null}get computed(){return Fe(this.flags,1024)}set computed(e){this.flags=je(this.flags,1024,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){return 0===e.type&&"get"===this.kind&&0===t.length||1===e.type&&"set"===this.kind&&0===t.length?this.value.deoptimizeArgumentsOnInteractionAtPath({args:e.args,type:2,withNew:!1},Pe,n):void this.getAccessedValue()[0].deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizeCache(){}deoptimizePath(e){this.getAccessedValue()[0].deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.getAccessedValue()[0].getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return this.getAccessedValue()[0].getReturnExpressionWhenCalledAtPath(e,t,n,s)}hasEffects(e){return this.key.hasEffects(e)}hasEffectsOnInteractionAtPath(e,t,n){return"get"===this.kind&&0===t.type&&0===e.length||"set"===this.kind&&1===t.type?this.value.hasEffectsOnInteractionAtPath(Pe,{args:t.args,type:2,withNew:!1},n):this.getAccessedValue()[0].hasEffectsOnInteractionAtPath(e,t,n)}getAccessedValue(){return null===this.accessedValue?"get"===this.kind?(this.accessedValue=Ke,this.accessedValue=this.value.getReturnExpressionWhenCalledAtPath(Pe,et,De,this)):this.accessedValue=[this.value,!1]:this.accessedValue}}_i.prototype.includeNode=rs,_i.prototype.applyDeoptimizations=os;class Li extends _i{hasEffects(e){return super.hasEffects(e)||Mi(this.decorators,e)}}class Ti extends Oi{constructor(e){super(e,e.context)}addDeclaration(e,t,n,s,i){if("var"===i){const r=e.name,o=this.hoistedVariables?.get(r)||this.variables.get(r);if(o)return"var"===o.kind||"var"===i&&"parameter"===o.kind?(o.addDeclaration(e,n),o):t.error($n(r),e.start);const a=this.parent.addDeclaration(e,t,n,s,i);return a.markInitializersForDeoptimization(),this.addHoistedVariable(r,a),a}return super.addDeclaration(e,t,n,s,i)}}class Bi extends ss{createScope(e){this.scope=new Ti(e)}hasEffects(e){for(const t of this.body)if(t.hasEffects(e))return!0;return!1}include(e,t){this.included=!0;for(const n of this.body)(t||n.shouldBeIncluded(e))&&n.include(e,t)}render(e,t){if(this.body.length>0){const n=X(e.original.slice(this.start,this.end),"{")+1;ee(this.body,e,this.start+n,this.end-1,t)}else super.render(e,t)}}function zi(e){return"StaticBlock"===e.type}Bi.prototype.includeNode=rs,Bi.prototype.applyDeoptimizations=os;class Vi extends ss{constructor(){super(...arguments),this.objectEntity=null}createScope(e){this.scope=new Oi(e,e.context)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizeCache(){this.getObjectEntity().deoptimizeAllProperties()}deoptimizePath(e){this.getObjectEntity().deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.getObjectEntity().getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e,t,n,s)}hasEffects(e){this.deoptimized||this.applyDeoptimizations();const t=this.superClass?.hasEffects(e)||this.body.hasEffects(e);return this.id?.markDeclarationReached(),t||super.hasEffects(e)||Mi(this.decorators,e)}hasEffectsOnInteractionAtPath(e,t,n){return 2===t.type&&0===e.length?!t.withNew||(null===this.classConstructor?this.superClass?.hasEffectsOnInteractionAtPath(e,t,n):this.classConstructor.hasEffectsOnInteractionAtPath(e,t,n))||!1:this.getObjectEntity().hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){this.included||this.includeNode(e),this.superClass?.include(e,t),this.body.include(e,t);for(const n of this.decorators)n.include(e,t);this.id&&(this.id.markDeclarationReached(),this.id.include(e,t))}initialise(){super.initialise(),this.id?.declare("class",Pe,this);for(const e of this.body.body)if(e instanceof Li&&"constructor"===e.kind)return void(this.classConstructor=e);this.classConstructor=null}applyDeoptimizations(){this.deoptimized=!0;for(const e of this.body.body)zi(e)||e.static||e instanceof Li&&"constructor"===e.kind||e.deoptimizePath(Ie);this.scope.context.requestTreeshakingPass()}getObjectEntity(){if(null!==this.objectEntity)return this.objectEntity;const e=[],t=[];for(const n of this.body.body){if(zi(n))continue;const s=n.static?e:t,i=n.kind;if(s===t&&!i)continue;const r="set"===i||"get"===i?i:"init";let o;if(n.computed){const e=n.key.getLiteralValueAtPath(Pe,De,this);if("symbol"==typeof e){s.push({key:Se(e)?e:pe,kind:r,property:n});continue}o=String(e)}else o=n.key instanceof ki?n.key.name:String(n.key.value);s.push({key:o,kind:r,property:n})}return e.unshift({key:"prototype",kind:"init",property:new Ls(t,this.superClass?new Ni(this.superClass,["prototype"]):zs)}),this.objectEntity=new Ls(e,this.superClass||zs)}}Vi.prototype.includeNode=is;class Fi extends Vi{initialise(){super.initialise(),null!==this.id&&(this.id.variable.isId=!0)}parseNode(e){return null!==e.id&&(this.id=new ki(this,this.scope.parent).parseNode(e.id)),super.parseNode(e)}render(e,t){const{exportNamesByVariable:n,format:s,snippets:{_:i,getPropertyAccess:r}}=t;if(this.id){const{variable:o,name:a}=this.id;"system"===s&&n.has(o)&&e.appendLeft(this.end,`${i}${se([o],t)};`);const l=o.getName(r);if(l!==a)return this.decorators.map(n=>n.render(e,t)),this.superClass?.render(e,t),this.body.render(e,{...t,useOriginalName:e=>e===o}),e.prependRight(this.start,`let ${l}${i}=${i}`),void e.prependLeft(this.end,";")}super.render(e,t)}applyDeoptimizations(){super.applyDeoptimizations();const{id:e,scope:t}=this;if(e){const{name:n,variable:s}=e;for(const e of t.accessedOutsideVariables.values())e!==s&&e.forbidName(n)}}}class ji extends vi{constructor(e){super("arguments",null,qe,Pe,e,"other")}addArgumentToBeDeoptimized(e){}addReference(){this.deoptimizedArguments=[],this.addArgumentToBeDeoptimized=Ui}hasEffectsOnInteractionAtPath(e,{type:t}){return 0!==t||e.length>1}includePath(e,t){super.includePath(e,t);for(const e of this.deoptimizedArguments)e.deoptimizePath(Ie);this.deoptimizedArguments.length=0}}function Ui(e){this.included?e.deoptimizePath(Ie):this.deoptimizedArguments?.push(e)}const Gi=le,Hi=new Set([pe]),Wi=new Re,qi=new Set([qe]);class Ki extends vi{constructor(e,t,n,s){super(e,t,qe,n,s,"parameter"),this.includedPathTracker=new Te,this.argumentsToBeDeoptimized=new Set,this.deoptimizationInteractions=[],this.deoptimizations=new Re,this.deoptimizedFields=new Set,this.expressionsDependingOnKnownValue=[],this.knownValue=null,this.knownValueLiteral=Ue}addArgumentForDeoptimization(e){if(this.updateKnownValue(e),e===qe){if(!this.argumentsToBeDeoptimized.has(qe)){this.argumentsToBeDeoptimized.add(qe);for(const{interaction:e}of this.deoptimizationInteractions)Xe(e);this.deoptimizationInteractions=Gi}}else if(this.deoptimizedFields.has(pe))e.deoptimizePath([...this.initPath,pe]);else if(!this.argumentsToBeDeoptimized.has(e)){this.argumentsToBeDeoptimized.add(e);for(const t of this.deoptimizedFields)e.deoptimizePath([...this.initPath,t]);for(const{interaction:t,path:n}of this.deoptimizationInteractions)e.deoptimizeArgumentsOnInteractionAtPath(t,[...this.initPath,...n],De)}}markReassigned(){if(!this.isReassigned){super.markReassigned();for(const e of this.expressionsDependingOnKnownValue)e.deoptimizeCache();this.expressionsDependingOnKnownValue=le}}deoptimizeCache(){this.markReassigned()}updateKnownValue(e){if(this.isReassigned)return;if(null===this.knownValue)return this.knownValue=e,void(this.knownValueLiteral=e.getLiteralValueAtPath(this.initPath,De,this));if(this.knownValue===e||this.knownValue instanceof ki&&e instanceof ki&&this.knownValue.variable===e.variable)return;const{knownValueLiteral:t}=this;"symbol"!=typeof t&&e.getLiteralValueAtPath(this.initPath,De,this)===t||this.markReassigned()}getKnownValue(){return this.knownValue||qe}getLiteralValueAtPath(e,t,n){if(this.isReassigned||e.length+this.initPath.length>6)return Ue;const s=this.getKnownValue();return this.expressionsDependingOnKnownValue.push(n),t.withTrackedEntityAtPath(e,s,()=>s.getLiteralValueAtPath([...this.initPath,...e],t,n),Ue)}hasEffectsOnInteractionAtPath(e,t,n){const{type:s}=t;return this.isReassigned||1===s||e.length+this.initPath.length>6?super.hasEffectsOnInteractionAtPath(e,t,n):!(2===s?(t.withNew?n.instantiated:n.called).trackEntityAtPathAndGetIfTracked(e,t.args,this):n.accessed.trackEntityAtPathAndGetIfTracked(e,this))&&this.getKnownValue().hasEffectsOnInteractionAtPath([...this.initPath,...e],t,n)}deoptimizeArgumentsOnInteractionAtPath(e,t){if(t.length>=2||this.argumentsToBeDeoptimized.has(qe)||this.deoptimizationInteractions.length>=20||1===t.length&&(this.deoptimizedFields.has(pe)||2===e.type&&this.deoptimizedFields.has(t[0]))||this.initPath.length+t.length>6)Xe(e);else if(!this.deoptimizations.trackEntityAtPathAndGetIfTracked(t,e.args)){for(const n of this.argumentsToBeDeoptimized)n.deoptimizeArgumentsOnInteractionAtPath(e,[...this.initPath,...t],De);this.argumentsToBeDeoptimized.has(qe)||this.deoptimizationInteractions.push({interaction:e,path:t})}}deoptimizePath(e){if(0===e.length)return void this.markReassigned();if(this.deoptimizedFields.has(pe))return;const t=e[0];if(!this.deoptimizedFields.has(t)){this.deoptimizedFields.add(t);for(const e of this.argumentsToBeDeoptimized)e.deoptimizePath([...this.initPath,t]);t===pe&&(this.deoptimizationInteractions=Gi,this.deoptimizations=Wi,this.deoptimizedFields=Hi,this.argumentsToBeDeoptimized=qi)}}getReturnExpressionWhenCalledAtPath(e){return 0===e.length?this.deoptimizePath(Ie):this.deoptimizedFields.has(e[0])||this.deoptimizePath([e[0]]),Ke}includeArgumentPaths(e,t){this.includedPathTracker.includeAllPaths(e,t,this.initPath)}}class Xi extends Ki{constructor(e){super("this",null,Pe,e)}hasEffectsOnInteractionAtPath(e,t,n){return(n.replacedVariableInits.get(this)||qe).hasEffectsOnInteractionAtPath(e,t,n)}}class Ji extends Oi{constructor(e){super(e,e.context),this.parent=e}addDeclaration(e,t,n,s,i){if("var"===i){const r=e.name,o=this.hoistedVariables?.get(r)||this.variables.get(r);if(o){const a=o.kind;if("parameter"===a&&"CatchClause"===o.declarations[0].parent.type){const n=this.parent.parent.addDeclaration(e,t,fs,s,i);return o.renderLikeHoisted(n),this.addHoistedVariable(r,n),n}return"var"===a?(o.addDeclaration(e,n),o):t.error($n(r),e.start)}const a=this.parent.parent.addDeclaration(e,t,n,s,i);return a.markInitializersForDeoptimization(),this.addHoistedVariable(r,a),a}return super.addDeclaration(e,t,n,s,i)}}class Yi extends Oi{constructor(e){super(e,e.context)}addDeclaration(e,t,n,s,i){const r=e.name,o=this.hoistedVariables?.get(r)||this.variables.get(r);if(o){const s=o.kind;if(!("var"!==i&&"function"!==i||"var"!==s&&"function"!==s&&"parameter"!==s))return o.addDeclaration(e,n),o;t.error($n(r),e.start)}const a=new vi(e.name,e,n,s,t,i);return this.variables.set(r,a),a}}class Zi extends Oi{constructor(e,t){super(e,e.context),this.hasRest=!1,this.parameters=[],this.bodyScope=t?new Ji(this):new Yi(this)}addParameterDeclaration(e,t){const{name:n,start:s}=e;if(this.variables.get(n))return this.context.error(function(e){return{code:"DUPLICATE_ARGUMENT_NAME",message:`Duplicate argument name "${e}"`}}(n),s);const i=new Ki(n,e,t,this.context);return this.variables.set(n,i),this.bodyScope.addHoistedVariable(n,i),i}addParameterVariables(e,t){this.parameters=e;for(const t of e)for(const e of t)e.alwaysRendered=!0;this.hasRest=t}includeCallArguments({args:e},t){let n=!1,s=!1;const i=this.hasRest&&this.parameters[this.parameters.length-1];let r=e.length-1;for(let n=1;n=1;o--){const r=this.parameters[o-1]||i,a=e[o];if(r)if(n=!1,0===r.length)s=!0;else for(const e of r)e.calledFromTryStatement&&(n=!0),e.included&&(s=!0,n?a.include(t,!0):(e.includeArgumentPaths(a,t),a.include(t,!1)));(s||a.shouldBeIncluded(t))&&(s=!0,a.include(t,n))}}}class Qi extends Zi{constructor(){super(...arguments),this.returnExpression=null,this.returnExpressions=[]}addReturnExpression(e){this.returnExpressions.push(e)}deoptimizeArgumentsOnCall({args:e}){const{parameters:t}=this;let n=0;for(;n=t.length-1)s.deoptimizePath(Ie);else{const e=t[n];if(e)for(const t of e)t.addArgumentForDeoptimization(s);this.addArgumentToBeDeoptimized(s)}}const s=this.hasRest?t.length-1:t.length;for(;n0?ee(this.body,e,this.start+1,this.end-1,t):super.render(e,t)}}nr.prototype.includeNode=rs,nr.prototype.applyDeoptimizations=os;class sr extends ss{constructor(){super(...arguments),this.declarationInit=null}addExportedVariables(e,t){this.argument.addExportedVariables(e,t)}declare(e,t,n){return this.declarationInit=n,this.argument.declare(e,ir(t),n)}deoptimizeAssignment(e,t){this.argument.deoptimizeAssignment(ir(e),t)}deoptimizePath(e){0===e.length&&this.argument.deoptimizePath(Pe)}hasEffectsOnInteractionAtPath(e,t,n){return e.length>0||this.argument.hasEffectsOnInteractionAtPath(Pe,t,n)}hasEffectsWhenDestructuring(e,t,n){return this.argument.hasEffectsWhenDestructuring(e,ir(t),n)}includeDestructuredIfNecessary(e,t,n){const s=this.argument.includeDestructuredIfNecessary(e,ir(t),n);return!this.included&&s&&this.includeNode(e),this.included}include(e,t){this.included||this.includeNode(e),this.argument.include(e,t)}markDeclarationReached(){this.argument.markDeclarationReached()}applyDeoptimizations(){this.deoptimized=!0,null!==this.declarationInit&&(this.declarationInit.deoptimizePath([pe,pe]),this.scope.context.requestTreeshakingPass())}}sr.prototype.includeNode=is;const ir=e=>e.at(-1)===pe?e:[...e,pe];class rr extends ss{constructor(){super(...arguments),this.parameterVariableValuesDeoptimized=!1,this.includeCallArguments=this.scope.includeCallArguments.bind(this.scope)}get async(){return Fe(this.flags,256)}set async(e){this.flags=je(this.flags,256,e)}get deoptimizedReturn(){return Fe(this.flags,512)}set deoptimizedReturn(e){this.flags=je(this.flags,512,e)}get generator(){return Fe(this.flags,4194304)}set generator(e){this.flags=je(this.flags,4194304,e)}get hasCachedEffects(){return Fe(this.flags,67108864)}set hasCachedEffects(e){this.flags=je(this.flags,67108864,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){2===e.type&&0===t.length?this.scope.deoptimizeArgumentsOnCall(e):this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){this.getObjectEntity().deoptimizePath(e),1===e.length&&e[0]===pe&&(this.scope.getReturnExpression().deoptimizePath(Ie),this.scope.deoptimizeAllParameters())}getLiteralValueAtPath(e,t,n){return this.getObjectEntity().getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return e.length>0?this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e,t,n,s):this.async?(this.deoptimizedReturn||(this.deoptimizedReturn=!0,this.scope.getReturnExpression().deoptimizePath(Ie),this.scope.context.requestTreeshakingPass()),Ke):[this.scope.getReturnExpression(),!1]}hasEffectsOnInteractionAtPath(e,t,n){if(e.length>0||2!==t.type)return this.getObjectEntity().hasEffectsOnInteractionAtPath(e,t,n);if(this.hasCachedEffects)return!0;if(this.async){const{propertyReadSideEffects:e}=this.scope.context.options.treeshake,t=this.scope.getReturnExpression();if(t.hasEffectsOnInteractionAtPath(["then"],et,n)||e&&("always"===e||t.hasEffectsOnInteractionAtPath(["then"],Ze,n)))return this.hasCachedEffects=!0,!0}const{propertyReadSideEffects:s}=this.scope.context.options.treeshake;for(let e=0;e"noSideEffects"===e.type))}parseNode(e){const{body:t,params:n}=e,{scope:s}=this,{bodyScope:i,context:r}=s,o=this.params=n.map(e=>new(r.getNodeConstructor(e.type))(this,s).parseNode(e));return s.addParameterVariables(o.map(e=>e.declare("parameter",Pe,qe)),o[o.length-1]instanceof sr),this.body=new(r.getNodeConstructor(t.type))(this,i).parseNode(t),super.parseNode(e)}}rr.prototype.preventChildBlockScope=!0,rr.prototype.includeNode=rs,rr.prototype.applyDeoptimizations=os;class or extends rr{constructor(){super(...arguments),this.objectEntity=null}createScope(e){this.scope=new er(e,this),this.constructedEntity=new Ls(new Map,zs),this.scope.thisVariable.addArgumentForDeoptimization(this.constructedEntity)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){super.deoptimizeArgumentsOnInteractionAtPath(e,t,n),2===e.type&&0===t.length&&e.args[0]&&this.scope.thisVariable.addArgumentForDeoptimization(e.args[0])}hasEffects(e){return!this.annotationNoSideEffects&&!!this.id?.hasEffects(e)}hasEffectsOnInteractionAtPath(e,t,n){if(this.annotationNoSideEffects&&0===e.length&&2===t.type)return!1;if(super.hasEffectsOnInteractionAtPath(e,t,n))return!0;if(0===e.length&&2===t.type){const e=n.replacedVariableInits.get(this.scope.thisVariable);n.replacedVariableInits.set(this.scope.thisVariable,t.withNew?this.constructedEntity:qe);const{brokenFlow:s,ignore:i,replacedVariableInits:r}=n;if(n.ignore={breaks:!1,continues:!1,labels:new Set,returnYield:!0,this:t.withNew},this.body.hasEffects(n))return this.hasCachedEffects=!0,!0;n.brokenFlow=s,e?r.set(this.scope.thisVariable,e):r.delete(this.scope.thisVariable),n.ignore=i}return!1}include(e,t){super.include(e,t),this.id?.include(e,t);const n=this.scope.argumentsVariable.included;for(const s of this.params)s instanceof ki&&!n||s.include(e,t)}includeNode(e){this.included=!0;const t=this.scope.argumentsVariable.included;for(const n of this.params)n instanceof ki&&!t||n.includePath(Ie,e)}initialise(){super.initialise(),this.id?.declare("function",Pe,this)}getObjectEntity(){return null!==this.objectEntity?this.objectEntity:this.objectEntity=new Ls([{key:"prototype",kind:"init",property:new Ls([],zs)}],zs)}}class ar extends or{initialise(){super.initialise(),null!==this.id&&(this.id.variable.isId=!0)}onlyFunctionCallUsed(){return this.id?.variable.getOnlyFunctionCallUsed()??super.onlyFunctionCallUsed()}parseNode(e){return null!==e.id&&(this.id=new ki(this,this.scope.parent).parseNode(e.id)),super.parseNode(e)}}class lr extends ss{bind(){super.bind();const e=this.declarationName||this.scope.context.getModuleName();this.variable.name=this.scope.variables.get(e)?`${e}_default`:e}include(e,t){this.included=!0,this.declaration.include(e,t),t&&this.scope.context.includeVariableInModule(this.variable,Ie,e)}includePath(e,t){this.included=!0,this.declaration.includePath(e,t)}initialise(){super.initialise();const e=this.declaration;this.declarationName=e.id&&e.id.name||this.declaration.name,this.variable=this.scope.addExportDefaultDeclaration(this,this.scope.context),this.scope.context.addExport(this)}removeAnnotations(e){this.declaration.removeAnnotations(e)}render(e,t,n){const{start:s,end:i}=n,r=function(e,t){return Y(e,X(e,"default",t)+7)}(e.original,this.start);if(this.declaration instanceof ar)this.renderNamedDeclaration(e,r,null===this.declaration.id?function(e,t){const n=X(e,"function",t)+8;e=e.slice(n,X(e,"(",n));const s=X(e,"*");return-1===s?n:n+s+1}(e.original,r):null,t);else if(this.declaration instanceof Fi)this.renderNamedDeclaration(e,r,null===this.declaration.id?X(e.original,"class",s)+5:null,t);else{if(this.variable.getOriginalVariable()!==this.variable)return void q(this,e,s,i);if(!this.variable.included)return e.remove(this.start,r),this.declaration.render(e,t,{renderedSurroundingElement:it}),void(";"!==e.original[this.end-1]&&e.appendLeft(this.end,";"));this.renderVariableDeclaration(e,r,t)}this.declaration.render(e,t)}renderNamedDeclaration(e,t,n,s){const{exportNamesByVariable:i,format:r,snippets:{getPropertyAccess:o}}=s,a=this.variable.getName(o);e.remove(this.start,t),null!==n&&e.appendLeft(n,` ${a}`),"system"===r&&this.declaration instanceof Fi&&i.has(this.variable)&&e.appendLeft(this.end,` ${se([this.variable],s)};`)}renderVariableDeclaration(e,t,{format:n,exportNamesByVariable:s,snippets:{cnst:i,getPropertyAccess:r}}){const o=59===e.original.charCodeAt(this.end-1),a="system"===n&&s.get(this.variable);a?(e.overwrite(this.start,t,`${i} ${this.variable.getName(r)} = exports(${JSON.stringify(a[0])}, `),e.appendRight(o?this.end-1:this.end,")"+(o?"":";"))):(e.overwrite(this.start,t,`${i} ${this.variable.getName(r)} = `),o||e.appendLeft(this.end,";"))}}lr.prototype.needsBoundaries=!0,lr.prototype.includeNode=rs,lr.prototype.applyDeoptimizations=os;const cr=/[\n\r'\\\u2028\u2029]/,ur=/([\n\r'\u2028\u2029])/g,dr=/\\/g;function hr(e){return cr.test(e)?e.replace(dr,"\\\\").replace(ur,"\\$1"):e}const pr="_interopDefault",fr="_interopDefaultCompat",mr="_interopNamespace",gr="_interopNamespaceCompat",yr="_interopNamespaceDefault",br="_interopNamespaceDefaultOnly",Er="_mergeNamespaces",xr="_documentCurrentScript",Ar={auto:pr,compat:fr,default:null,defaultOnly:null,esModule:null},Sr=(e,t)=>"esModule"===e||t&&("auto"===e||"compat"===e),$r={auto:mr,compat:gr,default:yr,defaultOnly:br,esModule:null},vr=(e,t)=>"esModule"!==e&&Sr(e,t),Pr=(e,t,n,s,i,r,o)=>{const a=new Set(e);for(const e of zr)t.has(e)&&a.add(e);return zr.map(e=>a.has(e)?Ir[e](n,s,i,r,o,a):"").join("")},Ir={[xr]:(e,{_:t,n:n})=>`var ${xr}${t}=${t}typeof document${t}!==${t}'undefined'${t}?${t}document.currentScript${t}:${t}null;${n}`,[fr](e,t,n){const{_:s,getDirectReturnFunction:i,n:r}=t,[o,a]=i(["e"],{functionReturn:!0,lineBreakIndent:null,name:fr});return`${o}${kr(t)}${s}?${s}${n?wr(t):Nr(t)}${a}${r}${r}`},[pr](e,t,n){const{_:s,getDirectReturnFunction:i,n:r}=t,[o,a]=i(["e"],{functionReturn:!0,lineBreakIndent:null,name:pr});return`${o}e${s}&&${s}e.__esModule${s}?${s}${n?wr(t):Nr(t)}${a}${r}${r}`},[gr](e,t,n,s,i,r){const{_:o,getDirectReturnFunction:a,n:l}=t;if(r.has(yr)){const[e,n]=a(["e"],{functionReturn:!0,lineBreakIndent:null,name:gr});return`${e}${kr(t)}${o}?${o}e${o}:${o}${yr}(e)${n}${l}${l}`}return`function ${gr}(e)${o}{${l}${e}if${o}(${kr(t)})${o}return e;${l}`+Cr(e,e,t,n,s,i)+`}${l}${l}`},[br](e,t,n,s,i){const{getDirectReturnFunction:r,getObject:o,n:a,_:l}=t,[c,u]=r(["e"],{functionReturn:!0,lineBreakIndent:null,name:br});return`${c}${Tr(s,Br(i,o([[null,`__proto__:${l}null`],["default","e"]],{lineBreakIndent:null}),t))}${u}${a}${a}`},[yr](e,t,n,s,i){const{_:r,n:o}=t;return`function ${yr}(e)${r}{${o}`+Cr(e,e,t,n,s,i)+`}${o}${o}`},[mr](e,t,n,s,i,r){const{_:o,getDirectReturnFunction:a,n:l}=t;if(r.has(yr)){const[e,t]=a(["e"],{functionReturn:!0,lineBreakIndent:null,name:mr});return`${e}e${o}&&${o}e.__esModule${o}?${o}e${o}:${o}${yr}(e)${t}${l}${l}`}return`function ${mr}(e)${o}{${l}${e}if${o}(e${o}&&${o}e.__esModule)${o}return e;${l}`+Cr(e,e,t,n,s,i)+`}${l}${l}`},[Er](e,t,n,s,i){const{_:r,cnst:o,n:a}=t,l="var"===o&&n;return`function ${Er}(n, m)${r}{${a}${e}${Dr(`{${a}${e}${e}${e}if${r}(k${r}!==${r}'default'${r}&&${r}!(k in n))${r}{${a}`+(n?l?Mr:_r:Lr)(e,e+e+e+e,t)+`${e}${e}${e}}${a}`+`${e}${e}}`,l,e,t)}${a}${e}return ${Tr(s,Br(i,"n",t))};${a}}${a}${a}`}},wr=({_:e,getObject:t})=>`e${e}:${e}${t([["default","e"]],{lineBreakIndent:null})}`,Nr=({_:e,getPropertyAccess:t})=>`e${t("default")}${e}:${e}e`,kr=({_:e})=>`e${e}&&${e}typeof e${e}===${e}'object'${e}&&${e}'default'${e}in e`,Cr=(e,t,n,s,i,r)=>{const{_:o,cnst:a,getObject:l,getPropertyAccess:c,n:u,s:d}=n,h=`{${u}`+(s?Or:Lr)(e,t+e+e,n)+`${t}${e}}`;return`${t}${a} n${o}=${o}Object.create(null${r?`,${o}{${o}[Symbol.toStringTag]:${o}${Vr(l)}${o}}`:""});${u}${t}if${o}(e)${o}{${u}${t}${e}${Rr(h,!s,n)}${u}${t}}${u}${t}n${c("default")}${o}=${o}e;${u}${t}return ${Tr(i,"n")}${d}${u}`},Rr=(e,t,{_:n,cnst:s,getFunctionIntro:i,s:r})=>"var"!==s||t?`for${n}(${s} k in e)${n}${e}`:`Object.keys(e).forEach(${i(["k"],{isAsync:!1,name:null})}${e})${r}`,Dr=(e,t,n,{_:s,cnst:i,getDirectReturnFunction:r,getFunctionIntro:o,n:a})=>{if(t){const[t,i]=r(["e"],{functionReturn:!1,lineBreakIndent:{base:n,t:n},name:null});return`m.forEach(${t}e${s}&&${s}typeof e${s}!==${s}'string'${s}&&${s}!Array.isArray(e)${s}&&${s}Object.keys(e).forEach(${o(["k"],{isAsync:!1,name:null})}${e})${i});`}return`for${s}(var i${s}=${s}0;${s}i${s}<${s}m.length;${s}i++)${s}{${a}${n}${n}${i} e${s}=${s}m[i];${a}${n}${n}if${s}(typeof e${s}!==${s}'string'${s}&&${s}!Array.isArray(e))${s}{${s}for${s}(${i} k in e)${s}${e}${s}}${a}${n}}`},Or=(e,t,n)=>{const{_:s,n:i}=n;return`${t}if${s}(k${s}!==${s}'default')${s}{${i}`+Mr(e,t+e,n)+`${t}}${i}`},Mr=(e,t,{_:n,cnst:s,getDirectReturnFunction:i,n:r})=>{const[o,a]=i([],{functionReturn:!0,lineBreakIndent:null,name:null});return`${t}${s} d${n}=${n}Object.getOwnPropertyDescriptor(e,${n}k);${r}${t}Object.defineProperty(n,${n}k,${n}d.get${n}?${n}d${n}:${n}{${r}${t}${e}enumerable:${n}true,${r}${t}${e}get:${n}${o}e[k]${a}${r}${t}});${r}`},_r=(e,t,{_:n,cnst:s,getDirectReturnFunction:i,n:r})=>{const[o,a]=i([],{functionReturn:!0,lineBreakIndent:null,name:null});return`${t}${s} d${n}=${n}Object.getOwnPropertyDescriptor(e,${n}k);${r}${t}if${n}(d)${n}{${r}${t}${e}Object.defineProperty(n,${n}k,${n}d.get${n}?${n}d${n}:${n}{${r}${t}${e}${e}enumerable:${n}true,${r}${t}${e}${e}get:${n}${o}e[k]${a}${r}${t}${e}});${r}${t}}${r}`},Lr=(e,t,{_:n,n:s})=>`${t}n[k]${n}=${n}e[k];${s}`,Tr=(e,t)=>e?`Object.freeze(${t})`:t,Br=(e,t,{_:n,getObject:s})=>e?`Object.defineProperty(${t},${n}Symbol.toStringTag,${n}${Vr(s)})`:t,zr=Object.keys(Ir);function Vr(e){return e([["value","'Module'"]],{lineBreakIndent:null})}class Fr extends ss{deoptimizeArgumentsOnInteractionAtPath(){}getLiteralValueAtPath(e){return e.length>0||null===this.value&&110!==this.scope.context.code.charCodeAt(this.start)||"bigint"==typeof this.value||47===this.scope.context.code.charCodeAt(this.start)?Ue:this.value}getReturnExpressionWhenCalledAtPath(e){return 1!==e.length?Ke:ks(this.members,e[0])}hasEffectsOnInteractionAtPath(e,t,n){switch(t.type){case 0:return e.length>(null===this.value?0:1);case 1:return!0;case 2:return!!(this.included&&this.value instanceof RegExp&&(this.value.global||this.value.sticky))||(1!==e.length||Ns(this.members,e[0],t,n))}}initialise(){super.initialise(),this.members=function(e){if(e instanceof RegExp)return Is;switch(typeof e){case"boolean":return vs;case"number":return Ps;case"string":return ws}return Object.create(null)}(this.value)}parseNode(e){return this.value=e.value,this.regex=e.regex,super.parseNode(e)}render(e){"string"==typeof this.value&&e.indentExclusionRanges.push([this.start+1,this.end-1])}}function jr(e,t,n,s,i){if("getLiteralValueAtPathAsChainElement"in t){const n=t.getLiteralValueAtPathAsChainElement(Pe,De,i);if(n===ns||e.optional&&null==n)return ns}else if(e.optional&&null==t.getLiteralValueAtPath(Pe,De,i))return ns;return e.getLiteralValueAtPath(n,s,i)}function Ur(e){return e.computed?function(e){if(e instanceof Fr)return String(e.value);return null}(e.property):e.property.name}function Gr(e){const t=e.propertyKey,n=e.object;if("string"==typeof t){if(n instanceof ki)return[{key:n.name,pos:n.start},{key:t,pos:e.property.start}];if(n instanceof Hr){const s=Gr(n);return s&&[...s,{key:t,pos:e.property.start}]}}return null}Fr.prototype.includeNode=is;class Hr extends ss{constructor(){super(...arguments),this.promiseHandler=null,this.variable=null,this.expressionsToBeDeoptimized=[]}get computed(){return Fe(this.flags,1024)}set computed(e){this.flags=je(this.flags,1024,e)}get optional(){return Fe(this.flags,128)}set optional(e){this.flags=je(this.flags,128,e)}get assignmentDeoptimized(){return Fe(this.flags,16)}set assignmentDeoptimized(e){this.flags=je(this.flags,16,e)}get bound(){return Fe(this.flags,32)}set bound(e){this.flags=je(this.flags,32,e)}get isUndefined(){return Fe(this.flags,64)}set isUndefined(e){this.flags=je(this.flags,64,e)}bind(){this.bound=!0;const e=Gr(this),t=e&&this.scope.findVariable(e[0].key);if(t?.isNamespace){const n=Wr(t,e.slice(1),this.scope.context);n?"undefined"===n?this.isUndefined=!0:(this.variable=n,this.scope.addNamespaceMemberAccess(function(e){let t=e[0].key;for(let n=1;n0&&n.hasEffectsOnInteractionAtPath(t,Ze,e)}include(e,t){this.included||this.includeNode(e),this.object.include(e,t),this.property.include(e,t),t&&this.variable?.includePath(Ie,e)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.variable?this.scope.context.includeVariableInModule(this.variable,Pe,e):this.isUndefined||this.object.includePath([this.propertyKey],e)}includeNodeAsAssignmentTarget(e){this.included=!0,this.assignmentDeoptimized||this.applyAssignmentDeoptimization(),this.variable?this.scope.context.includeVariableInModule(this.variable,Pe,e):this.isUndefined||this.object.includePath([this.propertyKey],e)}includePath(e,t){this.included||this.includeNode(t),this.variable?this.variable?.includePath(e,t):this.isUndefined||this.object.includePath([this.propertyKey,...e.length<6?e:[...e.slice(0,6),pe]],t)}includeAsAssignmentTarget(e,t,n){this.included||this.includeNodeAsAssignmentTarget(e),n&&!this.deoptimized&&this.applyDeoptimizations(),this.object.include(e,t),this.property.include(e,t)}includeCallArguments(e,t){this.promiseHandler?this.promiseHandler.includeCallArguments(e,t):this.variable?this.variable.includeCallArguments(e,t):Je(e,t)}includeDestructuredIfNecessary(){this.scope.context.error({message:"includeDestructuredIfNecessary is currently not supported for MemberExpressions"},this.start)}initialise(){super.initialise(),this.dynamicPropertyKey=Ur(this),this.propertyKey=null===this.dynamicPropertyKey?pe:this.dynamicPropertyKey,this.accessInteraction={args:[this.object],type:0}}render(e,t,{renderedParentType:n,isCalleeOfRenderedParent:s,renderedSurroundingElement:i}=oe){if(this.variable||this.isUndefined){const{snippets:{getPropertyAccess:i}}=t;let r=this.variable?this.variable.getName(i):"undefined";n&&s&&(r="0, "+r),e.overwrite(this.start,this.end,r,{contentOnly:!0,storeName:!0})}else n&&s&&e.appendRight(this.start,"0, "),this.object.render(e,t,{renderedSurroundingElement:i}),this.property.render(e,t)}setAssignedValue(e){this.assignmentInteraction={args:[this.object,e],type:1}}applyDeoptimizations(){this.deoptimized=!0;const{propertyReadSideEffects:e}=this.scope.context.options.treeshake;this.bound&&e&&!(this.variable||this.isUndefined||this.promiseHandler)&&(this.object.deoptimizeArgumentsOnInteractionAtPath(this.accessInteraction,[this.propertyKey],De),this.scope.context.requestTreeshakingPass()),this.variable&&(this.variable.addUsedPlace(this),this.scope.context.requestTreeshakingPass())}applyAssignmentDeoptimization(){this.assignmentDeoptimized=!0;const{propertyReadSideEffects:e}=this.scope.context.options.treeshake;this.bound&&e&&!this.variable&&!this.isUndefined&&(this.object.deoptimizeArgumentsOnInteractionAtPath(this.assignmentInteraction,[this.propertyKey],De),this.scope.context.requestTreeshakingPass())}disallowNamespaceReassignment(){if(this.object instanceof ki){this.scope.findVariable(this.object.name).isNamespace&&(this.variable&&this.scope.context.includeVariableInModule(this.variable,Ie,ze()),this.scope.context.log(ft,ln(this.object.name,this.scope.context.module.id),this.start))}}getDynamicPropertyKey(){if(null===this.dynamicPropertyKey){this.dynamicPropertyKey=this.propertyKey;const e=this.property.getLiteralValueAtPath(Pe,De,this);return this.dynamicPropertyKey="symbol"==typeof e?Ae.has(e)?e:pe:String(e)}return this.dynamicPropertyKey}hasAccessEffect(e){const{propertyReadSideEffects:t}=this.scope.context.options.treeshake;return!(this.variable||this.isUndefined)&&t&&("always"===t||this.object.hasEffectsOnInteractionAtPath([this.getDynamicPropertyKey()],this.accessInteraction,e))}}function Wr(e,t,n){if(0===t.length)return e;if(!e.isNamespace||e instanceof _n)return null;const s=t[0].key,[i,r]=e.context.traceExport(s);if(!i){if(1===t.length){const i=e.context.fileName;return n.log(ft,bn(s,n.module.id,i,!!r?.missingButExportExists),t[0].pos),"undefined"}return null}return Wr(i,t.slice(1),n)}const qr="ROLLUP_FILE_URL_",Kr="ROLLUP_FILE_URL_OBJ_",Xr="import";class Jr extends ss{constructor(){super(...arguments),this.metaProperty=null,this.preliminaryChunkId=null,this.referenceId=null}getReferencedFileName(e){const{meta:{name:t},metaProperty:n}=this;if(t===Xr){if(n?.startsWith(Kr))return e.getFileName(n.slice(20));if(n?.startsWith(qr))return e.getFileName(n.slice(16))}return null}hasEffects(){return!1}hasEffectsOnInteractionAtPath(e,{type:t}){return e.length>1||0!==t}include(){this.included||this.includeNode()}includeNode(){if(this.included=!0,this.meta.name===Xr){this.scope.context.addImportMeta(this);const e=this.parent,t=this.metaProperty=e instanceof Hr&&"string"==typeof e.propertyKey?e.propertyKey:null;t?.startsWith(Kr)?this.referenceId=t.slice(20):t?.startsWith(qr)&&(this.referenceId=t.slice(16))}}render(e,t){const{format:n,pluginDriver:s,snippets:i}=t,{scope:{context:{module:r}},meta:{name:o},metaProperty:a,parent:l,preliminaryChunkId:c,referenceId:u,start:d,end:h}=this,{id:p,info:{attributes:f}}=r;if(o!==Xr)return;const m=c;if(u){const t=s.getFileName(u),i=V(H(j(m),t)),r=!!a?.startsWith(Kr),o=s.hookFirstSync("resolveFileUrl",[{attributes:f,chunkId:m,fileName:t,format:n,moduleId:p,referenceId:u,relativePath:i}])||oo[n](i,r);return void e.overwrite(l.start,l.end,o,{contentOnly:!0})}let g=s.hookFirstSync("resolveImportMeta",[a,{attributes:f,chunkId:m,format:n,moduleId:p}]);g||(g=ao[n]?.(a,{chunkId:m,snippets:i}),t.accessedDocumentCurrentScript||=Yr.includes(n)&&"undefined"!==g),"string"==typeof g&&(l instanceof Hr?e.overwrite(l.start,l.end,g,{contentOnly:!0}):e.overwrite(d,h,g,{contentOnly:!0}))}setResolution(e,t,n){this.preliminaryChunkId=n;const s=(this.metaProperty?.startsWith(qr)||this.metaProperty?.startsWith(Kr)?Qr:Zr)[e];s.length>0&&this.scope.addAccessedGlobals(s,t)}}const Yr=["cjs","iife","umd"],Zr={amd:["document","module","URL"],cjs:["document","require","URL",xr],es:[],iife:["document","URL",xr],system:["module"],umd:["document","require","URL",xr]},Qr={amd:["document","require","URL"],cjs:["document","require","URL"],es:[],iife:["document","URL"],system:["module","URL"],umd:["document","require","URL"]},eo=(e,t,n="URL")=>`new ${n}(${e})${t?"":".href"}`,to=(e,t,n=!1)=>eo(`'${hr(e)}', ${n?"typeof document === 'undefined' ? location.href : ":""}document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT' && document.currentScript.src || document.baseURI`,t),no=e=>(t,{chunkId:n})=>{const s=e(n);return null===t?`({ url: ${s} })`:"url"===t?s:"undefined"},so=(e,t)=>`require('u' + 'rl').pathToFileURL(${e})${t?"":".href"}`,io=(e,t)=>so(`__dirname + '/${hr(e)}'`,t),ro=(e,t=!1)=>`${t?"typeof document === 'undefined' ? location.href : ":""}(${xr} && ${xr}.tagName.toUpperCase() === 'SCRIPT' && ${xr}.src || new URL('${hr(e)}', document.baseURI).href)`,oo={amd:(e,t)=>("."!==e[0]&&(e="./"+e),eo(`require.toUrl('${hr(e)}'), document.baseURI`,t)),cjs:(e,t)=>`(typeof document === 'undefined' ? ${io(e,t)} : ${to(e,t)})`,es:(e,t)=>eo(`'${hr(e)}', import.meta.url`,t),iife:(e,t)=>to(e,t),system:(e,t)=>eo(`'${hr(e)}', module.meta.url`,t),umd:(e,t)=>`(typeof document === 'undefined' && typeof location === 'undefined' ? ${io(e,t)} : ${to(e,t,!0)})`},ao={amd:no(()=>eo("module.uri, document.baseURI",!1)),cjs:no(e=>`(typeof document === 'undefined' ? ${so("__filename",!1)} : ${ro(e)})`),iife:no(e=>ro(e)),system:(e,{snippets:{getPropertyAccess:t}})=>null===e?"module.meta":`module.meta${t(e)}`,umd:no(e=>`(typeof document === 'undefined' && typeof location === 'undefined' ? ${so("__filename",!1)} : ${ro(e,!0)})`)};class lo extends On{constructor(){super("undefined")}getLiteralValueAtPath(){}}class co extends vi{constructor(e,t){super("default",e,e.declaration,Pe,t,"other"),this.hasId=!1,this.originalId=null,this.originalVariable=null;const n=e.declaration;(n instanceof ar||n instanceof Fi)&&n.id?(this.hasId=!0,this.originalId=n.id):n instanceof ki&&(this.originalId=n)}addReference(e){this.hasId||(this.name=e.name)}addUsedPlace(e){const t=this.getOriginalVariable();t===this?super.addUsedPlace(e):t.addUsedPlace(e)}forbidName(e){const t=this.getOriginalVariable();t===this?super.forbidName(e):t.forbidName(e)}getAssignedVariableName(){return this.originalId&&this.originalId.name||null}getBaseVariableName(){const e=this.getOriginalVariable();return e===this?super.getBaseVariableName():e.getBaseVariableName()}getDirectOriginalVariable(){return!this.originalId||!this.hasId&&(this.originalId.isPossibleTDZ()||this.originalId.variable.isReassigned||this.originalId.variable instanceof lo||"syntheticNamespace"in this.originalId.variable)?null:this.originalId.variable}getName(e){const t=this.getOriginalVariable();return t===this?super.getName(e):t.getName(e)}getOriginalVariable(){if(this.originalVariable)return this.originalVariable;let e,t=this;const n=new Set;do{n.add(t),e=t,t=e.getDirectOriginalVariable()}while(t instanceof co&&!n.has(t));return this.originalVariable=t||e}}class uo extends On{constructor(e){super(e.getModuleName()),this.areAllMembersDeoptimized=!1,this.mergedNamespaces=[],this.nonExplicitNamespacesIncluded=!1,this.referencedEarly=!1,this.references=[],this.context=e,this.module=e.module}addReference(e){this.references.push(e),this.name=e.name}deoptimizeArgumentsOnInteractionAtPath(e,t,n){if(t.length>1||1===t.length&&2===e.type){const s=t[0];"string"==typeof s?this.module.getExportedVariablesByName().get(s)?.deoptimizeArgumentsOnInteractionAtPath(e,t.slice(1),n):Xe(e)}}deoptimizePath(e){if(e.length>1){const t=e[0];if("string"==typeof t)this.module.getExportedVariablesByName().get(t)?.deoptimizePath(e.slice(1));else if(!this.areAllMembersDeoptimized){this.areAllMembersDeoptimized=!0;for(const e of this.module.getExportedVariablesByName().values())e.deoptimizePath(Ie)}}}getLiteralValueAtPath(e){return e[0]===ye?"Module":Ue}hasEffectsOnInteractionAtPath(e,t,n){const{type:s}=t;if(0===e.length)return!0;if(1===e.length&&2!==s)return 1===s;const i=e[0];if("string"!=typeof i)return!0;const r=this.module.getExportedVariablesByName().get(i);return!r||r.hasEffectsOnInteractionAtPath(e.slice(1),t,n)}includePath(e,t){super.includePath(e,t),this.includeMemberPath(e,t)}includeMemberPath(e,t){if(e.length>0){const[n,...s]=e;if("string"==typeof n){const e=this.module.getExportedVariablesByName().get(n);e?this.context.includeVariableInModule(e,s,t):this.includeNonExplicitNamespaces()}else n&&(this.module.includeAllExports(),this.includeNonExplicitNamespaces())}}prepare(e){this.mergedNamespaces.length>0&&this.module.scope.addAccessedGlobals([Er],e)}renderBlock(e){const{exportNamesByVariable:t,format:n,freeze:s,indent:i,symbols:r,snippets:{_:o,cnst:a,getObject:l,getPropertyAccess:c,n:u,s:d}}=e,h=[...this.module.getExportedVariablesByName().entries()].filter(([e,t])=>!e.startsWith("*")&&t.included).map(([e,t])=>this.referencedEarly||t.isReassigned||t===this?[null,`get ${Gn(e)}${o}()${o}{${o}return ${t.getName(c)}${d}${o}}`]:[e,t.getName(c)]);h.unshift([null,`__proto__:${o}null`]);let p=l(h,{lineBreakIndent:{base:"",t:i}});if(this.mergedNamespaces.length>0){const e=this.mergedNamespaces.map(e=>e.getName(c));p=`/*#__PURE__*/${Er}(${p},${o}[${e.join(`,${o}`)}])`}else r&&(p=`/*#__PURE__*/Object.defineProperty(${p},${o}Symbol.toStringTag,${o}${Vr(l)})`),s&&(p=`/*#__PURE__*/Object.freeze(${p})`);return p=`${a} ${this.getName(c)}${o}=${o}${p};`,"system"===n&&t.has(this)&&(p+=`${u}${se([this],e)};`),p}renderFirst(){return this.referencedEarly}setMergedNamespaces(e){this.mergedNamespaces=e;const t=this.context.getModuleExecIndex();for(const e of this.references){const{context:n}=e.scope;if(n.getModuleExecIndex()<=t){this.referencedEarly=!0;break}}}includeNonExplicitNamespaces(){this.nonExplicitNamespacesIncluded||(this.nonExplicitNamespacesIncluded=!0,this.setMergedNamespaces(this.module.includeAndGetAdditionalMergedNamespaces()))}}uo.prototype.isNamespace=!0;const ho=e=>Object.create(e,{includePath:{value(t,n){e.includeMemberPath(t,n)}}});class po extends On{constructor(e,t,n){super(t),this.baseVariable=null,this.context=e,this.module=e.module,this.syntheticNamespace=n}getBaseVariable(){if(this.baseVariable)return this.baseVariable;let e=this.syntheticNamespace;for(;e instanceof co||e instanceof po;){if(e instanceof co){const t=e.getOriginalVariable();if(t===e)break;e=t}e instanceof po&&(e=e.syntheticNamespace)}return this.baseVariable=e}getBaseVariableName(){return this.syntheticNamespace.getBaseVariableName()}getName(e){return`${this.syntheticNamespace.getName(e)}${e(this.name)}`}includePath(e,t){super.includePath(e,t),this.context.includeVariableInModule(this.syntheticNamespace,[this.name,...e],t)}setRenderNames(e,t){super.setRenderNames(e,t)}}class fo{constructor(e,t,n){this.options=t,this.inputBase=n,this.defaultVariableName="",this.namespaceVariableName="",this.variableName="",this.fileName=null,this.importAttributes=null,this.id=e.id,this.moduleInfo=e.info,this.renormalizeRenderPath=e.renormalizeRenderPath,this.suggestedVariableName=e.suggestedVariableName}get moduleSideEffects(){return this.moduleInfo.moduleSideEffects}getFileName(){if(this.fileName)return this.fileName;const{paths:e}=this.options;return this.fileName=("function"==typeof e?e(this.id):e[this.id])||(this.renormalizeRenderPath?V(H(this.inputBase,this.id)):this.id)}getImportAttributes(e){return this.importAttributes||=mo(["es","cjs"].includes(this.options.format)&&this.options.externalImportAttributes&&this.moduleInfo.attributes,e)}getImportPath(e){return hr(this.renormalizeRenderPath?$t(e,this.getFileName(),"amd"===this.options.format,!1):this.getFileName())}}function mo(e,{getObject:t}){if(!e)return null;const n=Object.entries(e).map(([e,t])=>[e,`'${t}'`]);return n.length>0?t(n,{lineBreakIndent:null}):null}function go(e){return e.endsWith(".js")?e.slice(0,-3):e}function yo(e,t){return e.autoId?`${e.basePath?e.basePath+"/":""}${go(t)}`:e.id??""}function bo(e,t,n,s,i,r,o,a,l="return "){const{_:c,getDirectReturnFunction:u,getFunctionIntro:d,getPropertyAccess:h,n:p,s:f}=i;if(!n)return`${p}${p}${l}${function(e,t,n,s,i){if(e.length>0)return e[0].local;for(const{defaultVariableName:e,importPath:r,isChunk:o,name:a,namedExportsMode:l,namespaceVariableName:c,reexports:u}of t)if(u)return Eo(a,u[0].imported,l,o,e,c,n,r,s,i)}(e,t,s,o,h)};`;let m="";if(n)for(const{defaultVariableName:e,importPath:n,isChunk:i,name:a,namedExportsMode:l,namespaceVariableName:d,reexports:f}of t)if(f)for(const t of f)if("*"!==t.reexported){const f=Eo(a,t.imported,l,i,e,d,s,n,o,h);if(m&&(m+=p),"*"!==t.imported&&t.needsLiveBinding){const[e,n]=u([],{functionReturn:!0,lineBreakIndent:null,name:null});m+=`Object.defineProperty(exports,${c}${JSON.stringify(t.reexported)},${c}{${p}${r}enumerable:${c}true,${p}${r}get:${c}${e}${f}${n}${p}});`}else"__proto__"===t.reexported?m+=`Object.defineProperty(exports,${c}"__proto__",${c}{${p}${r}enumerable:${c}true,${p}${r}value:${c}${f}${p}});`:m+=`exports${h(t.reexported)}${c}=${c}${f};`}for(const{exported:t,local:n}of e){const e=`exports${h(t)}`;e!==n&&(m&&(m+=p),m+="__proto__"===t?`Object.defineProperty(exports,${c}"__proto__",${c}{${p}${r}enumerable:${c}true,${p}${r}value:${c}${n}${p}});`:`${e}${c}=${c}${n};`)}if(n)for(const{name:e,reexports:n}of t)if(n)for(const t of n)if("*"===t.reexported){if(m&&(m+=p),!t.needsLiveBinding&&a){const t="'__proto__'";m+=`Object.prototype.hasOwnProperty.call(${e},${c}${t})${c}&&${p}${r}!Object.prototype.hasOwnProperty.call(exports,${c}${t})${c}&&${p}${r}Object.defineProperty(exports,${c}${t},${c}{${p}${r}${r}enumerable:${c}true,${p}${r}${r}value:${c}${e}[${t}]${p}${r}});${p}${p}`}const n=`{${p}${r}if${c}(k${c}!==${c}'default'${c}&&${c}!Object.prototype.hasOwnProperty.call(exports,${c}k))${c}${So(e,t.needsLiveBinding,r,i)}${f}${p}}`;m+=`Object.keys(${e}).forEach(${d(["k"],{isAsync:!1,name:null})}${n});`}return m?`${p}${p}${m}`:""}function Eo(e,t,n,s,i,r,o,a,l,c){if("default"===t){if(!s){const t=o(a),n=Ar[t]?i:e;return Sr(t,l)?`${n}${c("default")}`:n}return n?`${e}${c("default")}`:e}return"*"===t?(s?!n:$r[o(a)])?r:e:`${e}${c(t)}`}function xo(e){return e([["value","true"]],{lineBreakIndent:null})}function Ao(e,t,n,{_:s,getObject:i}){if(e){if(t)return n?`Object.defineProperties(exports,${s}${i([["__esModule",xo(i)],[null,`[Symbol.toStringTag]:${s}${Vr(i)}`]],{lineBreakIndent:null})});`:`Object.defineProperty(exports,${s}'__esModule',${s}${xo(i)});`;if(n)return`Object.defineProperty(exports,${s}Symbol.toStringTag,${s}${Vr(i)});`}return""}const So=(e,t,n,{_:s,getDirectReturnFunction:i,n:r})=>{if(t){const[t,o]=i([],{functionReturn:!0,lineBreakIndent:null,name:null});return`Object.defineProperty(exports,${s}k,${s}{${r}${n}${n}enumerable:${s}true,${r}${n}${n}get:${s}${t}${e}[k]${o}${r}${n}})`}return`exports[k]${s}=${s}${e}[k]`};function $o(e,t,n,s,i,r,o,a){const{_:l,cnst:c,n:u}=a,d=new Set,h=[],p=(e,t,n)=>{d.add(t),h.push(`${c} ${e}${l}=${l}/*#__PURE__*/${t}(${n});`)};for(const{defaultVariableName:n,imports:s,importPath:i,isChunk:r,name:o,namedExportsMode:a,namespaceVariableName:l,reexports:c}of e)if(r){for(const{imported:e,reexported:t}of[...s||[],...c||[]])if("*"===e&&"*"!==t){a||p(l,br,o);break}}else{const e=t(i);let r=!1,a=!1;for(const{imported:t,reexported:i}of[...s||[],...c||[]]){let s,c;"default"===t?r||(r=!0,n!==l&&(c=n,s=Ar[e])):"*"!==t||"*"===i||a||(a=!0,s=$r[e],c=l),s&&p(c,s,o)}}return`${Pr(d,r,o,a,n,s,i)}${h.length>0?`${h.join(u)}${u}${u}`:""}`}function vo(e,t,n){const s=n.find(e=>e.sourcePhaseImport);s&&Bt(function(e,t,n){return{code:"SOURCE_PHASE_FORMAT_UNSUPPORTED",message:`Source phase imports are not supported for the "${e}" output format, importing "${n}" in "${t}". Use the "es" output format to support source phase imports.`,url:vt(Lt)}}(e,t,s.importPath))}function Po(e,t){return"."!==e[0]?e:t?(n=e).endsWith(".js")?n:n+".js":go(e);var n}const Io=new Set(["node:assert","assert","node:assert/strict","assert/strict","node:async_hooks","async_hooks","node:buffer","buffer","node:child_process","child_process","node:cluster","cluster","node:console","console","node:constants","constants","node:crypto","crypto","node:dgram","dgram","node:diagnostics_channel","diagnostics_channel","node:dns","dns","node:dns/promises","dns/promises","node:domain","domain","node:events","events","node:ffi","node:fs","fs","node:fs/promises","fs/promises","node:http","http","node:http2","http2","node:https","https","node:inspector","inspector","node:inspector/promises","inspector/promises","node:module","module","node:net","net","node:os","os","node:path","path","node:path/posix","path/posix","node:path/win32","path/win32","node:perf_hooks","perf_hooks","node:process","process","node:querystring","querystring","node:quic","node:readline","readline","node:readline/promises","readline/promises","node:repl","repl","node:sea","node:sqlite","node:stream","stream","node:stream/consumers","stream/consumers","node:stream/iter","stream/iter","node:stream/promises","stream/promises","node:stream/web","stream/web","node:string_decoder","string_decoder","node:test","node:test/reporters","node:timers","timers","node:timers/promises","timers/promises","node:tls","tls","node:trace_events","trace_events","node:tty","tty","node:url","url","node:util","util","node:util/types","util/types","node:v8","v8","node:vfs","node:vm","vm","node:wasi","wasi","node:worker_threads","worker_threads","node:zlib","zlib","node:zlib/iter","zlib/iter"]);function wo(e,t){const n=t.map(({importPath:e})=>e).filter(e=>Io.has(e)||e.startsWith("node:"));0!==n.length&&e(ft,function(e){return{code:"MISSING_NODE_BUILTINS",ids:e,message:`Creating a browser bundle that depends on Node.js built-in modules (${bt(e)}). You might need to include https://github.com/FredKSchott/rollup-plugin-polyfill-node`}}(n))}const No=(e,t)=>e.split(".").map(t).join("");function ko(e,t,n,s,{_:i,getPropertyAccess:r},o){const a=e.split("."),l=a[0]in Object.prototype;o&&l&&o(ft,vn(a[0])),a[0]=("function"==typeof n?n(a[0]):l?a[0]:n[a[0]])||a[0];const c=a.pop();let u=t,d=[...a.map(e=>(u+=r(e),`${u}${i}=${i}${u}${i}||${i}{}`)),`${u}${r(c)}`].join(`,${i}`)+`${i}=${i}${s}`;return a.length>0&&(d=`(${d})`),d}function Co(e){let t=e.length;for(;t--;){const{imports:n,reexports:s}=e[t];if(n||s)return e.slice(0,t+1)}return[]}const Ro="_missingExportShim";const Do=({dependencies:e,exports:t})=>{const n=new Set(t.map(e=>e.exported));n.add("default");for(const{reexports:t}of e)if(t)for(const e of t)"*"!==e.reexported&&n.add(e.reexported);return n},Oo=(e,t,{_:n,cnst:s,getObject:i,n:r})=>{if(e){const o=[...e].map(e=>[e,"1"]);return o.unshift([null,`__proto__:${n}null`]),`${r}${t}${s} _starExcludes${n}=${n}${i(o,{lineBreakIndent:{base:t,t:t}})};`}return""},Mo=(e,t,{_:n,n:s})=>e.length>0?`${s}${t}var ${e.join(`,${n}`)};`:"",_o=(e,t,n)=>Lo(e.filter(e=>e.hoisted).map(e=>({name:e.exported,value:e.local})),t,n);function Lo(e,t,{_:n,n:s}){return 0===e.length?"":1===e.length?`exports(${JSON.stringify(e[0].name)},${n}${e[0].value});${s}${s}`:`exports({${s}`+e.map(({name:e,value:s})=>`${t}${Gn(e)}:${n}${s}`).join(`,${s}`)+`${s}});${s}${s}`}const To=(e,t,n)=>Lo(e.filter(e=>e.expression).map(e=>({name:e.exported,value:e.local})),t,n),Bo=(e,t,n)=>Lo(e.filter(e=>e.local===Ro).map(e=>({name:e.exported,value:Ro})),t,n);function zo(e,t,n){return e?`${t}${No(e,n)}`:"null"}var Vo={amd:function(e,{accessedGlobals:t,dependencies:n,exports:s,hasDefaultExport:i,hasExports:r,id:o,indent:a,intro:l,isEntryFacade:c,isModuleFacade:u,namedExportsMode:d,log:h,outro:p,snippets:f},{amd:m,esModule:g,externalLiveBindings:y,freeze:b,generatedCode:{symbols:E},interop:x,reexportProtoFromExternal:A,strict:S}){wo(h,n),vo("amd",o,n);const $=n.map(e=>`'${Po(e.importPath,m.forceJsExtensionForImports)}'`),v=n.map(e=>e.name),{n:P,getNonArrowFunctionIntro:I,_:w}=f;r&&(d||"exports.default"===s[0]?.local)&&(v.unshift("exports"),$.unshift("'exports'")),t.has("require")&&(v.unshift("require"),$.unshift("'require'")),t.has("module")&&(v.unshift("module"),$.unshift("'module'"));const N=yo(m,o),k=(N?`'${N}',${w}`:"")+($.length>0?`[${$.join(`,${w}`)}],${w}`:""),C=S?`${w}'use strict';`:"";e.prepend(`${l}${$o(n,x,y,b,E,t,a,f)}`);const R=bo(s,n,d,x,f,a,y,A);let D=Ao(d&&r,c&&(!0===g||"if-default-prop"===g&&i),u&&E,f);D&&(D=P+P+D),e.append(`${R}${D}${p}`).indent(a).prepend(`${m.define}(${k}(${I(v,{isAsync:!1,name:null})}{${C}${P}${P}`).append(`${P}${P}}));`)},cjs:function(e,{accessedGlobals:t,dependencies:n,exports:s,hasDefaultExport:i,hasExports:r,id:o,indent:a,intro:l,isEntryFacade:c,isModuleFacade:u,namedExportsMode:d,outro:h,snippets:p},{compact:f,esModule:m,externalLiveBindings:g,freeze:y,interop:b,generatedCode:{symbols:E},reexportProtoFromExternal:x,strict:A}){vo("cjs",o,n);const{_:S,n:$}=p,v=A?`'use strict';${$}${$}`:"";let P=Ao(d&&r,c&&(!0===m||"if-default-prop"===m&&i),u&&E,p);P&&(P+=$+$);const I=function(e,{_:t,cnst:n,n:s},i){let r="",o=!1;for(const{importPath:a,name:l,reexports:c,imports:u}of e)c||u?(r+=i&&o?",":`${r?`;${s}`:""}${n} `,o=!0,r+=`${l}${t}=${t}require('${a}')`):(r&&(r+=i&&!o?",":`;${s}`),o=!1,r+=`require('${a}')`);if(r)return`${r};${s}${s}`;return""}(n,p,f),w=$o(n,b,g,y,E,t,a,p);e.prepend(`${v}${l}${P}${I}${w}`);const N=bo(s,n,d,b,p,a,g,x,`module.exports${S}=${S}`);e.append(`${N}${h}`)},es:function(e,{accessedGlobals:t,indent:n,intro:s,outro:i,dependencies:r,exports:o,snippets:a},{externalLiveBindings:l,freeze:c,generatedCode:{symbols:u},importAttributesKey:d}){const{n:h}=a,p=function(e,t,{_:n}){const s=[];for(const{importPath:i,reexports:r,imports:o,name:a,attributes:l,sourcePhaseImport:c}of e){const e=`'${i}'${l?`${n}${t}${n}${l}`:""};`;if(c&&s.push(`import source ${c} from${n}${e}`),r||o){if(o){let t=null,i=null;const r=[];for(const e of o)"default"===e.imported?t=e:"*"===e.imported?i=e:r.push(e);i&&s.push(`import${n}*${n}as ${i.local} from${n}${e}`),t&&0===r.length?s.push(`import ${t.local} from${n}${e}`):r.length>0&&s.push(`import ${t?`${t.local},${n}`:""}{${n}${r.map(e=>e.imported===e.local?e.imported:`${Hn(e.imported)} as ${e.local}`).join(`,${n}`)}${n}}${n}from${n}${e}`)}if(r){let t=null;const i=[],l=[];for(const e of r)"*"===e.reexported?t=e:"*"===e.imported?i.push(e):l.push(e);if(t&&s.push(`export${n}*${n}from${n}${e}`),i.length>0){o&&o.some(e=>"*"===e.imported&&e.local===a)||s.push(`import${n}*${n}as ${a} from${n}${e}`);for(const e of i)s.push(`export${n}{${n}${a===e.reexported?a:`${a} as ${Hn(e.reexported)}`} };`)}l.length>0&&s.push(`export${n}{${n}${l.map(e=>e.imported===e.reexported?Hn(e.imported):`${Hn(e.imported)} as ${Hn(e.reexported)}`).join(`,${n}`)}${n}}${n}from${n}${e}`)}}else c||s.push(`import${n}${e}`)}return s}(r,d,a);p.length>0&&(s+=p.join(h)+h+h),(s+=Pr(null,t,n,a,l,c,u))&&e.prepend(s);const f=function(e,{_:t,cnst:n}){const s=[],i=new Array(e.length);let r=0;for(const o of e)o.expression&&s.push(`${n} ${o.local}${t}=${t}${o.expression};`),i[r++]=o.exported===o.local?o.local:`${o.local} as ${Hn(o.exported)}`;i.length>0&&s.push(`export${t}{${t}${i.join(`,${t}`)}${t}};`);return s}(o,a);f.length>0&&e.append(h+h+f.join(h).trim()),i&&e.append(i),e.trim()},iife:function(e,{accessedGlobals:t,dependencies:n,exports:s,hasDefaultExport:i,hasExports:r,id:o,indent:a,intro:l,namedExportsMode:c,log:u,outro:d,snippets:h},{compact:p,esModule:f,extend:m,freeze:g,externalLiveBindings:y,reexportProtoFromExternal:b,globals:E,interop:x,name:A,generatedCode:{symbols:S},strict:$}){vo("iife",o,n);const{_:v,getNonArrowFunctionIntro:P,getPropertyAccess:I,n:w}=h,N=A&&A.includes("."),k=!m&&!N;if(A&&k&&(Vn(C=A)||zn.test(C)))return Bt(function(e){return{code:"ILLEGAL_IDENTIFIER_AS_NAME",message:`Given name "${e}" is not a legal JS identifier. If you need this, you can try "output.extend: true".`,url:vt("configuration-options/#output-extend")}}(A));var C;wo(u,n);const R=Co(n),D=R.map(e=>e.globalName||"null"),O=R.map(e=>e.name);r&&!A&&u(ft,{code:Kt,message:'If you do not supply "output.name", you may not be able to access the exports of an IIFE bundle.',url:vt(Mt)}),r&&(c||"exports.default"===s[0]?.local)&&(m?(D.unshift(`this${No(A,I)}${v}=${v}this${No(A,I)}${v}||${v}{}`),O.unshift("exports")):(D.unshift("{}"),O.unshift("exports")));const M=$?`${a}'use strict';${w}`:"",_=$o(n,x,y,g,S,t,a,h);e.prepend(`${l}${_}`);let L=`(${P(O,{isAsync:!1,name:null})}{${w}${M}${w}`;r&&(!A||m&&c||(L=(k?`var ${A}`:`this${No(A,I)}`)+`${v}=${v}${L}`),N&&(L=function(e,t,n,{_:s,getPropertyAccess:i,s:r},o,a){const l=e.split("."),c=l[0]in Object.prototype;a&&c&&a(ft,vn(l[0])),l[0]=("function"==typeof n?n(l[0]):c?l[0]:n[l[0]])||l[0],l.pop();let u=t;return l.map(e=>(u+=i(e),`${u}${s}=${s}${u}${s}||${s}{}${r}`)).join(o?",":"\n")+(o&&l.length>0?";":"\n")}(A,"this",E,h,p,u)+L));let T=`${w}${w}})(${D.join(`,${v}`)});`;r&&!m&&c&&(T=`${w}${w}${a}return exports;${T}`);const B=bo(s,n,c,x,h,a,y,b);let z=Ao(c&&r,!0===f||"if-default-prop"===f&&i,S,h);z&&(z=w+w+z),e.append(`${B}${z}${d}`).indent(a).prepend(L).append(T)},system:function(e,{accessedGlobals:t,dependencies:n,exports:s,hasExports:i,id:r,indent:o,intro:a,snippets:l,outro:c,usesTopLevelAwait:u},{externalLiveBindings:d,freeze:h,name:p,generatedCode:{symbols:f},strict:m,systemNullSetters:g}){vo("system",r,n);const{_:y,getFunctionIntro:b,getNonArrowFunctionIntro:E,n:x,s:A}=l,{importBindings:S,setters:$,starExcludes:v}=function(e,t,n,{_:s,cnst:i,getObject:r,getPropertyAccess:o,n:a}){const l=[],c=[];let u=null;for(const{imports:d,reexports:h}of e){const p=[];if(d)for(const e of d)l.push(e.local),"*"===e.imported?p.push(`${e.local}${s}=${s}module;`):p.push(`${e.local}${s}=${s}module${o(e.imported)};`);if(h){const a=[];let l=!1;for(const{imported:e,reexported:t}of h)"*"===t?l=!0:a.push([t,"*"===e?"module":`module${o(e)}`]);if(a.length>1||l)if(l){u||(u=Do({dependencies:e,exports:t})),a.unshift([null,`__proto__:${s}null`]);const o=r(a,{lineBreakIndent:null});p.push(`${i} setter${s}=${s}${o};`,`for${s}(${i} name in module)${s}{`,`${n}if${s}(!_starExcludes[name])${s}setter[name]${s}=${s}module[name];`,"}","exports(setter);")}else{const e=r(a,{lineBreakIndent:null});p.push(`exports(${e});`)}else{const[e,t]=a[0];p.push(`exports(${JSON.stringify(e)},${s}${t});`)}}c.push(p.join(`${a}${n}${n}${n}`))}return{importBindings:l,setters:c,starExcludes:u}}(n,s,o,l),P=p?`'${p}',${y}`:"",I=t.has("module")?["exports","module"]:i?["exports"]:[];let w=`System.register(${P}[`+n.map(({importPath:e})=>`'${e}'`).join(`,${y}`)+`],${y}(${E(I,{isAsync:!1,name:null})}{${x}${o}${m?"'use strict';":""}`+Oo(v,o,l)+Mo(S,o,l)+`${x}${o}return${y}{${$.length>0?`${x}${o}${o}setters:${y}[${$.map(e=>e?`${b(["module"],{isAsync:!1,name:null})}{${x}${o}${o}${o}${e}${x}${o}${o}}`:g?"null":`${b([],{isAsync:!1,name:null})}{}`).join(`,${y}`)}],`:""}${x}`;w+=`${o}${o}execute:${y}(${E([],{isAsync:u,name:null})}{${x}${x}`;const N=`${o}${o}})${x}${o}}${A}${x}}));`;e.prepend(a+Pr(null,t,o,l,d,h,f)+_o(s,o,l)).append(`${c}${x}${x}`+To(s,o,l)+Bo(s,o,l)).indent(`${o}${o}${o}`).append(N).prepend(w)},umd:function(e,{accessedGlobals:t,dependencies:n,exports:s,hasDefaultExport:i,hasExports:r,id:o,indent:a,intro:l,namedExportsMode:c,log:u,outro:d,snippets:h},{amd:p,compact:f,esModule:m,extend:g,externalLiveBindings:y,freeze:b,interop:E,name:x,generatedCode:{symbols:A},globals:S,noConflict:$,reexportProtoFromExternal:v,strict:P}){const{_:I,cnst:w,getFunctionIntro:N,getNonArrowFunctionIntro:k,getPropertyAccess:C,n:R,s:D}=h,O=f?"f":"factory",M=f?"g":"global";if(r&&!x)return Bt({code:Kt,message:'You must supply "output.name" for UMD bundles that have exports so that the exports are accessible in environments without a module loader.',url:vt(Mt)});vo("umd",o,n),wo(u,n);const _=n.map(e=>`'${Po(e.importPath,p.forceJsExtensionForImports)}'`),L=n.map(e=>`require('${e.importPath}')`),T=Co(n),B=T.map(e=>zo(e.globalName,M,C)),z=T.map(e=>e.name);(r||$)&&(c||r&&"exports.default"===s[0]?.local)&&(_.unshift("'exports'"),L.unshift("exports"),B.unshift(ko(x,M,S,(g?`${zo(x,M,C)}${I}||${I}`:"")+"{}",h,u)),z.unshift("exports"));const V=yo(p,o),F=(V?`'${V}',${I}`:"")+(_.length>0?`[${_.join(`,${I}`)}],${I}`:""),j=p.define,U=!c&&r?`module.exports${I}=${I}`:"",G=P?`${I}'use strict';${R}`:"";let H;if($){const e=f?"e":"exports";let t;if(!c&&r)t=`${w} ${e}${I}=${I}${ko(x,M,S,`${O}(${B.join(`,${I}`)})`,h,u)};`;else{t=`${w} ${e}${I}=${I}${B.shift()};${R}${a}${a}${O}(${[e,...B].join(`,${I}`)});`}H=`(${N([],{isAsync:!1,name:null})}{${R}${a}${a}${w} current${I}=${I}${function(e,t,{_:n,getPropertyAccess:s}){let i=t;return e.split(".").map(e=>i+=s(e)).join(`${n}&&${n}`)}(x,M,h)};${R}${a}${a}${t}${R}${a}${a}${e}.noConflict${I}=${I}${N([],{isAsync:!1,name:null})}{${I}${zo(x,M,C)}${I}=${I}current;${I}return ${e}${D}${I}};${R}${a}})()`}else H=`${O}(${B.join(`,${I}`)})`,!c&&r&&(H=ko(x,M,S,H,h,u));const W=r||$&&c||B.length>0,q=[O];W&&q.unshift(M);const K=W?`this,${I}`:"",X=W?`(${M}${I}=${I}typeof globalThis${I}!==${I}'undefined'${I}?${I}globalThis${I}:${I}${M}${I}||${I}self,${I}`:"",J=W?")":"",Y=W?`${a}typeof exports${I}===${I}'object'${I}&&${I}typeof module${I}!==${I}'undefined'${I}?${I}${U}${O}(${L.join(`,${I}`)})${I}:${R}`:"",Z=`(${k(q,{isAsync:!1,name:null})}{${R}`+Y+`${a}typeof ${j}${I}===${I}'function'${I}&&${I}${j}.amd${I}?${I}${j}(${F}${O})${I}:${R}`+`${a}${X}${H}${J};${R}`+`})(${K}(${k(z,{isAsync:!1,name:null})}{${G}${R}`,Q=R+R+"}));";e.prepend(`${l}${$o(n,E,y,b,A,t,a,h)}`);const ee=bo(s,n,c,E,h,a,y,v);let te=Ao(c&&r,!0===m||"if-default-prop"===m&&i,A,h);te&&(te=R+R+te),e.append(`${ee}${te}${d}`).trim().indent(a).append(Q).prepend(Z)}};function Fo(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var jo,Uo,Go,Ho,Wo,qo,Ko,Xo,Jo,Yo,Zo,Qo={};function ea(){if(Uo)return jo;Uo=1;const e="\\\\/",t=`[^${e}]`,n="\\.",s="\\/",i="[^/]",r=`(?:${s}|$)`,o=`(?:^|${s})`,a=`${n}{1,2}${r}`,l={DOT_LITERAL:n,PLUS_LITERAL:"\\+",QMARK_LITERAL:"\\?",SLASH_LITERAL:s,ONE_CHAR:"(?=.)",QMARK:i,END_ANCHOR:r,DOTS_SLASH:a,NO_DOT:`(?!${n})`,NO_DOTS:`(?!${o}${a})`,NO_DOT_SLASH:`(?!${n}{0,1}${r})`,NO_DOTS_SLASH:`(?!${a})`,QMARK_NO_DOT:`[^.${s}]`,STAR:`${i}*?`,START_ANCHOR:o,SEP:"/"},c={...l,SLASH_LITERAL:`[${e}]`,QMARK:t,STAR:`${t}*?`,DOTS_SLASH:`${n}{1,2}(?:[${e}]|$)`,NO_DOT:`(?!${n})`,NO_DOTS:`(?!(?:^|[${e}])${n}{1,2}(?:[${e}]|$))`,NO_DOT_SLASH:`(?!${n}{0,1}(?:[${e}]|$))`,NO_DOTS_SLASH:`(?!${n}{1,2}(?:[${e}]|$))`,QMARK_NO_DOT:`[^.${e}]`,START_ANCHOR:`(?:^|[${e}])`,END_ANCHOR:`(?:[${e}]|$)`,SEP:"\\"};return jo={DEFAULT_MAX_EXTGLOB_RECURSION:0,MAX_LENGTH:65536,POSIX_REGEX_SOURCE:{__proto__:null,alnum:"a-zA-Z0-9",alpha:"a-zA-Z",ascii:"\\x00-\\x7F",blank:" \\t",cntrl:"\\x00-\\x1F\\x7F",digit:"0-9",graph:"\\x21-\\x7E",lower:"a-z",print:"\\x20-\\x7E ",punct:"\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",space:" \\t\\r\\n\\v\\f",upper:"A-Z",word:"A-Za-z0-9_",xdigit:"A-Fa-f0-9"},REGEX_BACKSLASH:/\\(?![*+?^${}(|)[\]])/g,REGEX_NON_SPECIAL_CHARS:/^[^@![\].,$*+?^{}()|\\/]+/,REGEX_SPECIAL_CHARS:/[-*+?.^${}(|)[\]]/,REGEX_SPECIAL_CHARS_BACKREF:/(\\?)((\W)(\3*))/g,REGEX_SPECIAL_CHARS_GLOBAL:/([-*+?.^${}(|)[\]])/g,REGEX_REMOVE_BACKSLASH:/(?:\[.*?[^\\]\]|\\(?=.))/g,REPLACEMENTS:{__proto__:null,"***":"*","**/**":"**","**/**/**":"**"},CHAR_0:48,CHAR_9:57,CHAR_UPPERCASE_A:65,CHAR_LOWERCASE_A:97,CHAR_UPPERCASE_Z:90,CHAR_LOWERCASE_Z:122,CHAR_LEFT_PARENTHESES:40,CHAR_RIGHT_PARENTHESES:41,CHAR_ASTERISK:42,CHAR_AMPERSAND:38,CHAR_AT:64,CHAR_BACKWARD_SLASH:92,CHAR_CARRIAGE_RETURN:13,CHAR_CIRCUMFLEX_ACCENT:94,CHAR_COLON:58,CHAR_COMMA:44,CHAR_DOT:46,CHAR_DOUBLE_QUOTE:34,CHAR_EQUAL:61,CHAR_EXCLAMATION_MARK:33,CHAR_FORM_FEED:12,CHAR_FORWARD_SLASH:47,CHAR_GRAVE_ACCENT:96,CHAR_HASH:35,CHAR_HYPHEN_MINUS:45,CHAR_LEFT_ANGLE_BRACKET:60,CHAR_LEFT_CURLY_BRACE:123,CHAR_LEFT_SQUARE_BRACKET:91,CHAR_LINE_FEED:10,CHAR_NO_BREAK_SPACE:160,CHAR_PERCENT:37,CHAR_PLUS:43,CHAR_QUESTION_MARK:63,CHAR_RIGHT_ANGLE_BRACKET:62,CHAR_RIGHT_CURLY_BRACE:125,CHAR_RIGHT_SQUARE_BRACKET:93,CHAR_SEMICOLON:59,CHAR_SINGLE_QUOTE:39,CHAR_SPACE:32,CHAR_TAB:9,CHAR_UNDERSCORE:95,CHAR_VERTICAL_LINE:124,CHAR_ZERO_WIDTH_NOBREAK_SPACE:65279,extglobChars:e=>({"!":{type:"negate",open:"(?:(?!(?:",close:`))${e.STAR})`},"?":{type:"qmark",open:"(?:",close:")?"},"+":{type:"plus",open:"(?:",close:")+"},"*":{type:"star",open:"(?:",close:")*"},"@":{type:"at",open:"(?:",close:")"}}),globChars:e=>!0===e?c:l},jo}function ta(){return Go||(Go=1,function(e){const{REGEX_BACKSLASH:t,REGEX_REMOVE_BACKSLASH:n,REGEX_SPECIAL_CHARS:s,REGEX_SPECIAL_CHARS_GLOBAL:i}=ea();e.isObject=e=>null!==e&&"object"==typeof e&&!Array.isArray(e),e.hasRegexChars=e=>s.test(e),e.isRegexChar=t=>1===t.length&&e.hasRegexChars(t),e.escapeRegex=e=>e.replace(i,"\\$1"),e.toPosixSlashes=e=>e.replace(t,"/"),e.isWindows=()=>{if("undefined"!=typeof navigator&&navigator.platform){const e=navigator.platform.toLowerCase();return"win32"===e||"windows"===e}return!("undefined"==typeof process||!process.platform)&&"win32"===process.platform},e.removeBackslashes=e=>e.replace(n,e=>"\\"===e?"":e),e.escapeLast=(t,n,s)=>{const i=t.lastIndexOf(n,s);return-1===i?t:"\\"===t[i-1]?e.escapeLast(t,n,i-1):`${t.slice(0,i)}\\${t.slice(i)}`},e.removePrefix=(e,t={})=>{let n=e;return n.startsWith("./")&&(n=n.slice(2),t.prefix="./"),n},e.wrapOutput=(e,t={},n={})=>{let s=`${n.contains?"":"^"}(?:${e})${n.contains?"":"$"}`;return!0===t.negated&&(s=`(?:^(?!${s}).*$)`),s},e.basename=(e,{windows:t}={})=>{const n=e.split(t?/[\\/]/:"/"),s=n[n.length-1];return""===s?n[n.length-2]:s}}(Qo)),Qo}function na(){if(Wo)return Ho;Wo=1;const e=ta(),{CHAR_ASTERISK:t,CHAR_AT:n,CHAR_BACKWARD_SLASH:s,CHAR_COMMA:i,CHAR_DOT:r,CHAR_EXCLAMATION_MARK:o,CHAR_FORWARD_SLASH:a,CHAR_LEFT_CURLY_BRACE:l,CHAR_LEFT_PARENTHESES:c,CHAR_LEFT_SQUARE_BRACKET:u,CHAR_PLUS:d,CHAR_QUESTION_MARK:h,CHAR_RIGHT_CURLY_BRACE:p,CHAR_RIGHT_PARENTHESES:f,CHAR_RIGHT_SQUARE_BRACKET:m}=ea(),g=e=>e===a||e===s,y=e=>{!0!==e.isPrefix&&(e.depth=e.isGlobstar?1/0:1)};return Ho=(b,E)=>{const x=E||{},A=b.length-1,S=!0===x.parts||!0===x.scanToEnd,$=[],v=[],P=[];let I,w,N=b,k=-1,C=0,R=0,D=!1,O=!1,M=!1,_=!1,L=!1,T=!1,B=!1,z=!1,V=!1,F=!1,j=0,U={value:"",depth:0,isGlob:!1};const G=()=>k>=A,H=()=>N.charCodeAt(k+1),W=()=>(I=w,N.charCodeAt(++k));for(;k0&&(K=N.slice(0,C),N=N.slice(C),R-=C),q&&!0===M&&R>0?(q=N.slice(0,R),X=N.slice(R)):!0===M?(q="",X=N):q=N,q&&""!==q&&"/"!==q&&q!==N&&g(q.charCodeAt(q.length-1))&&(q=q.slice(0,-1)),!0===x.unescape&&(X&&(X=e.removeBackslashes(X)),q&&!0===B&&(q=e.removeBackslashes(q)));const J={prefix:K,input:b,start:C,base:q,glob:X,isBrace:D,isBracket:O,isGlob:M,isExtglob:_,isGlobstar:L,negated:z,negatedExtglob:V};if(!0===x.tokens&&(J.maxDepth=0,g(w)||v.push(U),J.tokens=v),!0===x.parts||!0===x.tokens){let e;for(let t=0;t<$.length;t++){const n=e?e+1:C,s=$[t],i=b.slice(n,s);x.tokens&&(0===t&&0!==C?(v[t].isPrefix=!0,v[t].value=K):v[t].value=i,y(v[t]),J.maxDepth+=v[t].depth),0===t&&""===i||P.push(i),e=s}if(e&&e+1{if("function"==typeof t.expandRange)return t.expandRange(...e,t);e.sort();return`[${e.join("-")}]`},l=(e,t)=>`Missing ${e}: "${t}" - use "\\\\${t}" to match literal characters`,c=e=>{const t=[];let n=0,s=0,i=0,r="",o=!1;for(const a of e)if(!0!==o)if("\\"!==a)if('"'!==a){if(0===i)if("["===a)n++;else if("]"===a&&n>0)n--;else if(0===n)if("("===a)s++;else if(")"===a&&s>0)s--;else if("|"===a&&0===s){t.push(r),r="";continue}r+=a}else i=1===i?0:1,r+=a;else r+=a,o=!0;else r+=a,o=!1;return t.push(r),t},u=e=>{let t=e.trim(),n=!0;for(;!0===n;)n=!1,/^@\([^\\()[\]{}|]+\)$/.test(t)&&(t=t.slice(2,-1),n=!0);if((e=>{let t=!1;for(const n of e)if(!0!==t)if("\\"!==n){if(/[?*+@!()[\]{}]/.test(n))return!1}else t=!0;else t=!1;return!0})(t))return t.replace(/\\(.)/g,"$1")},d=(e,t=!0)=>{if("+"!==e[0]&&"*"!==e[0]||"("!==e[1])return;let n=0,s=0,i=0,r=!1;for(let o=1;o0)n--;else if(!(n>0))if("("!==a){if(")"===a&&(s--,0===s)){if(!0===t&&o!==e.length-1)return;return{type:e[0],body:e.slice(2,o),end:o}}}else s++}else n++}else i=1===i?0:1;else r=!0;else r=!1}},h=e=>`${1===e.length?t.escapeRegex(e[0]):`[${e.map(e=>t.escapeRegex(e)).join("")}]`}*`,p=e=>{let t=0;const n=[];for(;te.trim());if(1!==i.length)return;const r=u(i[0]);if(!r||1!==r.length)return;n.push(r),t+=s.end+1}if(!(n.length<1))return n},f=e=>{let t=0,n=e.trim(),s=d(n);for(;s;)t++,n=s.body.trim(),s=d(n);return t},m=(t,n)=>{if(!1===n.maxExtglobRecursion)return{risky:!1};const s="number"==typeof n.maxExtglobRecursion?n.maxExtglobRecursion:e.DEFAULT_MAX_EXTGLOB_RECURSION,i=c(t).map(e=>e.trim());if(i.length>1&&(i.some(e=>""===e)||i.some(e=>/^[*?]+$/.test(e))||(e=>{const t=e.map(u).filter(Boolean);for(let e=0;es)return{risky:!0}}return o?a?{risky:!0,safeOutput:h([...new Set(r)])}:{risky:!0}:{risky:!1}},g=(c,u)=>{if("string"!=typeof c)throw new TypeError("Expected a string");c=o[c]||c;const d={...u},h="number"==typeof d.maxLength?Math.min(n,d.maxLength):n;let p=c.length;if(p>h)throw new SyntaxError(`Input length: ${p}, exceeds maximum allowed length: ${h}`);const f={type:"bos",value:"",output:d.prepend||""},y=[f],b=d.capture?"":"?:",E=e.globChars(d.windows),x=e.extglobChars(E),{DOT_LITERAL:A,PLUS_LITERAL:S,SLASH_LITERAL:$,ONE_CHAR:v,DOTS_SLASH:P,NO_DOT:I,NO_DOT_SLASH:w,NO_DOTS_SLASH:N,QMARK:k,QMARK_NO_DOT:C,STAR:R,START_ANCHOR:D}=E,O=e=>`(${b}(?:(?!${D}${e.dot?P:A}).)*?)`,M=d.dot?"":I,_=d.dot?k:C;let L=!0===d.bash?O(d):R;d.capture&&(L=`(${L})`),"boolean"==typeof d.noext&&(d.noextglob=d.noext);const T={input:c,index:-1,start:0,dot:!0===d.dot,consumed:"",output:"",prefix:"",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:y};c=t.removePrefix(c,T),p=c.length;const B=[],z=[],V=[];let F,j=f;const U=()=>T.index===p-1,G=T.peek=(e=1)=>c[T.index+e],H=T.advance=()=>c[++T.index]||"",W=()=>c.slice(T.index+1),q=(e="",t=0)=>{T.consumed+=e,T.index+=t},K=e=>{T.output+=null!=e.output?e.output:e.value,q(e.value)},X=()=>{let e=1;for(;"!"===G()&&("("!==G(2)||"?"===G(3));)H(),T.start++,e++;return e%2!=0&&(T.negated=!0,T.start++,!0)},J=e=>{T[e]++,V.push(e)},Y=e=>{T[e]--,V.pop()},Z=e=>{if("globstar"===j.type){const t=T.braces>0&&("comma"===e.type||"brace"===e.type),n=!0===e.extglob||B.length&&("pipe"===e.type||"paren"===e.type);"slash"===e.type||"paren"===e.type||t||n||(T.output=T.output.slice(0,-j.output.length),j.type="star",j.value="*",j.output=L,T.output+=j.output)}if(B.length&&"paren"!==e.type&&(B[B.length-1].inner+=e.value),(e.value||e.output)&&K(e),j&&"text"===j.type&&"text"===e.type)return j.output=(j.output||j.value)+e.value,void(j.value+=e.value);e.prev=j,y.push(e),j=e},Q=(e,t)=>{const n={...x[t],conditions:1,inner:""};n.prev=j,n.parens=T.parens,n.output=T.output,n.startIndex=T.index,n.tokensIndex=y.length;const s=(d.capture?"(":"")+n.open;J("parens"),Z({type:e,value:t,output:T.output?"":v}),Z({type:"paren",extglob:!0,value:H(),output:s}),B.push(n)},ee=e=>{const n=c.slice(e.startIndex,T.index+1),s=c.slice(e.startIndex+2,T.index),i=m(s,d);if(("plus"===e.type||"star"===e.type)&&i.risky){const s=i.safeOutput?(e.output?"":v)+(d.capture?`(${i.safeOutput})`:i.safeOutput):void 0,r=y[e.tokensIndex];r.type="text",r.value=n,r.output=s||t.escapeRegex(n);for(let t=e.tokensIndex+1;t1&&e.inner.includes("/")&&(t=O(d)),(t!==L||U()||/^\)+$/.test(W()))&&(o=e.close=`)$))${t}`),e.inner.includes("*")&&(r=W())&&/^\.[^\\/.]+$/.test(r)){const n=g(r,{...u,fastpaths:!1}).output;o=e.close=`)${n})${t})`}"bos"===e.prev.type&&(T.negatedExtglob=!0)}Z({type:"paren",extglob:!0,value:F,output:o}),Y("parens")};if(!1!==d.fastpaths&&!/(^[*!]|[/()[\]{}"])/.test(c)){let e=!1,n=c.replace(r,(t,n,s,i,r,o)=>"\\"===i?(e=!0,t):"?"===i?n?n+i+(r?k.repeat(r.length):""):0===o?_+(r?k.repeat(r.length):""):k.repeat(s.length):"."===i?A.repeat(s.length):"*"===i?n?n+i+(r?L:""):L:n?t:`\\${t}`);return!0===e&&(n=!0===d.unescape?n.replace(/\\/g,""):n.replace(/\\+/g,e=>e.length%2==0?"\\\\":e?"\\":"")),n===c&&!0===d.contains?(T.output=c,T):(T.output=t.wrapOutput(n,T,u),T)}for(;!U();){if(F=H(),"\0"===F)continue;if("\\"===F){const e=G();if("/"===e&&!0!==d.bash)continue;if("."===e||";"===e)continue;if(!e){F+="\\",Z({type:"text",value:F});continue}const t=/^\\+/.exec(W());let n=0;if(t&&t[0].length>2&&(n=t[0].length,T.index+=n,n%2!=0&&(F+="\\")),!0===d.unescape?F=H():F+=H(),0===T.brackets){Z({type:"text",value:F});continue}}if(T.brackets>0&&("]"!==F||"["===j.value||"[^"===j.value)){if(!1!==d.posix&&":"===F){const e=j.value.slice(1);if(e.includes("[")&&(j.posix=!0,e.includes(":"))){const e=j.value.lastIndexOf("["),t=j.value.slice(0,e),n=j.value.slice(e+2),i=s[n];if(i){j.value=t+i,T.backtrack=!0,H(),f.output||1!==y.indexOf(j)||(f.output=v);continue}}}("["===F&&":"!==G()||"-"===F&&"]"===G())&&(F=`\\${F}`),"]"!==F||"["!==j.value&&"[^"!==j.value||(F=`\\${F}`),!0===d.posix&&"!"===F&&"["===j.value&&(F="^"),j.value+=F,K({value:F});continue}if(1===T.quotes&&'"'!==F){F=t.escapeRegex(F),j.value+=F,K({value:F});continue}if('"'===F){T.quotes=1===T.quotes?0:1,!0===d.keepQuotes&&Z({type:"text",value:F});continue}if("("===F){J("parens"),Z({type:"paren",value:F});continue}if(")"===F){if(0===T.parens&&!0===d.strictBrackets)throw new SyntaxError(l("opening","("));const e=B[B.length-1];if(e&&T.parens===e.parens+1){ee(B.pop());continue}Z({type:"paren",value:F,output:T.parens?")":"\\)"}),Y("parens");continue}if("["===F){if(!0!==d.nobracket&&W().includes("]"))J("brackets");else{if(!0!==d.nobracket&&!0===d.strictBrackets)throw new SyntaxError(l("closing","]"));F=`\\${F}`}Z({type:"bracket",value:F});continue}if("]"===F){if(!0===d.nobracket||j&&"bracket"===j.type&&1===j.value.length){Z({type:"text",value:F,output:`\\${F}`});continue}if(0===T.brackets){if(!0===d.strictBrackets)throw new SyntaxError(l("opening","["));Z({type:"text",value:F,output:`\\${F}`});continue}Y("brackets");const e=j.value.slice(1);if(!0===j.posix||"^"!==e[0]||e.includes("/")||(F=`/${F}`),j.value+=F,K({value:F}),!1===d.literalBrackets||t.hasRegexChars(e))continue;const n=t.escapeRegex(j.value);if(T.output=T.output.slice(0,-j.value.length),!0===d.literalBrackets){T.output+=n,j.value=n;continue}j.value=`(${b}${n}|${j.value})`,T.output+=j.value;continue}if("{"===F&&!0!==d.nobrace){J("braces");const e={type:"brace",value:F,output:"(",outputIndex:T.output.length,tokensIndex:T.tokens.length};z.push(e),Z(e);continue}if("}"===F){const e=z[z.length-1];if(!0===d.nobrace||!e){Z({type:"text",value:F,output:F});continue}let t=")";if(!0===e.dots){const e=y.slice(),n=[];for(let t=e.length-1;t>=0&&(y.pop(),"brace"!==e[t].type);t--)"dots"!==e[t].type&&n.unshift(e[t].value);t=a(n,d),T.backtrack=!0}if(!0!==e.comma&&!0!==e.dots){const n=T.output.slice(0,e.outputIndex),s=T.tokens.slice(e.tokensIndex);e.value=e.output="\\{",F=t="\\}",T.output=n;for(const e of s)T.output+=e.output||e.value}Z({type:"brace",value:F,output:t}),Y("braces"),z.pop();continue}if("|"===F){B.length>0&&B[B.length-1].conditions++,Z({type:"text",value:F});continue}if(","===F){let e=F;const t=z[z.length-1];t&&"braces"===V[V.length-1]&&(t.comma=!0,e="|"),Z({type:"comma",value:F,output:e});continue}if("/"===F){if("dot"===j.type&&T.index===T.start+1){T.start=T.index+1,T.consumed="",T.output="",y.pop(),j=f;continue}Z({type:"slash",value:F,output:$});continue}if("."===F){if(T.braces>0&&"dot"===j.type){"."===j.value&&(j.output=A);const e=z[z.length-1];j.type="dots",j.output+=F,j.value+=F,e.dots=!0;continue}if(T.braces+T.parens===0&&"bos"!==j.type&&"slash"!==j.type){Z({type:"text",value:F,output:A});continue}Z({type:"dot",value:F,output:A});continue}if("?"===F){if(!(j&&"("===j.value)&&!0!==d.noextglob&&"("===G()&&"?"!==G(2)){Q("qmark",F);continue}if(j&&"paren"===j.type){const e=G();let t=F;("("===j.value&&!/[!=<:]/.test(e)||"<"===e&&!/<([!=]|\w+>)/.test(W()))&&(t=`\\${F}`),Z({type:"text",value:F,output:t});continue}if(!0!==d.dot&&("slash"===j.type||"bos"===j.type)){Z({type:"qmark",value:F,output:C});continue}Z({type:"qmark",value:F,output:k});continue}if("!"===F){if(!0!==d.noextglob&&"("===G()&&("?"!==G(2)||!/[!=<:]/.test(G(3)))){Q("negate",F);continue}if(!0!==d.nonegate&&0===T.index){X();continue}}if("+"===F){if(!0!==d.noextglob&&"("===G()&&"?"!==G(2)){Q("plus",F);continue}if(j&&"("===j.value||!1===d.regex){Z({type:"plus",value:F,output:S});continue}if(j&&("bracket"===j.type||"paren"===j.type||"brace"===j.type)||T.parens>0){Z({type:"plus",value:F});continue}Z({type:"plus",value:S});continue}if("@"===F){if(!0!==d.noextglob&&"("===G()&&"?"!==G(2)){Z({type:"at",extglob:!0,value:F,output:""});continue}Z({type:"text",value:F});continue}if("*"!==F){"$"!==F&&"^"!==F||(F=`\\${F}`);const e=i.exec(W());e&&(F+=e[0],T.index+=e[0].length),Z({type:"text",value:F});continue}if(j&&("globstar"===j.type||!0===j.star)){j.type="star",j.star=!0,j.value+=F,j.output=L,T.backtrack=!0,T.globstar=!0,q(F);continue}let e=W();if(!0!==d.noextglob&&/^\([^?]/.test(e)){Q("star",F);continue}if("star"===j.type){if(!0===d.noglobstar){q(F);continue}const t=j.prev,n=t.prev,s="slash"===t.type||"bos"===t.type,i=n&&("star"===n.type||"globstar"===n.type);if(!0===d.bash&&(!s||e[0]&&"/"!==e[0])){Z({type:"star",value:F,output:""});continue}const r=T.braces>0&&("comma"===t.type||"brace"===t.type),o=B.length&&("pipe"===t.type||"paren"===t.type);if(!s&&"paren"!==t.type&&!r&&!o){Z({type:"star",value:F,output:""});continue}for(;"/**"===e.slice(0,3);){const t=c[T.index+4];if(t&&"/"!==t)break;e=e.slice(3),q("/**",3)}if("bos"===t.type&&U()){j.type="globstar",j.value+=F,j.output=O(d),T.output=j.output,T.globstar=!0,q(F);continue}if("slash"===t.type&&"bos"!==t.prev.type&&!i&&U()){T.output=T.output.slice(0,-(t.output+j.output).length),t.output=`(?:${t.output}`,j.type="globstar",j.output=O(d)+(d.strictSlashes?")":"|$)"),j.value+=F,T.globstar=!0,T.output+=t.output+j.output,q(F);continue}if("slash"===t.type&&"bos"!==t.prev.type&&"/"===e[0]){const n=void 0!==e[1]?"|$":"";T.output=T.output.slice(0,-(t.output+j.output).length),t.output=`(?:${t.output}`,j.type="globstar",j.output=`${O(d)}${$}|${$}${n})`,j.value+=F,T.output+=t.output+j.output,T.globstar=!0,q(F+H()),Z({type:"slash",value:"/",output:""});continue}if("bos"===t.type&&"/"===e[0]){j.type="globstar",j.value+=F,j.output=`(?:^|${$}|${O(d)}${$})`,T.output=j.output,T.globstar=!0,q(F+H()),Z({type:"slash",value:"/",output:""});continue}T.output=T.output.slice(0,-j.output.length),j.type="globstar",j.output=O(d),j.value+=F,T.output+=j.output,T.globstar=!0,q(F);continue}const n={type:"star",value:F,output:L};!0!==d.bash?!j||"bracket"!==j.type&&"paren"!==j.type||!0!==d.regex?(T.index!==T.start&&"slash"!==j.type&&"dot"!==j.type||("dot"===j.type?(T.output+=w,j.output+=w):!0===d.dot?(T.output+=N,j.output+=N):(T.output+=M,j.output+=M),"*"!==G()&&(T.output+=v,j.output+=v)),Z(n)):(n.output=F,Z(n)):(n.output=".*?","bos"!==j.type&&"slash"!==j.type||(n.output=M+n.output),Z(n))}for(;T.brackets>0;){if(!0===d.strictBrackets)throw new SyntaxError(l("closing","]"));T.output=t.escapeLast(T.output,"["),Y("brackets")}for(;T.parens>0;){if(!0===d.strictBrackets)throw new SyntaxError(l("closing",")"));T.output=t.escapeLast(T.output,"("),Y("parens")}for(;T.braces>0;){if(!0===d.strictBrackets)throw new SyntaxError(l("closing","}"));T.output=t.escapeLast(T.output,"{"),Y("braces")}if(!0===d.strictSlashes||"star"!==j.type&&"bracket"!==j.type||Z({type:"maybe_slash",value:"",output:`${$}?`}),!0===T.backtrack){T.output="";for(const e of T.tokens)T.output+=null!=e.output?e.output:e.value,e.suffix&&(T.output+=e.suffix)}return T};return g.fastpaths=(s,i)=>{const r={...i},a="number"==typeof r.maxLength?Math.min(n,r.maxLength):n,l=s.length;if(l>a)throw new SyntaxError(`Input length: ${l}, exceeds maximum allowed length: ${a}`);s=o[s]||s;const{DOT_LITERAL:c,SLASH_LITERAL:u,ONE_CHAR:d,DOTS_SLASH:h,NO_DOT:p,NO_DOTS:f,NO_DOTS_SLASH:m,STAR:g,START_ANCHOR:y}=e.globChars(r.windows),b=r.dot?f:p,E=r.dot?m:p,x=r.capture?"":"?:";let A=!0===r.bash?".*?":g;r.capture&&(A=`(${A})`);const S=e=>!0===e.noglobstar?A:`(${x}(?:(?!${y}${e.dot?h:c}).)*?)`,$=e=>{switch(e){case"*":return`${b}${d}${A}`;case".*":return`${c}${d}${A}`;case"*.*":return`${b}${A}${c}${d}${A}`;case"*/*":return`${b}${A}${u}${d}${E}${A}`;case"**":return b+S(r);case"**/*":return`(?:${b}${S(r)}${u})?${E}${d}${A}`;case"**/*.*":return`(?:${b}${S(r)}${u})?${E}${A}${c}${d}${A}`;case"**/.*":return`(?:${b}${S(r)}${u})?${c}${d}${A}`;default:{const t=/^(.*?)\.(\w+)$/.exec(e);if(!t)return;const n=$(t[1]);if(!n)return;return n+c+t[2]}}},v=t.removePrefix(s,{negated:!1,prefix:""});let P=$(v);return P&&!0!==r.strictSlashes&&(P+=`${u}?`),P},qo=g}function ia(){if(Jo)return Xo;Jo=1;const e=na(),t=sa(),n=ta(),s=ea(),i=(e,t,n=!1)=>{if(Array.isArray(e)){const s=e.map(e=>i(e,t,n)),r=e=>{for(const t of s){const n=t(e);if(n)return n}return!1};return r}const s=(r=e)&&"object"==typeof r&&!Array.isArray(r)&&e.tokens&&e.input;var r;if(""===e||"string"!=typeof e&&!s)throw new TypeError("Expected pattern to be a non-empty string");const o=t||{},a=o.windows,l=s?i.compileRe(e,t):i.makeRe(e,t,!1,!0),c=l.state;delete l.state;let u=()=>!1;if(o.ignore){const e={...t,ignore:null,onMatch:null,onResult:null};u=i(o.ignore,e,n)}const d=(n,s=!1)=>{const{isMatch:r,match:d,output:h}=i.test(n,l,t,{glob:e,posix:a}),p={glob:e,state:c,regex:l,posix:a,input:n,output:h,match:d,isMatch:r};return"function"==typeof o.onResult&&o.onResult(p),!1===r?(p.isMatch=!1,!!s&&p):u(n)?("function"==typeof o.onIgnore&&o.onIgnore(p),p.isMatch=!1,!!s&&p):("function"==typeof o.onMatch&&o.onMatch(p),!s||p)};return n&&(d.state=c),d};return i.test=(e,t,s,{glob:r,posix:o}={})=>{if("string"!=typeof e)throw new TypeError("Expected input to be a string");if(""===e)return{isMatch:!1,output:""};const a=s||{},l=a.format||(o?n.toPosixSlashes:null);let c=e===r,u=c&&l?l(e):e;return!1===c&&(u=l?l(e):e,c=u===r),!1!==c&&!0!==a.capture||(c=!0===a.matchBase||!0===a.basename?i.matchBase(e,t,s,o):t.exec(u)),{isMatch:Boolean(c),match:c,output:u}},i.matchBase=(e,t,s,r=s&&s.windows)=>(t instanceof RegExp?t:i.makeRe(t,s)).test(n.basename(e,{windows:r})),i.isMatch=(e,t,n)=>i(t,n)(e),i.parse=(e,n)=>Array.isArray(e)?e.map(e=>i.parse(e,n)):t(e,{...n,fastpaths:!1}),i.scan=(t,n)=>e(t,n),i.compileRe=(e,t,n=!1,s=!1)=>{if(!0===n)return e.output;const r=t||{},o=r.contains?"":"^",a=r.contains?"":"$";let l=`${o}(?:${e.output})${a}`;e&&!0===e.negated&&(l=`^(?!${l}).*$`);const c=i.toRegex(l,t);return!0===s&&(c.state=e),c},i.makeRe=(e,n={},s=!1,r=!1)=>{if(!e||"string"!=typeof e)throw new TypeError("Expected a non-empty string");let o={negated:!1,fastpaths:!0};return!1===n.fastpaths||"."!==e[0]&&"*"!==e[0]||(o.output=t.fastpaths(e,n)),o.output||(o=t(e,n)),i.compileRe(o,n,s,r)},i.toRegex=(e,t)=>{try{const n=t||{};return new RegExp(e,n.flags||(n.nocase?"i":""))}catch(e){if(t&&!0===t.debug)throw e;return/$^/}},i.constants=s,Xo=i}function ra(){if(Zo)return Yo;Zo=1;const e=ia(),t=ta();function n(n,s,i=!1){return!s||null!==s.windows&&void 0!==s.windows||(s={...s,windows:t.isWindows()}),e(n,s,i)}return Object.assign(n,e),Yo=n}var oa=Fo(ra());const aa={ArrayPattern(e,t){for(const n of t.elements)n&&aa[n.type](e,n)},AssignmentPattern(e,t){aa[t.left.type](e,t.left)},Identifier(e,t){e.push(t.name)},MemberExpression(){},ObjectPattern(e,t){for(const n of t.properties)"RestElement"===n.type?aa.RestElement(e,n):aa[n.value.type](e,n.value)},RestElement(e,t){aa[t.argument.type](e,t.argument)}},la=function(e){const t=[];return aa[e.type](t,e),t};function ca(e,t,n){try{const o=Ia.__wbindgen_add_to_stack_pointer(-16),a=Aa(e,Ia.__wbindgen_export2,Ia.__wbindgen_export3),l=wa;Ia.parse(o,a,l,t,n);var s=fa().getInt32(o+0,!0),i=fa().getInt32(o+4,!0),r=ha(s,i).slice();return Ia.__wbindgen_export(s,1*i,1),r}finally{Ia.__wbindgen_add_to_stack_pointer(16)}}function ua(){return{__proto__:null,"./bindings_wasm_bg.js":{__proto__:null,__wbg___wbindgen_throw_344f42d3211c4765:function(e,t){throw new Error(ma(e,t))},__wbg_error_a6fa202b58aa1cd3:function(e,t){let n,s;try{n=e,s=t,console.error(ma(e,t))}finally{Ia.__wbindgen_export(n,s,1)}},__wbg_length_1f0964f4a5e2c6d8:function(e){return ba(e).length},__wbg_new_227d7c05414eb861:function(){return da(new Error)},__wbg_prototypesetcall_4770620bbe4688a0:function(e,t,n){Uint8Array.prototype.set.call(ha(e,t),ba(n))},__wbg_stack_3b0d974bbf31e44f:function(e,t){const n=Aa(ba(t).stack,Ia.__wbindgen_export2,Ia.__wbindgen_export3),s=wa;fa().setInt32(e+4,s,!0),fa().setInt32(e+0,n,!0)},__wbindgen_object_drop_ref:function(e){!function(e){const t=ba(e);(function(e){if(e<1028)return;Ea[e]=xa,xa=e})(e)}(e)}}}}function da(e){xa===Ea.length&&Ea.push(Ea.length+1);const t=xa;return xa=Ea[t],Ea[t]=e,t}function ha(e,t){return e>>>=0,ya().subarray(e/1,e/1+t)}new Set("break case class catch const continue debugger default delete do else export extends finally for function if import in instanceof let new return super switch this throw try typeof var void while with yield enum await implements package protected static interface private public arguments Infinity NaN undefined null true false eval uneval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Symbol Error EvalError InternalError RangeError ReferenceError SyntaxError TypeError URIError Number Math Date String RegExp Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array Map Set WeakMap WeakSet SIMD ArrayBuffer DataView JSON Promise Generator GeneratorFunction Reflect Proxy Intl".split(" ")).add("");let pa=null;function fa(){return(null===pa||!0===pa.buffer.detached||void 0===pa.buffer.detached&&pa.buffer!==Ia.memory.buffer)&&(pa=new DataView(Ia.memory.buffer)),pa}function ma(e,t){return function(e,t){va+=t,va>=$a&&(Sa=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),Sa.decode(),va=t);return Sa.decode(ya().subarray(e,e+t))}(e>>>0,t)}let ga=null;function ya(){return null!==ga&&0!==ga.byteLength||(ga=new Uint8Array(Ia.memory.buffer)),ga}function ba(e){return Ea[e]}let Ea=new Array(1024).fill(void 0);Ea.push(void 0,null,!0,!1);let xa=Ea.length;function Aa(e,t,n){if(void 0===n){const n=Pa.encode(e),s=t(n.length,1)>>>0;return ya().subarray(s,s+n.length).set(n),wa=n.length,s}let s=e.length,i=t(s,1)>>>0;const r=ya();let o=0;for(;o127)break;r[i+o]=t}if(o!==s){0!==o&&(e=e.slice(o)),i=n(i,s,s=o+3*e.length,1)>>>0;const t=ya().subarray(i+o,i+s);o+=Pa.encodeInto(e,t).written,i=n(i,s,o,1)>>>0}return wa=o,i}let Sa=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Sa.decode();const $a=2146435072;let va=0;const Pa=new TextEncoder;"encodeInto"in Pa||(Pa.encodeInto=function(e,t){const n=Pa.encode(e);return t.set(n),{read:e.length,written:n.length}});let Ia,wa=0;async function Na(e){if(void 0!==Ia)return Ia;void 0!==e&&(Object.getPrototypeOf(e)===Object.prototype?({module_or_path:e}=e):console.warn("using deprecated parameters for the initialization function; pass a single object instead")),void 0===e&&(e=new URL("bindings_wasm_bg.wasm",import.meta.url));const t=ua();("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e));const{instance:n}=await async function(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if(!e.ok||!function(e){switch(e){case"basic":case"cors":case"default":return!0}return!1}(e.type)||"application/wasm"===e.headers.get("Content-Type"))throw t;console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t)}const n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}{const n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}(await e,t);return function(e){return Ia=e.exports,pa=null,ga=null,Ia}(n)}const ka=[function(e,t){return{type:"PanicError",start:t[e],end:t[e+1],message:t.convertString(t[e+2])}},function(e,t){return{type:"ParseError",start:t[e],end:t[e+1],message:t.convertString(t[e+2])}},function(e,t){return{type:"ArrayExpression",start:t[e],end:t[e+1],elements:Ra(t[e+2],t)}},function(e,t){return{type:"ArrayPattern",start:t[e],end:t[e+1],elements:Ra(t[e+2],t)}},function(e,t){const n=t[e+2],s=Zn(t[e+3],t);return{type:"ArrowFunctionExpression",start:t[e],end:t[e+1],async:!(1&~n),expression:!(2&~n),generator:!(4&~n),...s.length>0?{[Jn]:s}:{},params:Ra(t[e+4],t),body:Ca(t[e+5],t),id:null}},function(e,t){return{type:"AssignmentExpression",start:t[e],end:t[e+1],operator:Xn[t[e+2]],left:Ca(t[e+3],t),right:Ca(t[e+4],t)}},function(e,t){return{type:"AssignmentPattern",start:t[e],end:t[e+1],left:Ca(t[e+2],t),right:Ca(t[e+3],t)}},function(e,t){return{type:"AwaitExpression",start:t[e],end:t[e+1],argument:Ca(t[e+2],t)}},function(e,t){return{type:"BinaryExpression",start:t[e],end:t[e+1],operator:Xn[t[e+2]],left:Ca(t[e+3],t),right:Ca(t[e+4],t)}},function(e,t){return{type:"BlockStatement",start:t[e],end:t[e+1],body:Ra(t[e+2],t)}},function(e,t){const n=t[e+2];return{type:"BreakStatement",start:t[e],end:t[e+1],label:0===n?null:Ca(n,t)}},function(e,t){const n=t[e+2],s=Zn(t[e+3],t);return{type:"CallExpression",start:t[e],end:t[e+1],optional:!(1&~n),...s.length>0?{[Jn]:s}:{},callee:Ca(t[e+4],t),arguments:Ra(t[e+5],t)}},function(e,t){const n=t[e+2];return{type:"CatchClause",start:t[e],end:t[e+1],param:0===n?null:Ca(n,t),body:Ca(t[e+3],t)}},function(e,t){return{type:"ChainExpression",start:t[e],end:t[e+1],expression:Ca(t[e+2],t)}},function(e,t){return{type:"ClassBody",start:t[e],end:t[e+1],body:Ra(t[e+2],t)}},function(e,t){const n=t[e+3],s=t[e+4];return{type:"ClassDeclaration",start:t[e],end:t[e+1],decorators:Ra(t[e+2],t),id:0===n?null:Ca(n,t),superClass:0===s?null:Ca(s,t),body:Ca(t[e+5],t)}},function(e,t){const n=t[e+3],s=t[e+4];return{type:"ClassExpression",start:t[e],end:t[e+1],decorators:Ra(t[e+2],t),id:0===n?null:Ca(n,t),superClass:0===s?null:Ca(s,t),body:Ca(t[e+5],t)}},function(e,t){return{type:"ConditionalExpression",start:t[e],end:t[e+1],test:Ca(t[e+2],t),consequent:Ca(t[e+3],t),alternate:Ca(t[e+4],t)}},function(e,t){const n=t[e+2];return{type:"ContinueStatement",start:t[e],end:t[e+1],label:0===n?null:Ca(n,t)}},function(e,t){return{type:"DebuggerStatement",start:t[e],end:t[e+1]}},function(e,t){return{type:"Decorator",start:t[e],end:t[e+1],expression:Ca(t[e+2],t)}},function(e,t){return{type:"ExpressionStatement",start:t[e],end:t[e+1],directive:t.convertString(t[e+2]),expression:Ca(t[e+3],t)}},function(e,t){return{type:"DoWhileStatement",start:t[e],end:t[e+1],body:Ca(t[e+2],t),test:Ca(t[e+3],t)}},function(e,t){return{type:"EmptyStatement",start:t[e],end:t[e+1]}},function(e,t){const n=t[e+2];return{type:"ExportAllDeclaration",start:t[e],end:t[e+1],exported:0===n?null:Ca(n,t),source:Ca(t[e+3],t),attributes:Ra(t[e+4],t)}},function(e,t){return{type:"ExportDefaultDeclaration",start:t[e],end:t[e+1],declaration:Ca(t[e+2],t)}},function(e,t){const n=t[e+3],s=t[e+5];return{type:"ExportNamedDeclaration",start:t[e],end:t[e+1],specifiers:Ra(t[e+2],t),source:0===n?null:Ca(n,t),attributes:Ra(t[e+4],t),declaration:0===s?null:Ca(s,t)}},function(e,t){const n=Ca(t[e+2],t),s=t[e+3];return{type:"ExportSpecifier",start:t[e],end:t[e+1],local:n,exported:0===s?{...n}:Ca(s,t)}},function(e,t){return{type:"ExpressionStatement",start:t[e],end:t[e+1],expression:Ca(t[e+2],t)}},function(e,t){return{type:"ForInStatement",start:t[e],end:t[e+1],left:Ca(t[e+2],t),right:Ca(t[e+3],t),body:Ca(t[e+4],t)}},function(e,t){const n=t[e+2];return{type:"ForOfStatement",start:t[e],end:t[e+1],await:!(1&~n),left:Ca(t[e+3],t),right:Ca(t[e+4],t),body:Ca(t[e+5],t)}},function(e,t){const n=t[e+2],s=t[e+3],i=t[e+4];return{type:"ForStatement",start:t[e],end:t[e+1],init:0===n?null:Ca(n,t),test:0===s?null:Ca(s,t),update:0===i?null:Ca(i,t),body:Ca(t[e+5],t)}},function(e,t){const n=t[e+2],s=Zn(t[e+3],t),i=t[e+4];return{type:"FunctionDeclaration",start:t[e],end:t[e+1],async:!(1&~n),generator:!(2&~n),...s.length>0?{[Jn]:s}:{},id:0===i?null:Ca(i,t),params:Ra(t[e+5],t),body:Ca(t[e+6],t),expression:!1}},function(e,t){const n=t[e+2],s=Zn(t[e+3],t),i=t[e+4];return{type:"FunctionExpression",start:t[e],end:t[e+1],async:!(1&~n),generator:!(2&~n),...s.length>0?{[Jn]:s}:{},id:0===i?null:Ca(i,t),params:Ra(t[e+5],t),body:Ca(t[e+6],t),expression:!1}},function(e,t){return{type:"Identifier",start:t[e],end:t[e+1],name:t.convertString(t[e+2])}},function(e,t){const n=t[e+4];return{type:"IfStatement",start:t[e],end:t[e+1],test:Ca(t[e+2],t),consequent:Ca(t[e+3],t),alternate:0===n?null:Ca(n,t)}},function(e,t){return{type:"ImportAttribute",start:t[e],end:t[e+1],key:Ca(t[e+2],t),value:Ca(t[e+3],t)}},function(e,t){const n=t[e+5];return{type:"ImportDeclaration",start:t[e],end:t[e+1],specifiers:Ra(t[e+2],t),source:Ca(t[e+3],t),attributes:Ra(t[e+4],t),...0===n?{}:{phase:Xn[n]}}},function(e,t){return{type:"ImportDefaultSpecifier",start:t[e],end:t[e+1],local:Ca(t[e+2],t)}},function(e,t){const n=t[e+3],s=t[e+4];return{type:"ImportExpression",start:t[e],end:t[e+1],source:Ca(t[e+2],t),options:0===n?null:Ca(n,t),...0===s?{}:{phase:Xn[s]}}},function(e,t){return{type:"ImportNamespaceSpecifier",start:t[e],end:t[e+1],local:Ca(t[e+2],t)}},function(e,t){const n=t[e+2],s=Ca(t[e+3],t);return{type:"ImportSpecifier",start:t[e],end:t[e+1],imported:0===n?{...s}:Ca(n,t),local:s}},function(e,t){const n=t[e+3];return{type:"JSXAttribute",start:t[e],end:t[e+1],name:Ca(t[e+2],t),value:0===n?null:Ca(n,t)}},function(e,t){return{type:"JSXClosingElement",start:t[e],end:t[e+1],name:Ca(t[e+2],t)}},function(e,t){return{type:"JSXClosingFragment",start:t[e],end:t[e+1]}},function(e,t){const n=t[e+4];return{type:"JSXElement",start:t[e],end:t[e+1],openingElement:Ca(t[e+2],t),children:Ra(t[e+3],t),closingElement:0===n?null:Ca(n,t)}},function(e,t){return{type:"JSXEmptyExpression",start:t[e],end:t[e+1]}},function(e,t){return{type:"JSXExpressionContainer",start:t[e],end:t[e+1],expression:Ca(t[e+2],t)}},function(e,t){return{type:"JSXFragment",start:t[e],end:t[e+1],openingFragment:Ca(t[e+2],t),children:Ra(t[e+3],t),closingFragment:Ca(t[e+4],t)}},function(e,t){return{type:"JSXIdentifier",start:t[e],end:t[e+1],name:t.convertString(t[e+2])}},function(e,t){return{type:"JSXMemberExpression",start:t[e],end:t[e+1],object:Ca(t[e+2],t),property:Ca(t[e+3],t)}},function(e,t){return{type:"JSXNamespacedName",start:t[e],end:t[e+1],namespace:Ca(t[e+2],t),name:Ca(t[e+3],t)}},function(e,t){const n=t[e+2];return{type:"JSXOpeningElement",start:t[e],end:t[e+1],selfClosing:!(1&~n),name:Ca(t[e+3],t),attributes:Ra(t[e+4],t)}},function(e,t){return{type:"JSXOpeningFragment",start:t[e],end:t[e+1],attributes:[],selfClosing:!1}},function(e,t){return{type:"JSXSpreadAttribute",start:t[e],end:t[e+1],argument:Ca(t[e+2],t)}},function(e,t){return{type:"JSXSpreadChild",start:t[e],end:t[e+1],expression:Ca(t[e+2],t)}},function(e,t){return{type:"JSXText",start:t[e],end:t[e+1],value:t.convertString(t[e+2]),raw:t.convertString(t[e+3])}},function(e,t){return{type:"LabeledStatement",start:t[e],end:t[e+1],label:Ca(t[e+2],t),body:Ca(t[e+3],t)}},function(e,t){const n=t.convertString(t[e+2]);return{type:"Literal",start:t[e],end:t[e+1],bigint:n,raw:t.convertString(t[e+3]),value:BigInt(n)}},function(e,t){const n=!(1&~t[e+2]);return{type:"Literal",start:t[e],end:t[e+1],value:n,raw:n?"true":"false"}},function(e,t){return{type:"Literal",start:t[e],end:t[e+1],raw:"null",value:null}},function(e,t){const n=t[e+2];return{type:"Literal",start:t[e],end:t[e+1],raw:0===n?void 0:t.convertString(n),value:new DataView(t.buffer).getFloat64(e+3<<2,!0)}},function(e,t){const n=t.convertString(t[e+2]),s=t.convertString(t[e+3]);return{type:"Literal",start:t[e],end:t[e+1],raw:`/${s}/${n}`,regex:{flags:n,pattern:s},value:new RegExp(s,n)}},function(e,t){const n=t[e+3];return{type:"Literal",start:t[e],end:t[e+1],value:t.convertString(t[e+2]),raw:0===n?void 0:t.convertString(n)}},function(e,t){return{type:"LogicalExpression",start:t[e],end:t[e+1],operator:Xn[t[e+2]],left:Ca(t[e+3],t),right:Ca(t[e+4],t)}},function(e,t){const n=t[e+2];return{type:"MemberExpression",start:t[e],end:t[e+1],computed:!(1&~n),optional:!(2&~n),object:Ca(t[e+3],t),property:Ca(t[e+4],t)}},function(e,t){return{type:"MetaProperty",start:t[e],end:t[e+1],meta:Ca(t[e+2],t),property:Ca(t[e+3],t)}},function(e,t){const n=t[e+2];return{type:"MethodDefinition",start:t[e],end:t[e+1],static:!(1&~n),computed:!(2&~n),decorators:Ra(t[e+3],t),key:Ca(t[e+4],t),value:Ca(t[e+5],t),kind:Xn[t[e+6]]}},function(e,t){const n=Zn(t[e+2],t);return{type:"NewExpression",start:t[e],end:t[e+1],...n.length>0?{[Jn]:n}:{},callee:Ca(t[e+3],t),arguments:Ra(t[e+4],t)}},function(e,t){return{type:"ObjectExpression",start:t[e],end:t[e+1],properties:Ra(t[e+2],t)}},function(e,t){return{type:"ObjectPattern",start:t[e],end:t[e+1],properties:Ra(t[e+2],t)}},function(e,t){return{type:"PrivateIdentifier",start:t[e],end:t[e+1],name:t.convertString(t[e+2])}},function(e,t){const n=Zn(t[e+3],t);return{type:"Program",start:t[e],end:t[e+1],body:Ra(t[e+2],t),...n.length>0?{[Yn]:n}:{},sourceType:"module"}},function(e,t){const n=t[e+2],s=t[e+3],i=Ca(t[e+4],t);return{type:"Property",start:t[e],end:t[e+1],method:!(1&~n),shorthand:!(2&~n),computed:!(4&~n),key:0===s?{...i}:Ca(s,t),value:i,kind:Xn[t[e+5]]}},function(e,t){const n=t[e+2],s=t[e+5];return{type:"PropertyDefinition",start:t[e],end:t[e+1],static:!(1&~n),computed:!(2&~n),decorators:Ra(t[e+3],t),key:Ca(t[e+4],t),value:0===s?null:Ca(s,t)}},function(e,t){return{type:"RestElement",start:t[e],end:t[e+1],argument:Ca(t[e+2],t)}},function(e,t){const n=t[e+2];return{type:"ReturnStatement",start:t[e],end:t[e+1],argument:0===n?null:Ca(n,t)}},function(e,t){return{type:"SequenceExpression",start:t[e],end:t[e+1],expressions:Ra(t[e+2],t)}},function(e,t){return{type:"SpreadElement",start:t[e],end:t[e+1],argument:Ca(t[e+2],t)}},function(e,t){return{type:"StaticBlock",start:t[e],end:t[e+1],body:Ra(t[e+2],t)}},function(e,t){return{type:"Super",start:t[e],end:t[e+1]}},function(e,t){const n=t[e+2];return{type:"SwitchCase",start:t[e],end:t[e+1],test:0===n?null:Ca(n,t),consequent:Ra(t[e+3],t)}},function(e,t){return{type:"SwitchStatement",start:t[e],end:t[e+1],discriminant:Ca(t[e+2],t),cases:Ra(t[e+3],t)}},function(e,t){return{type:"TaggedTemplateExpression",start:t[e],end:t[e+1],tag:Ca(t[e+2],t),quasi:Ca(t[e+3],t)}},function(e,t){const n=t[e+2],s=t[e+3],i=0===s?null:t.convertString(s),r=t.convertString(t[e+4]);return{type:"TemplateElement",start:t[e],end:t[e+1],tail:!(1&~n),value:{cooked:i,raw:r}}},function(e,t){return{type:"TemplateLiteral",start:t[e],end:t[e+1],quasis:Ra(t[e+2],t),expressions:Ra(t[e+3],t)}},function(e,t){return{type:"ThisExpression",start:t[e],end:t[e+1]}},function(e,t){return{type:"ThrowStatement",start:t[e],end:t[e+1],argument:Ca(t[e+2],t)}},function(e,t){const n=t[e+3],s=t[e+4];return{type:"TryStatement",start:t[e],end:t[e+1],block:Ca(t[e+2],t),handler:0===n?null:Ca(n,t),finalizer:0===s?null:Ca(s,t)}},function(e,t){return{type:"UnaryExpression",start:t[e],end:t[e+1],operator:Xn[t[e+2]],argument:Ca(t[e+3],t),prefix:!0}},function(e,t){const n=t[e+2];return{type:"UpdateExpression",start:t[e],end:t[e+1],prefix:!(1&~n),operator:Xn[t[e+3]],argument:Ca(t[e+4],t)}},function(e,t){return{type:"VariableDeclaration",start:t[e],end:t[e+1],kind:Xn[t[e+2]],declarations:Ra(t[e+3],t)}},function(e,t){const n=t[e+3];return{type:"VariableDeclarator",start:t[e],end:t[e+1],id:Ca(t[e+2],t),init:0===n?null:Ca(n,t)}},function(e,t){return{type:"WhileStatement",start:t[e],end:t[e+1],test:Ca(t[e+2],t),body:Ca(t[e+3],t)}},function(e,t){const n=t[e+2],s=t[e+3];return{type:"YieldExpression",start:t[e],end:t[e+1],delegate:!(1&~n),argument:0===s?null:Ca(s,t)}}];function Ca(e,t){const n=t[e],s=ka[n];if(!s)throw console.trace(),new Error(`Unknown node type: ${n}`);return s(e+1,t)}function Ra(e,t){if(0===e)return le;const n=t[e++],s=new Array(n);for(let i=0;i{const s=t[n++],i=n<<2;return e.toString("utf8",i,i+s)};else{const s=new TextDecoder;n=n=>{const i=t[n++],r=n<<2;return s.decode(e.subarray(r,r+i))}}return Object.assign(t,{convertString:n})}class Oa extends ss{addExportedVariables(e,t){for(const n of this.elements)n?.addExportedVariables(e,t)}declare(e,t,n){const s=[],i=Ma(t);for(const t of this.elements)null!==t&&s.push(...t.declare(e,i,n));return s}deoptimizeAssignment(e,t){const n=Ma(e);for(const e of this.elements)e?.deoptimizeAssignment(n,t)}deoptimizePath(){for(const e of this.elements)e?.deoptimizePath(Pe)}hasEffectsWhenDestructuring(e,t,n){const s=Ma(t);for(const t of this.elements)if(t?.hasEffectsWhenDestructuring(e,s,n))return!0;return!1}hasEffectsOnInteractionAtPath(e,t,n){for(const e of this.elements)if(e?.hasEffectsOnInteractionAtPath(Pe,t,n))return!0;return!1}includeDestructuredIfNecessary(e,t,n){let s=!1;const i=Ma(t);for(const t of[...this.elements].reverse())t&&(s&&!t.included&&t.includeNode(e),s=t.includeDestructuredIfNecessary(e,i,n)||s);return!this.included&&s&&this.includeNode(e),this.included}render(e,t){let n=this.start+1;for(const s of this.elements)if(s){if(!s.included){e.remove(n,this.end-1);break}s.render(e,t),n=s.end}}markDeclarationReached(){for(const e of this.elements)e?.markDeclarationReached()}}Oa.prototype.includeNode=is;const Ma=e=>e.at(-1)===pe?e:[...e,me];class _a extends rr{constructor(){super(...arguments),this.objectEntity=null}get expression(){return Fe(this.flags,8388608)}set expression(e){this.flags=je(this.flags,8388608,e)}createScope(e){this.scope=new Qi(e,!1)}hasEffects(){return!1}hasEffectsOnInteractionAtPath(e,t,n){if(this.annotationNoSideEffects&&0===e.length&&2===t.type)return!1;if(super.hasEffectsOnInteractionAtPath(e,t,n))return!0;if(2===t.type){const{ignore:e,brokenFlow:t}=n;if(n.ignore={breaks:!1,continues:!1,labels:new Set,returnYield:!0,this:!1},this.body.hasEffects(n))return!0;n.ignore=e,n.brokenFlow=t}return!1}onlyFunctionCallUsed(){return this.parent.type===nt&&this.parent.callee===this||super.onlyFunctionCallUsed()}include(e,t){super.include(e,t);for(const n of this.params)n instanceof ki||n.include(e,t)}includeNode(e){this.included=!0,this.body.includePath(Ie,e);for(const t of this.params)t instanceof ki||t.includePath(Ie,e)}getObjectEntity(){return null!==this.objectEntity?this.objectEntity:this.objectEntity=new Ls([],zs)}}class La extends ss{addExportedVariables(e,t){for(const n of this.properties)n.type===at?n.value.addExportedVariables(e,t):n.argument.addExportedVariables(e,t)}declare(e,t,n){const s=[];for(const i of this.properties)s.push(...i.declare(e,t,n));return s}deoptimizeAssignment(e,t){for(const n of this.properties)n.deoptimizeAssignment(e,t)}deoptimizePath(e){if(0===e.length)for(const t of this.properties)t.deoptimizePath(e)}hasEffectsOnInteractionAtPath(e,t,n){for(const e of this.properties)if(e.hasEffectsOnInteractionAtPath(Pe,t,n))return!0;return!1}hasEffectsWhenDestructuring(e,t,n){for(const s of this.properties)if(s.hasEffectsWhenDestructuring(e,t,n))return!0;return!1}includeDestructuredIfNecessary(e,t,n){if(!this.properties.length)return this.included;const s=this.properties.at(-1);let i=s.includeDestructuredIfNecessary(e,t,n);const r="RestElement"===s.type;for(const s of this.properties.slice(0,-1))r&&i&&!s.included&&s.includeNode(e),i=s.includeDestructuredIfNecessary(e,t,n)||i;return!this.included&&i&&this.includeNode(e),this.included}markDeclarationReached(){for(const e of this.properties)e.markDeclarationReached()}render(e,t){if(this.properties.length>0){const n=te(this.properties,e,this.start+1,this.end-1);let s=null;for(const{node:i,separator:r,start:o,end:a}of n)i.included?(s=r,i.render(e,t)):q(i,e,o,a);s&&e.remove(s,this.end-1)}}}La.prototype.includeNode=rs,La.prototype.applyDeoptimizations=os;class Ta extends ss{constructor(){super(...arguments),this.isConstReassignment=!1}hasEffects(e){const{deoptimized:t,isConstReassignment:n,left:s,operator:i,right:r}=this;return t||this.applyDeoptimizations(),n||r.hasEffects(e)||s.hasEffectsAsAssignmentTarget(e,"="!==i)||this.left.hasEffectsWhenDestructuring?.(e,Pe,r)}hasEffectsOnInteractionAtPath(e,t,n){return 1===t.type&&this.left.included||this.right.hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){const{deoptimized:n,isConstReassignment:s,left:i,right:r,operator:o}=this;n||this.applyDeoptimizations(),this.included||this.includeNode(e);const a=Ve();(t||s||"="!==o||i.included||i.hasEffectsAsAssignmentTarget(a,!1)||i.hasEffectsWhenDestructuring?.(a,Pe,r))&&i.includeAsAssignmentTarget(e,t,"="!==o),r.include(e,t)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.right.includePath(Ie,e)}initialise(){if(super.initialise(),this.left instanceof ki){const e=this.scope.variables.get(this.left.name);"const"===e?.kind&&(this.isConstReassignment=!0,this.scope.context.log(ft,{code:"CONST_REASSIGN",message:"Cannot reassign a variable declared with `const`"},this.left.start))}this.left.setAssignedValue(this.right)}render(e,t,{preventASI:n,renderedParentType:s,renderedSurroundingElement:i}=oe){const{left:r,right:o,start:a,end:l,parent:c}=this;if(r.included)r.render(e,t),o.render(e,t);else{const l=Y(e.original,X(e.original,"=",r.end)+1);e.remove(a,l),n&&ne(e,l,o.start),o.render(e,t,{renderedParentType:s||c.type,renderedSurroundingElement:i||c.type})}if("system"===t.format)if(r instanceof ki){const n=r.variable,s=t.exportNamesByVariable.get(n);if(s)return void(1===s.length?ie(n,a,l,e,t):re(n,a,l,c.type!==it,e,t))}else{const n=[];if(r.addExportedVariables(n,t.exportNamesByVariable),n.length>0)return void function(e,t,n,s,i,r){const{_:o,getDirectReturnIifeLeft:a}=r.snippets;i.prependRight(t,a(["v"],`${se(e,r)},${o}v`,{needsArrowReturnParens:!0,needsWrappedFunction:s})),i.appendLeft(n,")")}(n,a,l,i===it,e,t)}r.included&&r instanceof La&&(i===it||i===tt)&&(e.appendRight(a,"("),e.prependLeft(l,")"))}applyDeoptimizations(){this.deoptimized=!0,this.left.deoptimizeAssignment(Pe,this.right),this.scope.context.requestTreeshakingPass()}}class Ba extends ss{addExportedVariables(e,t){this.left.addExportedVariables(e,t)}declare(e,t,n){return this.left.declare(e,t,n)}deoptimizeAssignment(e,t){this.left.deoptimizeAssignment(e,t)}deoptimizePath(e){0===e.length&&this.left.deoptimizePath(e)}hasEffectsOnInteractionAtPath(e,t,n){return e.length>0||this.left.hasEffectsOnInteractionAtPath(Pe,t,n)}hasEffectsWhenDestructuring(e,t,n){return this.left.hasEffectsWhenDestructuring(e,t,n)}includeDestructuredIfNecessary(e,t,n){let s=this.left.includeDestructuredIfNecessary(e,t,n)||this.included;return(s||=this.right.shouldBeIncluded(e))&&(this.right.include(e,!1),this.left.included||(this.left.includeNode(e),this.left.includeDestructuredIfNecessary(e,t,n))),!this.included&&s&&this.includeNode(e),this.included}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.right.includePath(Ie,e)}markDeclarationReached(){this.left.markDeclarationReached()}render(e,t,{isShorthandProperty:n}=oe){this.left.render(e,t,{isShorthandProperty:n}),this.right.render(e,t)}applyDeoptimizations(){this.deoptimized=!0,this.left.deoptimizePath(Pe),this.right.deoptimizePath(Ie),this.scope.context.requestTreeshakingPass()}}class za extends ss{deoptimizePath(e){this.argument.deoptimizePath(e)}hasEffects(){return this.deoptimized||this.applyDeoptimizations(),!0}initialise(){super.initialise();let e=this.parent;do{if(e instanceof or||e instanceof _a)return}while(e=e.parent);this.scope.context.usesTopLevelAwait=!0}include(e,t){this.included||this.includeNode(e),this.argument.include(e,t)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.argument.includePath(Va,e)}includePath(e,t){this.deoptimized||this.applyDeoptimizations(),this.included||this.includeNode(t),this.argument.includePath(e,t)}}const Va=["then"];function Fa(e){return void 0===e?"void 0":"boolean"==typeof e?String(e):"string"==typeof e?JSON.stringify(e):"number"==typeof e?function(e){if(Object.is(-0,e))return"-0";const t=e.toExponential(),[n,s]=t.split("e"),i=n.split(".")[1]?.length||0,r=`${n.replace(".","")}e${parseInt(s)-i}`,o=String(e).replace("+","");return r.lengthe!=t,"!==":(e,t)=>e!==t,"%":(e,t)=>e%t,"&":(e,t)=>e&t,"*":(e,t)=>e*t,"**":(e,t)=>e**t,"+":(e,t)=>e+t,"-":(e,t)=>e-t,"/":(e,t)=>e/t,"<":(e,t)=>ee<e<=t,"==":(e,t)=>e==t,"===":(e,t)=>e===t,">":(e,t)=>e>t,">=":(e,t)=>e>=t,">>":(e,t)=>e>>t,">>>":(e,t)=>e>>>t,"^":(e,t)=>e^t,"|":(e,t)=>e|t},Ua=Symbol("Unassigned");class Ga extends ss{constructor(){super(...arguments),this.renderedLiteralValue=Ua}deoptimizeCache(){this.renderedLiteralValue=Ue}getLiteralValueAtPath(e,t,n){if(e.length>0)return Ue;const s=this.left.getLiteralValueAtPath(Pe,t,n);if("symbol"==typeof s)return Ue;if("in"===this.operator&&this.right.variable instanceof uo){const[e]=this.right.variable.context.traceExport(String(s));return e instanceof _n||e instanceof po?Ue:!!e}const i=this.right.getLiteralValueAtPath(Pe,t,n);if("symbol"==typeof i)return Ue;const r=ja[this.operator];return r?r(s,i):Ue}getRenderedLiteralValue(){return"in"===this.operator&&this.right.variable instanceof uo?this.renderedLiteralValue!==Ua?this.renderedLiteralValue:this.renderedLiteralValue=Fa(this.getLiteralValueAtPath(Pe,De,this)):Ue}hasEffects(e){return"+"===this.operator&&this.parent instanceof tr&&""===this.left.getLiteralValueAtPath(Pe,De,this)||super.hasEffects(e)}hasEffectsOnInteractionAtPath(e,{type:t}){return 0!==t||e.length>1}include(e,t,n){this.included||this.includeNode(e),"symbol"==typeof this.getRenderedLiteralValue()&&(this.left.include(e,t,n),this.right.include(e,t,n),"instanceof"===this.operator&&this.right.includePath(ke,e))}includeNode(e){this.included=!0,"in"===this.operator&&"symbol"==typeof this.getRenderedLiteralValue()&&this.right.includePath(Ie,e)}removeAnnotations(e){this.left.removeAnnotations(e)}render(e,t,{renderedSurroundingElement:n}=oe){const s=this.getRenderedLiteralValue();"symbol"!=typeof s?e.overwrite(this.start,this.end,s):(this.left.render(e,t,{renderedSurroundingElement:n}),this.right.render(e,t))}}Ga.prototype.applyDeoptimizations=os;class Ha extends ss{hasEffects(e){if(this.label){if(!e.ignore.labels.has(this.label.name))return!0;e.includedLabels.add(this.label.name)}else{if(!e.ignore.breaks)return!0;e.hasBreak=!0}return e.brokenFlow=!0,!1}include(e,t){this.included=!0,this.label?(this.label.include(e,t),e.includedLabels.add(this.label.name)):e.hasBreak=!0,e.brokenFlow=!0}}function Wa(e,t,n){if(n.arguments.length>0)if(n.arguments[n.arguments.length-1].included)for(const s of n.arguments)s.render(e,t);else{let s=n.arguments.length-2;for(;s>=0&&!n.arguments[s].included;)s--;if(s>=0){for(let i=0;i<=s;i++)n.arguments[i].render(e,t);e.remove(X(e.original,",",n.arguments[s].end),n.end-1)}else e.remove(X(e.original,"(",n.callee.end)+1,n.end-1)}}Ha.prototype.includeNode=rs,Ha.prototype.applyDeoptimizations=os;class qa extends ss{constructor(){super(...arguments),this.returnExpression=null,this.deoptimizableDependentExpressions=[],this.expressionsToBeDeoptimized=new Set}deoptimizeArgumentsOnInteractionAtPath(e,t,n){const{args:s}=e,[i,r]=this.getReturnExpression(n);if(r)return;const o=s.filter(e=>!!e&&e!==qe);if(0!==o.length)if(i===qe)for(const e of o)e.deoptimizePath(Ie);else n.withTrackedEntityAtPath(t,i,()=>{for(const e of o)this.expressionsToBeDeoptimized.add(e);i.deoptimizeArgumentsOnInteractionAtPath(e,t,n)},null)}deoptimizeCache(){if(this.returnExpression?.[0]!==qe){this.returnExpression=Ke;const{deoptimizableDependentExpressions:e,expressionsToBeDeoptimized:t}=this;this.expressionsToBeDeoptimized=ce,this.deoptimizableDependentExpressions=le;for(const t of e)t.deoptimizeCache();for(const e of t)e.deoptimizePath(Ie)}}deoptimizePath(e){if(0===e.length||this.scope.context.deoptimizationTracker.trackEntityAtPathAndGetIfTracked(e,this))return;const[t]=this.getReturnExpression();t!==qe&&t.deoptimizePath(e)}getLiteralValueAtPath(e,t,n){const[s]=this.getReturnExpression(t);return s===qe?Ue:t.withTrackedEntityAtPath(e,s,()=>(this.deoptimizableDependentExpressions.push(n),s.getLiteralValueAtPath(e,t,n)),Ue)}getReturnExpressionWhenCalledAtPath(e,t,n,s){const i=this.getReturnExpression(n);return i[0]===qe?i:n.withTrackedEntityAtPath(e,i,()=>{this.deoptimizableDependentExpressions.push(s);const[r,o]=i[0].getReturnExpressionWhenCalledAtPath(e,t,n,s);return[r,o||i[1]]},Ke)}hasEffectsOnInteractionAtPath(e,t,n){const{type:s}=t;if(2===s){const{args:s,withNew:i}=t;if((i?n.instantiated:n.called).trackEntityAtPathAndGetIfTracked(e,s,this))return!1}else if((1===s?n.assigned:n.accessed).trackEntityAtPathAndGetIfTracked(e,this))return!1;const[i,r]=this.getReturnExpression();return(1===s||!r)&&i.hasEffectsOnInteractionAtPath(e,t,n)}}class Ka extends qa{get hasCheckedForWarnings(){return Fe(this.flags,134217728)}set hasCheckedForWarnings(e){this.flags=je(this.flags,134217728,e)}get optional(){return Fe(this.flags,128)}set optional(e){this.flags=je(this.flags,128,e)}bind(){super.bind(),this.interaction={args:[this.callee instanceof Hr&&!this.callee.variable?this.callee.object:null,...this.arguments],type:2,withNew:!1}}getLiteralValueAtPathAsChainElement(e,t,n){return jr(this,this.callee,e,t,n)}hasEffects(e){this.deoptimized||this.applyDeoptimizations();for(const t of this.arguments)if(t.hasEffects(e))return!0;return!this.annotationPure&&(this.callee.hasEffects(e)||this.callee.hasEffectsOnInteractionAtPath(Pe,this.interaction,e))}hasEffectsAsChainElement(e){const t="hasEffectsAsChainElement"in this.callee?this.callee.hasEffectsAsChainElement(e):this.callee.hasEffects(e);if(t===ns)return ns;if(this.optional&&null==this.callee.getLiteralValueAtPath(Pe,De,this))return!this.annotationPure&&t||ns;this.deoptimized||this.applyDeoptimizations();for(const t of this.arguments)if(t.hasEffects(e))return!0;return!this.annotationPure&&(t||this.callee.hasEffectsOnInteractionAtPath(Pe,this.interaction,e))}include(e,t){this.included||this.includeNode(e),t?(super.include(e,!0),t===ts&&this.callee instanceof ki&&this.callee.variable&&this.callee.variable.markCalledFromTryStatement()):(this.callee.include(e,!1),this.callee.includeCallArguments(this.interaction,e))}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations()}initialise(){super.initialise(),this.annotations&&this.scope.context.options.treeshake.annotations&&(this.annotationPure=this.annotations.some(e=>"pure"===e.type))}render(e,t,{renderedSurroundingElement:n}=oe){if(this.callee.render(e,t,{isCalleeOfRenderedParent:!0,renderedSurroundingElement:n}),Wa(e,t,this),this.callee instanceof ki&&!this.hasCheckedForWarnings){this.hasCheckedForWarnings=!0;this.scope.findVariable(this.callee.name).isNamespace&&this.scope.context.log(ft,tn(this.callee.name),this.start),"eval"===this.callee.name&&this.scope.context.log(ft,{code:"EVAL",id:s=this.scope.context.module.id,message:`Use of eval in "${xt(s)}" is strongly discouraged as it poses security risks and may cause issues with minification.`,url:vt("troubleshooting/#avoiding-eval")},this.start)}var s}applyDeoptimizations(){this.deoptimized=!0,this.callee.deoptimizeArgumentsOnInteractionAtPath(this.interaction,Pe,De),this.scope.context.requestTreeshakingPass()}getReturnExpression(e=De){return null===this.returnExpression?(this.returnExpression=Ke,this.returnExpression=this.callee.getReturnExpressionWhenCalledAtPath(Pe,this.interaction,e,this)):this.returnExpression}}class Xa extends ss{createScope(e){this.scope=new Zi(e,!0)}parseNode(e){const{body:t,param:n,type:s}=e;return this.type=s,n&&(this.param=new(this.scope.context.getNodeConstructor(n.type))(this,this.scope).parseNode(n),this.param.declare("parameter",Pe,qe)),this.body=new nr(this,this.scope.bodyScope).parseNode(t),super.parseNode(e)}}Xa.prototype.preventChildBlockScope=!0,Xa.prototype.includeNode=is;class Ja extends ss{deoptimizeCache(){}getLiteralValueAtPath(e,t,n){const s=this.expression.getLiteralValueAtPathAsChainElement(e,t,n);return s===ns?void 0:s}hasEffects(e){return!0===this.expression.hasEffectsAsChainElement(e)}includePath(e,t){this.included=!0,this.expression.includePath(e,t)}removeAnnotations(e){this.expression.removeAnnotations(e)}}Ja.prototype.includeNode=rs,Ja.prototype.applyDeoptimizations=os;class Ya extends Oi{constructor(e,t){const{context:n}=e;super(e,n),this.variables.set("this",this.thisVariable=new vi("this",null,t,Pe,n,"other")),this.instanceScope=new Oi(this,n),this.instanceScope.variables.set("this",new Xi(n))}findLexicalBoundary(){return this}}class Za extends ss{createScope(e){this.scope=new Ya(e,this.parent)}include(e,t){this.included=!0,this.scope.context.includeVariableInModule(this.scope.thisVariable,Ie,e);for(const n of this.body)n.include(e,t)}parseNode(e){const t=this.body=new Array(e.body.length);let n=0;for(const s of e.body)t[n++]=new(this.scope.context.getNodeConstructor(s.type))(this,s.static?this.scope:this.scope.instanceScope).parseNode(s);return super.parseNode(e)}}Za.prototype.includeNode=rs,Za.prototype.applyDeoptimizations=os;class Qa extends Vi{render(e,t,{renderedSurroundingElement:n}=oe){super.render(e,t),n===it&&(e.appendRight(this.start,"("),e.prependLeft(this.end,")"))}}function el(e){return"symbol"==typeof e?e!==He&&(e===Ge||Ue):!!e}class tl extends We{constructor(e){super(),this.expressions=e}deoptimizePath(e){for(const t of this.expressions)t.deoptimizePath(e)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return[new tl(this.expressions.map(i=>i.getReturnExpressionWhenCalledAtPath(e,t,n,s)[0])),!1]}hasEffectsOnInteractionAtPath(e,t,n){for(const s of this.expressions)if(s.hasEffectsOnInteractionAtPath(e,t,n))return!0;return!1}}class nl extends ss{constructor(){super(...arguments),this.expressionsToBeDeoptimized=[],this.usedBranch=null}get isBranchResolutionAnalysed(){return Fe(this.flags,65536)}set isBranchResolutionAnalysed(e){this.flags=je(this.flags,65536,e)}get hasDeoptimizedCache(){return Fe(this.flags,33554432)}set hasDeoptimizedCache(e){this.flags=je(this.flags,33554432,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.consequent.deoptimizeArgumentsOnInteractionAtPath(e,t,n),this.alternate.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizeCache(){if(!this.hasDeoptimizedCache&&(this.hasDeoptimizedCache=!0,null!==this.usedBranch)){const e=this.usedBranch===this.consequent?this.alternate:this.consequent;this.usedBranch=null,e.deoptimizePath(Ie),this.included&&e.includePath(Ie,ze());const{expressionsToBeDeoptimized:t}=this;this.expressionsToBeDeoptimized=le;for(const e of t)e.deoptimizeCache()}}deoptimizePath(e){const t=this.getUsedBranch();t?t.deoptimizePath(e):(this.consequent.deoptimizePath(e),this.alternate.deoptimizePath(e))}getLiteralValueAtPath(e,t,n){const s=this.getUsedBranch();if(!s){if(this.hasDeoptimizedCache)return Ue;const s=this.consequent.getLiteralValueAtPath(e,t,n),i=el(s);if(i===Ue)return Ue;const r=this.alternate.getLiteralValueAtPath(e,t,n);return i!==el(r)?Ue:(this.expressionsToBeDeoptimized.push(n),s!==r?i?Ge:He:s)}return this.expressionsToBeDeoptimized.push(n),s.getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){const i=this.getUsedBranch();return i?(this.expressionsToBeDeoptimized.push(s),i.getReturnExpressionWhenCalledAtPath(e,t,n,s)):[new tl([this.consequent.getReturnExpressionWhenCalledAtPath(e,t,n,s)[0],this.alternate.getReturnExpressionWhenCalledAtPath(e,t,n,s)[0]]),!1]}hasEffects(e){if(this.test.hasEffects(e))return!0;const t=this.getUsedBranch();return t?t.hasEffects(e):this.consequent.hasEffects(e)||this.alternate.hasEffects(e)}hasEffectsOnInteractionAtPath(e,t,n){const s=this.getUsedBranch();return s?s.hasEffectsOnInteractionAtPath(e,t,n):this.consequent.hasEffectsOnInteractionAtPath(e,t,n)||this.alternate.hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){this.included=!0;const n=this.getUsedBranch();null===n||t||this.test.shouldBeIncluded(e)?(this.test.include(e,t),this.consequent.include(e,t),this.alternate.include(e,t)):n.include(e,t)}includePath(e,t){this.included=!0;const n=this.getUsedBranch();null===n||this.test.shouldBeIncluded(t)?(this.consequent.includePath(e,t),this.alternate.includePath(e,t)):n.includePath(e,t)}includeCallArguments(e,t){const n=this.getUsedBranch();n?n.includeCallArguments(e,t):(this.consequent.includeCallArguments(e,t),this.alternate.includeCallArguments(e,t))}removeAnnotations(e){this.test.removeAnnotations(e)}render(e,t,{isCalleeOfRenderedParent:n,preventASI:s,renderedParentType:i,renderedSurroundingElement:r}=oe){if(this.test.included)this.test.render(e,t,{renderedSurroundingElement:r}),this.consequent.render(e,t),this.alternate.render(e,t);else{const o=this.getUsedBranch(),a=X(e.original,":",this.consequent.end),l=Y(e.original,(this.consequent.included?X(e.original,"?",this.test.end):a)+1);s&&ne(e,l,o.start),e.remove(this.start,l),this.consequent.included&&e.remove(a,this.end),this.test.removeAnnotations(e),o.render(e,t,{isCalleeOfRenderedParent:n,preventASI:!0,renderedParentType:i||this.parent.type,renderedSurroundingElement:r||this.parent.type})}}getUsedBranch(){if(this.isBranchResolutionAnalysed)return this.usedBranch;this.isBranchResolutionAnalysed=!0;const e=el(this.test.getLiteralValueAtPath(Pe,De,this));return"symbol"==typeof e?null:this.usedBranch=e?this.consequent:this.alternate}}nl.prototype.includeNode=rs,nl.prototype.applyDeoptimizations=os;class sl extends ss{hasEffects(e){if(this.label){if(!e.ignore.labels.has(this.label.name))return!0;e.includedLabels.add(this.label.name)}else{if(!e.ignore.continues)return!0;e.hasContinue=!0}return e.brokenFlow=!0,!1}include(e,t){this.included=!0,this.label?(this.label.include(e,t),e.includedLabels.add(this.label.name)):e.hasContinue=!0,e.brokenFlow=!0}}sl.prototype.includeNode=rs,sl.prototype.applyDeoptimizations=os;class il extends ss{hasEffects(){return!0}}il.prototype.includeNode=is;class rl extends ss{hasEffects(e){return this.expression.hasEffects(e)||this.expression.hasEffectsOnInteractionAtPath(Pe,et,e)}}function ol(e,t){const{brokenFlow:n,hasBreak:s,hasContinue:i,ignore:r}=e,{breaks:o,continues:a}=r;return r.breaks=!0,r.continues=!0,e.hasBreak=!1,e.hasContinue=!1,!!t.hasEffects(e)||(r.breaks=o,r.continues=a,e.hasBreak=s,e.hasContinue=i,e.brokenFlow=n,!1)}function al(e,t,n){const{brokenFlow:s,hasBreak:i,hasContinue:r}=e;e.hasBreak=!1,e.hasContinue=!1,t.include(e,n,{asSingleStatement:!0}),e.hasBreak=i,e.hasContinue=r,e.brokenFlow=s}rl.prototype.includeNode=is;class ll extends ss{hasEffects(e){return!!this.test.hasEffects(e)||ol(e,this.body)}include(e,t){this.included=!0,this.test.include(e,t),al(e,this.body,t)}}ll.prototype.includeNode=rs,ll.prototype.applyDeoptimizations=os;class cl extends ss{hasEffects(){return!1}}cl.prototype.includeNode=is;class ul extends ss{hasEffects(){return!1}initialise(){super.initialise(),this.scope.context.addExport(this)}render(e,t,n){e.remove(n.start,n.end)}}ul.prototype.needsBoundaries=!0,ul.prototype.includeNode=rs,ul.prototype.applyDeoptimizations=os;class dl extends ss{bind(){this.declaration?.bind()}hasEffects(e){return!!this.declaration?.hasEffects(e)}initialise(){super.initialise(),this.scope.context.addExport(this)}removeAnnotations(e){this.declaration?.removeAnnotations(e)}render(e,t,n){const{start:s,end:i}=n;if(null===this.declaration)e.remove(s,i);else{let n=this.declaration.start;if(this.declaration instanceof Fi){const e=this.declaration.decorators;for(const t of e)n=Math.min(n,t.start);n<=this.start&&(n=this.declaration.start)}e.remove(this.start,n),this.declaration.render(e,t,{end:i,start:s})}}}dl.prototype.needsBoundaries=!0,dl.prototype.includeNode=rs,dl.prototype.applyDeoptimizations=os;class hl extends ss{}hl.prototype.includeNode=rs,hl.prototype.applyDeoptimizations=os;class pl extends ss{createScope(e){this.scope=new Ti(e)}hasEffects(e){const{body:t,deoptimized:n,left:s,right:i}=this;return n||this.applyDeoptimizations(),!(!s.hasEffectsAsAssignmentTarget(e,!1)&&!i.hasEffects(e))||ol(e,t)}include(e,t){const{body:n,deoptimized:s,left:i,right:r}=this;s||this.applyDeoptimizations(),this.included||this.includeNode(e),i.includeAsAssignmentTarget(e,t||!0,!1),r.include(e,t),al(e,n,t)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.right.includePath(Ie,e)}initialise(){super.initialise(),this.left.setAssignedValue(qe)}render(e,t){this.left.render(e,t,K),this.right.render(e,t,K),110===e.original.charCodeAt(this.right.start-1)&&e.prependLeft(this.right.start," "),this.body.render(e,t)}applyDeoptimizations(){this.deoptimized=!0,this.left.deoptimizePath(Pe),this.scope.context.requestTreeshakingPass()}}class fl extends ss{get await(){return Fe(this.flags,131072)}set await(e){this.flags=je(this.flags,131072,e)}createScope(e){this.scope=new Ti(e)}hasEffects(){return this.deoptimized||this.applyDeoptimizations(),!0}include(e,t){const{body:n,deoptimized:s,left:i,right:r}=this;s||this.applyDeoptimizations(),this.included||this.includeNode(e),i.includeAsAssignmentTarget(e,t||!0,!1),r.include(e,t),al(e,n,t)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.right.includePath(Ie,e)}initialise(){super.initialise(),this.left.setAssignedValue(qe)}render(e,t){this.left.render(e,t,K),this.right.render(e,t,K),102===e.original.charCodeAt(this.right.start-1)&&e.prependLeft(this.right.start," "),this.body.render(e,t)}applyDeoptimizations(){this.deoptimized=!0,this.left.deoptimizePath(Pe),this.right.deoptimizePath(Ie),this.scope.context.requestTreeshakingPass()}}class ml extends ss{createScope(e){this.scope=new Ti(e)}hasEffects(e){return!!(this.init?.hasEffects(e)||this.test?.hasEffects(e)||this.update?.hasEffects(e))||ol(e,this.body)}include(e,t){this.included=!0,this.init?.include(e,t,{asSingleStatement:!0}),this.test?.include(e,t),this.update?.include(e,t),al(e,this.body,t)}render(e,t){this.init?.render(e,t,K),this.test?.render(e,t,K),this.update?.render(e,t,K),this.body.render(e,t)}}ml.prototype.includeNode=rs,ml.prototype.applyDeoptimizations=os;class gl extends or{createScope(e){super.createScope(this.idScope=new Oi(e,e.context))}parseNode(e){return null!==e.id&&(this.id=new ki(this,this.idScope).parseNode(e.id)),super.parseNode(e)}onlyFunctionCallUsed(){return this.parent.type===nt&&this.parent.callee===this&&(null===this.id||this.id.variable.getOnlyFunctionCallUsed())||super.onlyFunctionCallUsed()}render(e,t,{renderedSurroundingElement:n}=oe){super.render(e,t),n===it&&(e.appendRight(this.start,"("),e.prependLeft(this.end,")"))}}class yl extends Ti{constructor(){super(...arguments),this.hoistedDeclarations=[]}addDeclaration(e,t,n,s,i){return this.hoistedDeclarations.push(e),super.addDeclaration(e,t,n,s,i)}}const bl=Symbol("unset");class El extends ss{constructor(){super(...arguments),this.testValue=bl}deoptimizeCache(){this.testValue=Ue}hasEffects(e){if(this.test.hasEffects(e))return!0;const t=this.getTestValue();if("symbol"==typeof t){const{brokenFlow:t}=e;if(this.consequent.hasEffects(e))return!0;const n=e.brokenFlow;return e.brokenFlow=t,null===this.alternate?!1:!!this.alternate.hasEffects(e)||(e.brokenFlow=e.brokenFlow&&n,!1)}return t?this.consequent.hasEffects(e):!!this.alternate?.hasEffects(e)}include(e,t){if(this.included=!0,t)this.includeRecursively(t,e);else{const t=this.getTestValue();"symbol"==typeof t?this.includeUnknownTest(e):this.includeKnownTest(e,t)}}parseNode(e){return this.consequent=new(this.scope.context.getNodeConstructor(e.consequent.type))(this,this.consequentScope=new yl(this.scope)).parseNode(e.consequent),e.alternate&&(this.alternate=new(this.scope.context.getNodeConstructor(e.alternate.type))(this,this.alternateScope=new yl(this.scope)).parseNode(e.alternate)),super.parseNode(e)}render(e,t){const{snippets:{getPropertyAccess:n}}=t,s=this.getTestValue(),i=[],r=this.test.included,o=!this.scope.context.options.treeshake;r?this.test.render(e,t):e.remove(this.start,this.consequent.start),this.consequent.included&&(o||"symbol"==typeof s||s)?this.consequent.render(e,t):(e.overwrite(this.consequent.start,this.consequent.end,r?";":""),i.push(...this.consequentScope.hoistedDeclarations)),this.alternate&&(!this.alternate.included||!o&&"symbol"!=typeof s&&s?(r&&this.shouldKeepAlternateBranch()?e.overwrite(this.alternate.start,this.end,";"):e.remove(this.consequent.end,this.end),i.push(...this.alternateScope.hoistedDeclarations)):(r?101===e.original.charCodeAt(this.alternate.start-1)&&e.prependLeft(this.alternate.start," "):e.remove(this.consequent.end,this.alternate.start),this.alternate.render(e,t))),this.renderHoistedDeclarations(i,e,n)}getTestValue(){return this.testValue===bl?this.testValue=el(this.test.getLiteralValueAtPath(Pe,De,this)):this.testValue}includeKnownTest(e,t){this.test.shouldBeIncluded(e)&&this.test.include(e,!1),t&&this.consequent.shouldBeIncluded(e)&&this.consequent.include(e,!1,{asSingleStatement:!0}),!t&&this.alternate?.shouldBeIncluded(e)&&this.alternate.include(e,!1,{asSingleStatement:!0})}includeRecursively(e,t){this.test.include(t,e),this.consequent.include(t,e),this.alternate?.include(t,e)}includeUnknownTest(e){this.test.include(e,!1);const{brokenFlow:t}=e;let n=!1;this.consequent.shouldBeIncluded(e)&&(this.consequent.include(e,!1,{asSingleStatement:!0}),n=e.brokenFlow,e.brokenFlow=t),this.alternate?.shouldBeIncluded(e)&&(this.alternate.include(e,!1,{asSingleStatement:!0}),e.brokenFlow=e.brokenFlow&&n)}renderHoistedDeclarations(e,t,n){const s=[...new Set(e.map(e=>{const t=e.variable;return t.included?t.getName(n):""}))].filter(Boolean).join(", ");if(s){const e=this.parent.type,n=e!==ot&&"BlockStatement"!==e;t.prependRight(this.start,`${n?"{ ":""}var ${s}; `),n&&t.appendLeft(this.end," }")}}shouldKeepAlternateBranch(){let e=this.parent;do{if(e instanceof El&&e.alternate)return!0;if(e instanceof nr)return!1;e=e.parent}while(e);return!1}}El.prototype.includeNode=rs,El.prototype.applyDeoptimizations=os;class xl extends ss{}class Al extends ss{bind(){}hasEffects(){return!1}initialise(){super.initialise(),this.scope.context.addImport(this)}render(e,t,n){e.remove(n.start,n.end)}}Al.prototype.needsBoundaries=!0,Al.prototype.includeNode=rs,Al.prototype.applyDeoptimizations=os;class Sl extends ss{}Sl.prototype.includeNode=rs,Sl.prototype.applyDeoptimizations=os;class $l{constructor(e){this.interaction={args:[null,e],type:2,withNew:!1}}deoptimizeArgumentsOnInteractionAtPath(e,t,n){Xe(e),2===e.type&&0===t.length&&(ls(e.args[1])||as(e.args[1]))&&e.args[1].deoptimizeArgumentsOnInteractionAtPath(this.interaction,[],n)}includeCallArguments(e,t){Ye(e,t),2===e.type&&(ls(e.args[1])||as(e.args[1]))&&e.args[1].includeCallArguments(this.interaction,t)}}class vl{deoptimizeArgumentsOnInteractionAtPath(e){Xe(e)}includeCallArguments(e,t){Ye(e,t)}}function Pl(e){return{fileName:e.getFileName(),...e.getPreRenderedChunkInfo()}}class Il extends ss{constructor(){super(...arguments),this.inlineNamespace=null,this.resolution=null,this.attributes=null,this.mechanism=null,this.namespaceExportName=void 0,this.localResolution=null,this.resolutionString=null}get shouldIncludeDynamicAttributes(){return Fe(this.flags,268435456)}set shouldIncludeDynamicAttributes(e){this.flags=je(this.flags,268435456,e)}bind(){const{options:e,parent:t,resolution:n,source:s}=this;if(s.bind(),e?.bind(),"object"!=typeof n||!n||!("namespace"in n))return;if(hs(t)||(i=t)instanceof ss&&"AwaitExpression"===i.type)return void(this.localResolution={resolution:n,tracked:!0});var i;if(!us(t))return void(this.localResolution={resolution:n,tracked:!1});let r=t,o=this;for(;!r.computed&&r.object===o&&ds(r.property)&&cs(r.parent);){const e=r.property.name;if(o=r.parent,"then"===e){const e=o.arguments[0];if(void 0===e||ls(e)||as(e))return r.promiseHandler=new $l(ho(n.namespace)),void(this.localResolution={resolution:n,tracked:!0})}else if("catch"===e||"finally"===e){if(us(o.parent)){r.promiseHandler=new vl,r=o.parent;continue}if(hs(o.parent))return r.promiseHandler=new vl,void(this.localResolution={resolution:n,tracked:!0})}break}this.localResolution={resolution:n,tracked:!1}}deoptimizePath(e){this.localResolution?.resolution?.namespace.deoptimizePath(e)}hasEffects(){return!0}include(e,t){this.included||this.includeNode(e),this.source.include(e,t),this.shouldIncludeDynamicAttributes&&this.options?.include(e,t),t&&this.localResolution?.resolution.includeAllExports()}includeNode(e){this.included=!0;const{localResolution:t,scope:n,shouldIncludeDynamicAttributes:s}=this;s&&this.options?.includePath(Ie,e),n.context.includeDynamicImport(this),n.addAccessedDynamicImport(this),t&&(t.tracked?t.resolution.includeModuleInExecution():t.resolution.includeAllExports())}includePath(e,t){this.included||this.includeNode(t),this.localResolution?.resolution?.namespace.includeMemberPath(e,t)}initialise(){super.initialise(),this.scope.context.addDynamicImport(this)}parseNode(e){return this.sourceAstNode=e.source,super.parseNode(e)}render(e,t){const{snippets:{_:n,getDirectReturnFunction:s,getObject:i,getPropertyAccess:r},importAttributesKey:o}=t;if(this.inlineNamespace){const[t,n]=s([],{functionReturn:!0,lineBreakIndent:null,name:null});return void e.overwrite(this.start,this.end,`Promise.resolve().then(${t}${this.inlineNamespace.getName(r)}${n})`)}if(this.mechanism&&(e.overwrite(this.start,X(e.original,"(",this.start+6)+1,this.mechanism.left),e.overwrite(this.end-1,this.end,this.mechanism.right)),this.resolutionString){if(e.overwrite(this.source.start,this.source.end,this.resolutionString),this.namespaceExportName){const[t,n]=s(["n"],{functionReturn:!0,lineBreakIndent:null,name:null});e.prependLeft(this.end,`.then(${t}n.${this.namespaceExportName}${n})`)}}else this.source.render(e,t);!0!==this.attributes&&(this.options&&e.overwrite(this.source.end,this.end-1,"",{contentOnly:!0}),this.attributes&&e.appendLeft(this.end-1,`,${n}${i([[o,this.attributes]],{lineBreakIndent:null})}`))}setExternalResolution(e,t,n,s,i,r,o,a,l,c){const{format:u}=t;this.inlineNamespace=null,this.resolutionString=r,this.namespaceExportName=o,this.attributes=a;const d=[...Nl[u]||[]];let h;({helper:h,mechanism:this.mechanism}=this.getDynamicImportMechanismAndHelper(e,t,n,s,l,c)),h&&d.push(h),d.length>0&&this.scope.addAccessedGlobals(d,i)}setInternalResolution(e){this.inlineNamespace=e}getDynamicImportMechanismAndHelper(e,{compact:t,dynamicImportInCjs:n,format:s,generatedCode:{arrowFunctions:i},interop:r},{_:o,getDirectReturnFunction:a,getDirectReturnIifeLeft:l},c,u,d){const{resolution:h,scope:p}=this,f=c.hookFirstSync("renderDynamicImport",[{chunk:Pl(u),customResolution:"string"==typeof h?h:null,format:s,getTargetChunkImports(){if(null===d)return null;const e=[],t=u.getFileName();for(const n of d.dependencies){const s=`'${n.getImportPath(t)}'`;n instanceof fo?e.push({fileName:n.getFileName(),resolvedImportPath:s,type:"external"}):e.push({chunk:n.getPreRenderedChunkInfo(),fileName:n.getFileName(),resolvedImportPath:s,type:"internal"})}return e},moduleId:p.context.module.id,targetChunk:d?Pl(d):null,targetModuleAttributes:h&&"string"!=typeof h?h.info.attributes:{},targetModuleId:h&&"string"!=typeof h?h.id:null}]);if(f)return{helper:null,mechanism:f};const m=!h||"string"==typeof h;switch(s){case"cjs":{if(n&&(!h||"string"==typeof h||h instanceof Wn))return{helper:null,mechanism:null};const t=wl(h,e,r);let s="require(",o=")";t&&(s=`/*#__PURE__*/${t}(${s}`,o+=")");const[c,u]=a([],{functionReturn:!0,lineBreakIndent:null,name:null});return s=`Promise.resolve().then(${c}${s}`,o+=`${u})`,!i&&m&&(s=l(["t"],`${s}t${o}`,{needsArrowReturnParens:!1,needsWrappedFunction:!0}),o=")"),{helper:t,mechanism:{left:s,right:o}}}case"amd":{const n=t?"c":"resolve",s=t?"e":"reject",c=wl(h,e,r),[u,d]=a(["m"],{functionReturn:!1,lineBreakIndent:null,name:null}),p=c?`${u}${n}(/*#__PURE__*/${c}(m))${d}`:n,[f,g]=a([n,s],{functionReturn:!1,lineBreakIndent:null,name:null});let y=`new Promise(${f}require([`,b=`],${o}${p},${o}${s})${g})`;return!i&&m&&(y=l(["t"],`${y}t${b}`,{needsArrowReturnParens:!1,needsWrappedFunction:!0}),b=")"),{helper:c,mechanism:{left:y,right:b}}}case"system":return{helper:null,mechanism:{left:"module.import(",right:")"}}}return{helper:null,mechanism:null}}}function wl(e,t,n){return"external"===t?$r[n(e instanceof Wn?e.id:null)]:"default"===t?br:null}Il.prototype.applyDeoptimizations=os;const Nl={amd:["require"],cjs:["require"],system:["module"]};class kl extends ss{}kl.prototype.includeNode=rs,kl.prototype.applyDeoptimizations=os;class Cl extends ss{}Cl.prototype.includeNode=rs,Cl.prototype.applyDeoptimizations=os;class Rl extends Ii{constructor(){super(...arguments),this.isNativeElement=!1}bind(){const e=this.getType();0===e?(this.variable=this.scope.findVariable(this.name),this.variable.addReference(this)):1===e&&(this.isNativeElement=!0)}include(e){this.included||this.includeNode(e)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),null!==this.variable&&this.scope.context.includeVariableInModule(this.variable,Pe,e)}includePath(e,t){this.included?e.length>0&&this.variable?.includePath(e,t):(this.included=!0,null!==this.variable&&this.scope.context.includeVariableInModule(this.variable,e,t))}render(e,{snippets:{getPropertyAccess:t},useOriginalName:n}){if(this.variable){const s=this.variable.getName(t,n);s!==this.name&&e.overwrite(this.start,this.end,s,{contentOnly:!0,storeName:!0})}else this.isNativeElement&&"preserve"!==this.scope.context.options.jsx.mode&&e.update(this.start,this.end,JSON.stringify(this.name))}getType(){switch(this.parent.type){case"JSXOpeningElement":case"JSXClosingElement":return this.name.startsWith(this.name.charAt(0).toUpperCase())?0:1;case"JSXMemberExpression":return this.parent.object===this?0:2;case"JSXAttribute":case"JSXNamespacedName":return 2;default:throw new Error(`Unexpected parent node type for JSXIdentifier: ${this.parent.type}`)}}}class Dl extends ss{render(e,t,{jsxMode:n}=oe){if(super.render(e,t),["classic","automatic"].includes(n)){const{name:t,value:s}=this,i=t instanceof Rl?t.name:`${t.namespace.name}:${t.name.name}`;if("automatic"!==n||"key"!==i){const n=Gn(i);i!==n&&e.overwrite(t.start,t.end,n,{contentOnly:!0}),s?(e.overwrite(t.end,s.start,": ",{contentOnly:!0}),s instanceof Fr&&"string"==typeof s.value&&s.value.includes("\n")&&e.overwrite(s.start,s.end,JSON.stringify(s.value),{contentOnly:!0})):e.appendLeft(t.end,": true")}}}}Dl.prototype.includeNode=is;class Ol extends ss{render(e,t){const{mode:n}=this.scope.context.options.jsx;"preserve"!==n?e.overwrite(this.start,this.end,")",{contentOnly:!0}):super.render(e,t)}}Ol.prototype.includeNode=is;class Ml extends Ol{}class _l extends Ol{}class Ll extends ss{render(e,t){this.argument.render(e,t);const{mode:n}=this.scope.context.options.jsx;"preserve"!==n&&(e.overwrite(this.start,this.argument.start,"",{contentOnly:!0}),e.overwrite(this.argument.end,this.end,"",{contentOnly:!0}))}}class Tl extends ss{}Tl.prototype.includeNode=is;class Bl extends ss{includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.expression.includePath(Ie,e)}render(e,t){const{mode:n}=this.scope.context.options.jsx;"preserve"!==n&&(e.remove(this.start,this.expression.start),e.remove(this.expression.end,this.end)),this.expression.render(e,t)}}const zl=/^[ \t]*\r?\n[ \t\r\n]*|[ \t]*\r?\n[ \t\r\n]*$/g,Vl=/[ \t]*\r?\n[ \t\r\n]*/g;class Fl extends ss{shouldRender(){return!!this.getRenderedText()}render(e){const{mode:t}=this.scope.context.options.jsx;"preserve"!==t&&e.overwrite(this.start,this.end,JSON.stringify(this.getRenderedText()),{contentOnly:!0})}getRenderedText(){return void 0===this.renderedText&&(this.renderedText=this.value.replace(zl,"").replace(Vl," ")),this.renderedText}}function jl(e){let t=0;for(const n of e)n instanceof Bl&&n.expression instanceof Tl||n instanceof Fl&&!n.shouldRender()||t++;return t}function Ul(e,t,n,s,i){const[r,o]=e.split(".");let a;if(n){if(a=s.scope.context.getImportedJsxFactoryVariable(o?"default":r,s.start,n),t){s.scope.findGlobal(r).includePath(Ie,i),a.globalName=r}}else a=s.scope.findGlobal(r);return s.scope.context.includeVariableInModule(a,Ie,i),a instanceof vi&&(a.consolidateInitializers(),a.addUsedPlace(s),s.scope.context.requestTreeshakingPass()),a}Fl.prototype.includeNode=is;class Gl extends ss{constructor(){super(...arguments),this.factoryVariable=null,this.factory=null}initialise(){super.initialise();const{importSource:e}=this.jsxMode=this.getRenderingMode();e&&this.scope.context.addImportSource(e)}include(e,t){this.included||this.includeNode(e);for(const n of this.children)n.include(e,t)}includeNode(e){this.included=!0;const{factory:t,importSource:n,mode:s}=this.jsxMode;t&&(this.factory=t,this.factoryVariable=Ul(t,"preserve"===s,n,this,e))}getRenderingMode(){const e=this.scope.context.options.jsx,{mode:t,factory:n,importSource:s}=e;return"automatic"===t?{factory:jl(this.children)>1?"jsxs":"jsx",importSource:e.jsxImportSource,mode:t}:{factory:n,importSource:s,mode:t}}renderChildren(e,t,n){const{children:s}=this;let i=!1,r=n,o=null;for(const n of s)n instanceof Bl&&n.expression instanceof Tl||n instanceof Fl&&!n.shouldRender()?e.remove(r,n.end):(e.appendLeft(r,", "),n.render(e,t),o?i=!0:o=n),r=n.end;return{childrenEnd:r,firstChild:o,hasMultipleChildren:i}}}Gl.prototype.applyDeoptimizations=os;class Hl extends Gl{include(e,t){super.include(e,t),this.openingElement.include(e,t),this.closingElement?.include(e,t)}render(e,t){switch(this.jsxMode.mode){case"classic":this.renderClassicMode(e,t);break;case"automatic":this.renderAutomaticMode(e,t);break;default:super.render(e,t)}}getRenderingMode(){const e=this.scope.context.options.jsx,{mode:t,factory:n,importSource:s}=e;if("automatic"===t){let e=!1;for(const t of this.openingElement.attributes)if(t instanceof Ll)e=!0;else if(e&&"key"===t.name.name)return{factory:n,importSource:s,mode:"classic"}}return super.getRenderingMode()}renderClassicMode(e,t){const{snippets:{getPropertyAccess:n},useOriginalName:s}=t,{closingElement:i,end:r,factory:o,factoryVariable:a,openingElement:{end:l,selfClosing:c}}=this,[,...u]=o.split("."),{firstAttribute:d,hasAttributes:h,hasSpread:p,inObject:f,previousEnd:m}=this.renderAttributes(e,t,[a.getName(n,s),...u].join("."),!1);this.wrapAttributes(e,f,h,p,d,"null",m),this.renderChildren(e,t,l),c?e.appendLeft(r,")"):i.render(e,t)}renderAutomaticMode(e,t){const{snippets:{getPropertyAccess:n},useOriginalName:s}=t,{closingElement:i,end:r,factoryVariable:o,openingElement:{end:a,selfClosing:l}}=this;let{firstAttribute:c,hasAttributes:u,hasSpread:d,inObject:h,keyAttribute:p,previousEnd:f}=this.renderAttributes(e,t,o.getName(n,s),!0);const{firstChild:m,hasMultipleChildren:g,childrenEnd:y}=this.renderChildren(e,t,a);m&&(e.prependRight(m.start,"children: "+(g?"[":"")),h||(e.prependRight(m.start,"{ "),h=!0),f=i.start,g&&e.appendLeft(f,"]"));const b=m?y:f;if(this.wrapAttributes(e,h,u||!!m,d,c||m,"{}",b),p){const{value:t}=p;e.appendLeft(b,", "),t?e.move(t.start,t.end,b):e.appendLeft(b,"true")}l?e.appendLeft(p?.value?.end||r,")"):i.render(e,t)}renderAttributes(e,t,n,s){const{jsxMode:{mode:i},openingElement:r}=this,{attributes:o,end:a,start:l,name:{start:c,end:u}}=r;e.update(l,c,`/*#__PURE__*/${n}(`),r.render(e,t,{jsxMode:i});let d=null,h=!1,p=!1,f=u,m=!1,g=null;for(const t of o){if(t instanceof Dl){if(s&&"key"===t.name.name){d=t,e.remove(f,t.value?.start||t.end);continue}e.appendLeft(f,","),p||(e.prependRight(t.start,"{ "),p=!0),m=!0}else p?(m&&e.appendLeft(f," "),e.appendLeft(f,"},"),p=!1):e.appendLeft(f,","),h=!0;f=t.end,g??=t}return e.remove(o.at(-1)?.end||f,a),{firstAttribute:g,hasAttributes:m,hasSpread:h,inObject:p,keyAttribute:d,previousEnd:f}}wrapAttributes(e,t,n,s,i,r,o){if(t&&e.appendLeft(o," }"),s){if(n){const{start:t}=i;i instanceof Ll&&e.prependRight(t,"{}, "),e.prependRight(t,"Object.assign("),e.appendLeft(o,")")}}else n||e.appendLeft(o,`, ${r}`)}}class Wl extends Gl{include(e,t){super.include(e,t),this.openingFragment.include(e,t),this.closingFragment.include(e,t)}render(e,t){switch(this.jsxMode.mode){case"classic":this.renderClassicMode(e,t);break;case"automatic":this.renderAutomaticMode(e,t);break;default:super.render(e,t)}}renderClassicMode(e,t){const{snippets:{getPropertyAccess:n},useOriginalName:s}=t,{closingFragment:i,factory:r,factoryVariable:o,openingFragment:a,start:l}=this,[,...c]=r.split(".");a.render(e,t),e.prependRight(l,`/*#__PURE__*/${[o.getName(n,s),...c].join(".")}(`),e.appendLeft(a.end,", null"),this.renderChildren(e,t,a.end),i.render(e,t)}renderAutomaticMode(e,t){const{snippets:{getPropertyAccess:n},useOriginalName:s}=t,{closingFragment:i,factoryVariable:r,openingFragment:o,start:a}=this;o.render(e,t),e.prependRight(a,`/*#__PURE__*/${r.getName(n,s)}(`);const{firstChild:l,hasMultipleChildren:c,childrenEnd:u}=this.renderChildren(e,t,o.end);l?(e.prependRight(l.start,"{ children: "+(c?"[":"")),c&&e.appendLeft(i.start,"]"),e.appendLeft(u," }")):e.appendLeft(o.end,", {}"),i.render(e,t)}}class ql extends ss{includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.object.includePath([this.property.name],e)}includePath(e,t){this.included||this.includeNode(t),this.object.includePath([this.property.name,...e],t)}}class Kl extends ss{}Kl.prototype.includeNode=is;class Xl extends ss{render(e,t,{jsxMode:n=this.scope.context.options.jsx.mode}={}){this.name.render(e,t);for(const s of this.attributes)s.render(e,t,{jsxMode:n})}}Xl.prototype.includeNode=is;class Jl extends ss{constructor(){super(...arguments),this.fragment=null,this.fragmentVariable=null}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations();const t=this.scope.context.options.jsx;if("automatic"===t.mode)this.fragment="Fragment",this.fragmentVariable=Ul("Fragment",!1,t.jsxImportSource,this,e);else{const{fragment:n,importSource:s,mode:i}=t;null!=n&&(this.fragment=n,this.fragmentVariable=Ul(n,"preserve"===i,s,this,e))}}render(e,t){const{mode:n}=this.scope.context.options.jsx;if("preserve"!==n){const{snippets:{getPropertyAccess:n},useOriginalName:s}=t,[,...i]=this.fragment.split("."),r=[this.fragmentVariable.getName(n,s),...i].join(".");e.update(this.start,this.end,r)}}}class Yl extends ss{render(e,t){super.render(e,t);const{mode:n}=this.scope.context.options.jsx;"preserve"!==n&&(e.overwrite(this.start,this.expression.start,"...",{contentOnly:!0}),e.overwrite(this.expression.end,this.end,"",{contentOnly:!0}))}}class Zl extends ss{hasEffects(e){const{brokenFlow:t,includedLabels:n}=e;e.ignore.labels.add(this.label.name),e.includedLabels=new Set;let s=!1;return this.body.hasEffects(e)?s=!0:(e.ignore.labels.delete(this.label.name),e.includedLabels.has(this.label.name)&&(e.includedLabels.delete(this.label.name),e.brokenFlow=t)),e.includedLabels=new Set([...n,...e.includedLabels]),s}include(e,t){this.included||this.includeNode(e);const{brokenFlow:n,includedLabels:s}=e;e.includedLabels=new Set,this.body.include(e,t),(t||e.includedLabels.has(this.label.name))&&(this.label.include(e,t),e.includedLabels.delete(this.label.name),e.brokenFlow=n),e.includedLabels=new Set([...s,...e.includedLabels])}includeNode(e){this.included=!0,this.body.includePath(Ie,e)}render(e,t){this.label.included?this.label.render(e,t):e.remove(this.start,Y(e.original,X(e.original,":",this.label.end)+1)),this.body.render(e,t)}}Zl.prototype.applyDeoptimizations=os;class Ql extends ss{constructor(){super(...arguments),this.expressionsToBeDeoptimized=[],this.usedBranch=null}get isBranchResolutionAnalysed(){return Fe(this.flags,65536)}set isBranchResolutionAnalysed(e){this.flags=je(this.flags,65536,e)}get hasDeoptimizedCache(){return Fe(this.flags,33554432)}set hasDeoptimizedCache(e){this.flags=je(this.flags,33554432,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.left.deoptimizeArgumentsOnInteractionAtPath(e,t,n),this.right.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizeCache(){if(this.hasDeoptimizedCache)return;if(this.hasDeoptimizedCache=!0,this.usedBranch){const e=this.usedBranch===this.left?this.right:this.left;this.usedBranch=null,e.deoptimizePath(Ie),this.included&&e.includePath(Ie,ze())}const{scope:{context:e},expressionsToBeDeoptimized:t}=this;this.expressionsToBeDeoptimized=le;for(const e of t)e.deoptimizeCache();e.requestTreeshakingPass()}deoptimizePath(e){const t=this.getUsedBranch();t?t.deoptimizePath(e):(this.left.deoptimizePath(e),this.right.deoptimizePath(e))}getLiteralValueAtPath(e,t,n){if(n===this)return Ue;const s=this.getUsedBranch();if(s)return this.expressionsToBeDeoptimized.push(n),s.getLiteralValueAtPath(e,t,n);if(!this.hasDeoptimizedCache&&!e.length){const s=el(this.right.getLiteralValueAtPath(e,t,n));if("symbol"!=typeof s){if(!s&&"&&"===this.operator)return this.expressionsToBeDeoptimized.push(n),He;if(s&&"||"===this.operator)return this.expressionsToBeDeoptimized.push(n),Ge}}return Ue}getReturnExpressionWhenCalledAtPath(e,t,n,s){const i=this.getUsedBranch();return i?(this.expressionsToBeDeoptimized.push(s),i.getReturnExpressionWhenCalledAtPath(e,t,n,s)):[new tl([this.left.getReturnExpressionWhenCalledAtPath(e,t,n,s)[0],this.right.getReturnExpressionWhenCalledAtPath(e,t,n,s)[0]]),!1]}hasEffects(e){return!!this.left.hasEffects(e)||this.getUsedBranch()!==this.left&&this.right.hasEffects(e)}hasEffectsOnInteractionAtPath(e,t,n){const s=this.getUsedBranch();return s?s.hasEffectsOnInteractionAtPath(e,t,n):this.left.hasEffectsOnInteractionAtPath(e,t,n)||this.right.hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){this.included=!0;const n=this.getUsedBranch();t||!n||n===this.right&&this.left.shouldBeIncluded(e)?(this.left.include(e,t),this.right.include(e,t)):n.include(e,t)}includePath(e,t){this.included=!0;const n=this.getUsedBranch();!n||n===this.right&&this.left.shouldBeIncluded(t)?(this.left.includePath(e,t),this.right.includePath(e,t)):n.includePath(e,t)}removeAnnotations(e){this.left.removeAnnotations(e)}render(e,t,{isCalleeOfRenderedParent:n,preventASI:s,renderedParentType:i,renderedSurroundingElement:r}=oe){if(this.left.included&&this.right.included)this.left.render(e,t,{preventASI:s,renderedSurroundingElement:r}),this.right.render(e,t);else{const o=X(e.original,this.operator,this.left.end);if(this.right.included){const t=Y(e.original,o+2);e.remove(this.start,t),s&&ne(e,t,this.right.start),this.left.removeAnnotations(e)}else e.remove(function(e,t,n){for(;;){if(t>=n)return n;if(!Z.test(e[n-1]))return n;n--}}(e.original,this.left.end,o),this.end);this.getUsedBranch().render(e,t,{isCalleeOfRenderedParent:n,preventASI:s,renderedParentType:i||this.parent.type,renderedSurroundingElement:r||this.parent.type})}}getUsedBranch(){if(!this.isBranchResolutionAnalysed){this.isBranchResolutionAnalysed=!0;const e=this.left.getLiteralValueAtPath(Pe,De,this),t=el(e);if("symbol"==typeof t||"??"===this.operator&&"symbol"==typeof e)return null;this.usedBranch="||"===this.operator&&t||"&&"===this.operator&&!t||"??"===this.operator&&null!=e?this.left:this.right}return this.usedBranch}}Ql.prototype.includeNode=rs,Ql.prototype.applyDeoptimizations=os;class ec extends ss{hasEffects(e){this.deoptimized||this.applyDeoptimizations();for(const t of this.arguments)if(t.hasEffects(e))return!0;return!this.annotationPure&&(this.callee.hasEffects(e)||this.callee.hasEffectsOnInteractionAtPath(Pe,this.interaction,e))}hasEffectsOnInteractionAtPath(e,{type:t}){return e.length>0||0!==t}include(e,t){this.included||this.includeNode(e),t?super.include(e,!0):(this.callee.include(e,!1),this.callee.includeCallArguments(this.interaction,e))}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.callee.includePath(Ie,e)}initialise(){super.initialise(),this.interaction={args:[null,...this.arguments],type:2,withNew:!0},this.annotations&&this.scope.context.options.treeshake.annotations&&(this.annotationPure=this.annotations.some(e=>"pure"===e.type))}render(e,t){this.callee.render(e,t),Wa(e,t,this)}applyDeoptimizations(){this.deoptimized=!0,this.callee.deoptimizeArgumentsOnInteractionAtPath(this.interaction,Pe,De),this.scope.context.requestTreeshakingPass()}}class tc extends ss{constructor(){super(...arguments),this.objectEntity=null,this.protoProp=null}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.getObjectEntity().deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizeCache(){this.getObjectEntity().deoptimizeAllProperties()}deoptimizePath(e){this.getObjectEntity().deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.getObjectEntity().getLiteralValueAtPath(e,t,n)}getReturnExpressionWhenCalledAtPath(e,t,n,s){return this.getObjectEntity().getReturnExpressionWhenCalledAtPath(e,t,n,s)}hasEffectsOnInteractionAtPath(e,t,n){return this.getObjectEntity().hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){this.included||this.includeNode(e),this.getObjectEntity().include(e,t),this.protoProp?.include(e,t)}includeNode(e){this.included=!0,this.protoProp?.includePath(Ie,e)}includePath(e,t){this.included||this.includeNode(t),this.getObjectEntity().includePath(e,t)}render(e,t,{renderedSurroundingElement:n}=oe){if(n!==it&&n!==tt||(e.appendRight(this.start,"("),e.prependLeft(this.end,")")),this.properties.length>0){const n=te(this.properties,e,this.start+1,this.end-1);let s=null;for(const{node:i,separator:r,start:o,end:a}of n)i.included?(s=r,i.render(e,t)):q(i,e,o,a);s&&e.remove(s,this.end-1)}}getObjectEntity(){if(null!==this.objectEntity)return this.objectEntity;let e=zs;const t=[];for(const n of this.properties){if(n instanceof Qs){t.push({key:pe,kind:"init",property:n});continue}let s;if(n.computed){const e=n.key.getLiteralValueAtPath(Pe,De,this);if("symbol"==typeof e){t.push({key:Se(e)?e:pe,kind:n.kind,property:n});continue}s=String(e)}else if(s=n.key instanceof ki?n.key.name:String(n.key.value),"__proto__"===s&&"init"===n.kind){this.protoProp=n,e=n.value instanceof Fr&&null===n.value.value?null:n.value;continue}t.push({key:s,kind:n.kind,property:n})}return this.objectEntity=new Ls(t,e)}}tc.prototype.applyDeoptimizations=os;class nc extends ss{initialise(){const{id:e}=this.scope.context.module;return Bt(Pn(zt(Sn(this.message)),e))}}class sc extends ss{initialise(){const e=this.start,{id:t}=this.scope.context.module,n=Pn(zt(Sn(this.message,e)),t);this.scope.context.error(n,e)}}class ic extends ss{}ic.prototype.includeNode=is;class rc extends ss{constructor(){super(...arguments),this.hasCachedEffect=null,this.hasLoggedEffect=!1}hasCachedEffects(){return!!this.included&&(null===this.hasCachedEffect?this.hasCachedEffect=this.hasEffects(Ve()):this.hasCachedEffect)}hasEffects(e){for(const t of this.body)if(t.hasEffects(e)){if(this.scope.context.options.experimentalLogSideEffects&&!this.hasLoggedEffect){this.hasLoggedEffect=!0;const{code:e,log:n,module:s}=this.scope.context;n(mt,an(e,s.id,ct(e,t.start,{offsetLine:1})),t.start)}return this.hasCachedEffect=!0}return!1}include(e,t){this.included=!0;for(const n of this.body)(t||n.shouldBeIncluded(e))&&n.include(e,t)}initialise(){if(super.initialise(),this.invalidAnnotations)for(const{start:e,end:t,type:n}of this.invalidAnnotations)this.scope.context.magicString.remove(e,t),"pure"!==n&&"noSideEffects"!==n||this.scope.context.log(ft,dn(this.scope.context.code.slice(e,t),this.scope.context.module.id,n),e)}render(e,t){let n=this.start;if(e.original.startsWith("#!")&&(n=Math.min(e.original.indexOf("\n")+1,this.end),e.remove(0,n)),this.body.length>0){for(;"/"===e.original[n]&&/[*/]/.test(e.original[n+1]);){const t=Q(e.original.slice(n,this.body[0].start));if(-1===t[0])break;n+=t[1]}ee(this.body,e,n,this.end,t)}else super.render(e,t)}}rc.prototype.includeNode=rs,rc.prototype.applyDeoptimizations=os;class oc extends _i{get method(){return Fe(this.flags,262144)}set method(e){this.flags=je(this.flags,262144,e)}get shorthand(){return Fe(this.flags,524288)}set shorthand(e){this.flags=je(this.flags,524288,e)}declare(e,t,n){return this.value.declare(e,this.getPathInProperty(t),n)}deoptimizeAssignment(e,t){this.value.deoptimizeAssignment?.(this.getPathInProperty(e),t)}hasEffects(e){return this.key.hasEffects(e)||this.value.hasEffects(e)}hasEffectsWhenDestructuring(e,t,n){return this.value.hasEffectsWhenDestructuring?.(e,this.getPathInProperty(t),n)}includeDestructuredIfNecessary(e,t,n){const s=this.getPathInProperty(t);let i=this.value.includeDestructuredIfNecessary(e,s,n)||this.included;return(i||=this.key.hasEffects(Ve()))&&(this.key.include(e,!1),this.value.included||(this.value.includeNode(e),this.value.includeDestructuredIfNecessary(e,s,n))),!this.included&&i&&this.includeNode(e),this.included}include(e,t){this.included=!0,this.key.include(e,t),this.value.include(e,t)}includePath(e,t){this.included=!0,this.value.includePath(e,t)}markDeclarationReached(){this.value.markDeclarationReached()}render(e,t){this.shorthand||this.key.render(e,t),this.value.render(e,t,{isShorthandProperty:this.shorthand})}getPathInProperty(e){return e.at(-1)===pe?e:this.computed?[...e,pe]:this.key instanceof ki?[...e,this.key.name]:[...e,String(this.key.value)]}}oc.prototype.includeNode=rs,oc.prototype.applyDeoptimizations=os;class ac extends ss{get computed(){return Fe(this.flags,1024)}set computed(e){this.flags=je(this.flags,1024,e)}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.value?.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){this.value?.deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.value?this.value.getLiteralValueAtPath(e,t,n):Ue}getReturnExpressionWhenCalledAtPath(e,t,n,s){return this.value?this.value.getReturnExpressionWhenCalledAtPath(e,t,n,s):Ke}hasEffects(e){return this.key.hasEffects(e)||this.static&&!!this.value?.hasEffects(e)||Mi(this.decorators,e)}hasEffectsOnInteractionAtPath(e,t,n){return!this.value||this.value.hasEffectsOnInteractionAtPath(e,t,n)}includeNode(e){this.included=!0,this.value?.includePath(Ie,e);for(const t of this.decorators)t.includePath(Ie,e)}}ac.prototype.applyDeoptimizations=os;class lc extends ss{hasEffects(e){return!(e.ignore.returnYield&&!this.argument?.hasEffects(e))||(e.brokenFlow=!0,!1)}include(e,t){this.included||this.includeNode(e),this.argument?.include(e,t),e.brokenFlow=!0}includeNode(e){this.included=!0,this.argument?.includePath(Ie,e)}initialise(){super.initialise(),this.scope.addReturnExpression(this.argument||qe)}render(e,t){this.argument&&(this.argument.render(e,t,{preventASI:!0}),this.argument.start===this.start+6&&e.prependLeft(this.start+6," "))}}lc.prototype.applyDeoptimizations=os;class cc extends ss{deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.expressions[this.expressions.length-1].deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){this.expressions[this.expressions.length-1].deoptimizePath(e)}getLiteralValueAtPath(e,t,n){return this.expressions[this.expressions.length-1].getLiteralValueAtPath(e,t,n)}hasEffects(e){for(const t of this.expressions)if(t.hasEffects(e))return!0;return!1}hasEffectsOnInteractionAtPath(e,t,n){return this.expressions[this.expressions.length-1].hasEffectsOnInteractionAtPath(e,t,n)}include(e,t){this.included=!0;const n=this.expressions[this.expressions.length-1];for(const s of this.expressions)(t||s===n&&!(this.parent instanceof tr)||s.shouldBeIncluded(e))&&s.include(e,t)}includePath(e,t){this.included=!0,this.expressions[this.expressions.length-1].includePath(e,t)}removeAnnotations(e){this.expressions[0].removeAnnotations(e)}render(e,t,{renderedParentType:n,isCalleeOfRenderedParent:s,preventASI:i}=oe){let r=0,o=null;const a=this.expressions[this.expressions.length-1];for(const{node:l,separator:c,start:u,end:d}of te(this.expressions,e,this.start,this.end))if(l.included)if(r++,o=c,1===r&&i&&ne(e,u,l.start),1===r){const i=n||this.parent.type;l.render(e,t,{isCalleeOfRenderedParent:s&&l===a,renderedParentType:i,renderedSurroundingElement:i})}else l.render(e,t);else q(l,e,u,d);o&&e.remove(o,this.end)}}cc.prototype.includeNode=rs,cc.prototype.applyDeoptimizations=os;class uc extends ss{bind(){this.variable=this.scope.findVariable("this")}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.variable.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){this.variable.deoptimizePath(e)}include(e){this.included||this.includeNode(e)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.scope.context.includeVariableInModule(this.variable,Pe,e)}}class dc extends ss{hasEffects(e){if(this.test?.hasEffects(e))return!0;for(const t of this.consequent){if(e.brokenFlow)break;if(t.hasEffects(e))return!0}return!1}include(e,t){this.included=!0,this.test?.include(e,t);for(const n of this.consequent)(t||n.shouldBeIncluded(e))&&n.include(e,t)}render(e,t,n){if(this.test&&(this.test.render(e,t),this.test.start===this.start+4&&e.prependLeft(this.test.start," ")),this.consequent.length>0){const s=this.test?this.test.end:X(e.original,"default",this.start)+7,i=X(e.original,":",s)+1;ee(this.consequent,e,i,n.end,t)}}}dc.prototype.needsBoundaries=!0,dc.prototype.includeNode=rs,dc.prototype.applyDeoptimizations=os;class hc extends ss{createScope(e){this.parentScope=e,this.scope=new Ti(e)}hasEffects(e){if(this.discriminant.hasEffects(e))return!0;const{brokenFlow:t,hasBreak:n,ignore:s}=e,{breaks:i}=s;s.breaks=!0,e.hasBreak=!1;let r=!0;for(const n of this.cases){if(n.hasEffects(e))return!0;r&&=e.brokenFlow&&!e.hasBreak,e.hasBreak=!1,e.brokenFlow=t}return null!==this.defaultCase&&(e.brokenFlow=r),s.breaks=i,e.hasBreak=n,!1}include(e,t){this.included=!0,this.discriminant.include(e,t);const{brokenFlow:n,hasBreak:s}=e;e.hasBreak=!1;let i=!0,r=t||null!==this.defaultCase&&this.defaultCase=0;s--){const o=this.cases[s];if(o.included&&(r=!0),!r){const e=Ve();e.ignore.breaks=!0,r=o.hasEffects(e)}r?(o.include(e,t),i&&=e.brokenFlow&&!e.hasBreak,e.hasBreak=!1,e.brokenFlow=n):i=n}r&&null!==this.defaultCase&&(e.brokenFlow=i),e.hasBreak=s}initialise(){super.initialise();for(let e=0;e0&&ee(this.cases,e,this.cases[0].start,this.end-1,t)}}hc.prototype.includeNode=rs,hc.prototype.applyDeoptimizations=os;class pc extends qa{get hasCheckedForWarnings(){return Fe(this.flags,134217728)}set hasCheckedForWarnings(e){this.flags=je(this.flags,134217728,e)}hasEffects(e){this.deoptimized||this.applyDeoptimizations();for(const t of this.quasi.expressions)if(t.hasEffects(e))return!0;return this.tag.hasEffects(e)||this.tag.hasEffectsOnInteractionAtPath(Pe,this.interaction,e)}include(e,t){this.included||this.includeNode(e),t?super.include(e,!0):(this.quasi.include(e,!1),this.tag.include(e,!1),this.tag.includeCallArguments(this.interaction,e))}initialise(){super.initialise(),this.args=[qe,...this.quasi.expressions],this.interaction={args:[this.tag instanceof Hr&&!this.tag.variable?this.tag.object:null,...this.args],type:2,withNew:!1}}render(e,t){if(this.tag.render(e,t,{isCalleeOfRenderedParent:!0}),this.quasi.render(e,t),!this.hasCheckedForWarnings&&this.tag.type===rt){this.hasCheckedForWarnings=!0;const e=this.tag.name;this.scope.findVariable(e).isNamespace&&this.scope.context.log(ft,tn(e),this.start)}}applyDeoptimizations(){this.deoptimized=!0,this.tag.deoptimizeArgumentsOnInteractionAtPath(this.interaction,Pe,De),this.scope.context.requestTreeshakingPass()}getReturnExpression(e=De){return null===this.returnExpression?(this.returnExpression=Ke,this.returnExpression=this.tag.getReturnExpressionWhenCalledAtPath(Pe,this.interaction,e,this)):this.returnExpression}}pc.prototype.includeNode=is;class fc extends ss{get tail(){return Fe(this.flags,1048576)}set tail(e){this.flags=je(this.flags,1048576,e)}bind(){}hasEffects(){return!1}parseNode(e){return this.value=e.value,super.parseNode(e)}render(){}}fc.prototype.includeNode=is;class mc extends ss{deoptimizeArgumentsOnInteractionAtPath(){}getLiteralValueAtPath(e){return e.length>0||1!==this.quasis.length?Ue:this.quasis[0].value.cooked}getReturnExpressionWhenCalledAtPath(e){return 1!==e.length?Ke:ks(ws,e[0])}hasEffectsOnInteractionAtPath(e,t,n){return 0===t.type?e.length>1:2!==t.type||1!==e.length||Ns(ws,e[0],t,n)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations();for(const t of this.expressions)t.includePath(Ie,e)}render(e,t){e.indentExclusionRanges.push([this.start,this.end]),super.render(e,t)}}class gc extends Oi{constructor(e,t,n){super(e,t),this.importDescriptions=n,this.variables.set("this",new vi("this",null,fs,Pe,t,"other"))}addDeclaration(e,t,n,s,i){return this.importDescriptions.has(e.name)&&t.error($n(e.name),e.start),super.addDeclaration(e,t,n,s,i)}addExportDefaultDeclaration(e,t){const n=new co(e,t);return this.variables.set("default",n),n}addNamespaceMemberAccess(){}deconflict(e,t,n){for(const s of this.children)s.deconflict(e,t,n)}findLexicalBoundary(){return this}findVariable(e){const t=this.variables.get(e)||this.accessedOutsideVariables.get(e);if(t)return t;const n=this.context.traceVariable(e)||this.parent.findVariable(e);return n instanceof Si&&this.accessedOutsideVariables.set(e,n),n}}class yc extends ss{bind(){this.variable=this.scope.findVariable("this")}deoptimizeArgumentsOnInteractionAtPath(e,t,n){this.variable.deoptimizeArgumentsOnInteractionAtPath(e,t,n)}deoptimizePath(e){this.variable.deoptimizePath(e)}hasEffectsOnInteractionAtPath(e,t,n){return 0===e.length?0!==t.type:this.variable.hasEffectsOnInteractionAtPath(e,t,n)}include(e){this.included||this.includeNode(e)}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.scope.context.includeVariableInModule(this.variable,Pe,e)}includePath(e,t){this.included?e.length>0&&this.variable.includePath(e,t):(this.included=!0,this.scope.context.includeVariableInModule(this.variable,e,t));const n=function(e,t){for(;!(e instanceof er&&e.thisVariable===t);){if(!(e instanceof Oi))return null;e=e.parent}return e}(this.scope,this.variable);n&&n.functionNode.parent instanceof oc&&n.functionNode.parent.parent instanceof tc&&n.functionNode.parent.parent.includePath(e,t)}initialise(){super.initialise(),this.alias=this.scope.findLexicalBoundary()instanceof gc?this.scope.context.moduleContext:null,"undefined"===this.alias&&this.scope.context.log(ft,{code:"THIS_IS_UNDEFINED",message:"The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten",url:vt("troubleshooting/#error-this-is-undefined")},this.start)}render(e){null!==this.alias&&e.overwrite(this.start,this.end,this.alias,{contentOnly:!1,storeName:!0})}}class bc extends ss{hasEffects(){return!0}include(e,t){this.included||this.includeNode(e),this.argument.include(e,t),e.brokenFlow=!0}includeNode(e){this.included||(this.included=!0,this.argument.includePath(Ie,e))}render(e,t){this.argument.render(e,t,{preventASI:!0}),this.argument.start===this.start+5&&e.prependLeft(this.start+5," ")}}class Ec extends ss{constructor(){super(...arguments),this.directlyIncluded=!1,this.includedLabelsAfterBlock=null}hasEffects(e){return(this.scope.context.options.treeshake.tryCatchDeoptimization?this.block.body.length>0:this.block.hasEffects(e))||!!this.finalizer?.hasEffects(e)}include(e,t){const n=this.scope.context.options.treeshake?.tryCatchDeoptimization,{brokenFlow:s,includedLabels:i}=e;if(this.directlyIncluded&&n){if(this.includedLabelsAfterBlock)for(const e of this.includedLabelsAfterBlock)i.add(e)}else this.included=!0,this.directlyIncluded=!0,this.block.include(e,n?ts:t),i.size>0&&(this.includedLabelsAfterBlock=[...i]),e.brokenFlow=s;null!==this.handler&&(this.handler.include(e,t),e.brokenFlow=s),this.finalizer?.include(e,t)}}Ec.prototype.includeNode=rs,Ec.prototype.applyDeoptimizations=os;const xc={"!":e=>!e,"+":e=>+e,"-":e=>-e,delete:()=>Ue,typeof:e=>typeof e,void:()=>{},"~":e=>~e},Ac=Symbol("Unassigned");class Sc extends ss{constructor(){super(...arguments),this.renderedLiteralValue=Ac}get prefix(){return Fe(this.flags,2097152)}set prefix(e){this.flags=je(this.flags,2097152,e)}deoptimizeCache(){this.renderedLiteralValue=Ue}getLiteralValueAtPath(e,t,n){if(e.length>0)return Ue;const s=this.argument.getLiteralValueAtPath(Pe,t,n);if("symbol"==typeof s){if("void"===this.operator)return;if("!"===this.operator){if(s===He)return!0;if(s===Ge)return!1}return Ue}return xc[this.operator](s)}hasEffects(e){return this.deoptimized||this.applyDeoptimizations(),!("typeof"===this.operator&&this.argument instanceof ki)&&(this.argument.hasEffects(e)||"delete"===this.operator&&this.argument.hasEffectsOnInteractionAtPath(Pe,Qe,e))}hasEffectsOnInteractionAtPath(e,{type:t}){return 0!==t||e.length>("void"===this.operator?0:1)}applyDeoptimizations(){this.deoptimized=!0,"delete"===this.operator&&(this.argument.deoptimizePath(Pe),this.scope.context.requestTreeshakingPass())}getRenderedLiteralValue(e){return this.renderedLiteralValue!==Ac?this.renderedLiteralValue:this.renderedLiteralValue=e?Ue:Fa(this.getLiteralValueAtPath(Pe,De,this))}include(e,t,n){this.deoptimized||this.applyDeoptimizations(),this.included=!0;const s=this.argument instanceof ki&&this.argument.variable?.included;("symbol"==typeof this.getRenderedLiteralValue(t)||this.argument.shouldBeIncluded(e)||s)&&(this.argument.include(e,t),this.renderedLiteralValue=Ue)}render(e,t){if("symbol"==typeof this.renderedLiteralValue)super.render(e,t);else{let t=this.renderedLiteralValue;$c.test(e.original[this.start-1])||(t=` ${t}`),e.overwrite(this.start,this.end,t)}}}const $c=/[\s([=%&*+-/<>^|,?:;]/;Sc.prototype.includeNode=is;class vc extends ss{hasEffects(e){return this.deoptimized||this.applyDeoptimizations(),this.argument.hasEffectsAsAssignmentTarget(e,!0)}hasEffectsOnInteractionAtPath(e,{type:t}){return e.length>1||0!==t}include(e,t){this.included||this.includeNode(e),this.argument.includeAsAssignmentTarget(e,t,!0)}initialise(){super.initialise(),this.argument.setAssignedValue(qe)}render(e,t){const{exportNamesByVariable:n,format:s,snippets:{_:i}}=t;if(this.argument.render(e,t),"system"===s){const s=this.argument.variable,r=n.get(s);if(r)if(this.prefix)1===r.length?ie(s,this.start,this.end,e,t):re(s,this.start,this.end,this.parent.type!==it,e,t);else{const n=this.operator[0];!function(e,t,n,s,i,r,o){const{_:a}=r.snippets;i.prependRight(t,`${se([e],r,o)},${a}`),s&&(i.prependRight(t,"("),i.appendLeft(n,")"))}(s,this.start,this.end,this.parent.type!==it,e,t,`${i}${n}${i}1`)}}}applyDeoptimizations(){if(this.deoptimized=!0,this.argument.deoptimizePath(Pe),this.argument instanceof ki){this.scope.findVariable(this.argument.name).markReassigned()}this.scope.context.requestTreeshakingPass()}}function Pc(e,t){return null!==e.renderBaseName&&t.has(e)&&e.isReassigned}vc.prototype.includeNode=is;class Ic extends ss{deoptimizePath(){for(const e of this.declarations)e.deoptimizePath(Pe)}hasEffectsOnInteractionAtPath(){return!1}include(e,t,{asSingleStatement:n}=oe){this.included=!0;for(const s of this.declarations){(t||s.shouldBeIncluded(e))&&s.include(e,t);const{id:i,init:r}=s;n&&i.include(e,t),r&&i.included&&!r.included&&(i instanceof La||i instanceof Oa)&&r.include(e,t)}}initialise(){super.initialise();for(const e of this.declarations)e.declareDeclarator(this.kind)}removeAnnotations(e){this.declarations[0].removeAnnotations(e)}render(e,t,n=oe){if(this.areAllDeclarationsIncludedAndNotExported(t.exportNamesByVariable)){for(const n of this.declarations)n.render(e,t);n.isNoStatement||59===e.original.charCodeAt(this.end-1)||e.appendLeft(this.end,";")}else this.renderReplacedDeclarations(e,t)}renderDeclarationEnd(e,t,n,s,i,r,o){59===e.original.charCodeAt(this.end-1)&&e.remove(this.end-1,this.end),t+=";",null===n?e.appendLeft(i,t):(10!==e.original.charCodeAt(s-1)||10!==e.original.charCodeAt(this.end)&&13!==e.original.charCodeAt(this.end)||(s--,13===e.original.charCodeAt(s)&&s--),s===n+1?e.overwrite(n,i,t):(e.overwrite(n,n+1,t),e.remove(s,i))),r.length>0&&e.appendLeft(i,` ${se(r,o)};`)}renderReplacedDeclarations(e,t){const n=te(this.declarations,e,this.start+this.kind.length,this.end-(59===e.original.charCodeAt(this.end-1)?1:0));let s,i;i=Y(e.original,this.start+this.kind.length);let r=i-1;e.remove(this.start,r);let o,a,l=!1,c=!1,u="";const d=[],h=function(e,t,n){let s=null;if("system"===t.format){for(const{node:i}of e)i.id instanceof ki&&i.init&&0===n.length&&1===t.exportNamesByVariable.get(i.id.variable)?.length?(s=i.id.variable,n.push(s)):i.id.addExportedVariables(n,t.exportNamesByVariable);n.length>1?s=null:s&&(n.length=0)}return s}(n,t,d);for(const{node:d,start:p,separator:f,contentEnd:m,end:g}of n)if(d.included){if(d.render(e,t),o="",a="",!d.id.included||d.id instanceof ki&&Pc(d.id.variable,t.exportNamesByVariable))c&&(u+=";"),l=!1;else{if(h&&h===d.id.variable){const n=X(e.original,"=",d.id.end);ie(h,Y(e.original,n+1),null===f?m:f,e,t)}l?u+=",":(c&&(u+=";"),o+=`${this.kind} `,l=!0)}i===r+1?e.overwrite(r,i,u+o):(e.overwrite(r,r+1,u),e.appendLeft(i,o)),s=m,i=g,c=!0,r=f,u=""}else q(d,e,p,g);this.renderDeclarationEnd(e,u,r,s,i,d,t)}areAllDeclarationsIncludedAndNotExported(e){if("await using"===this.kind||"using"===this.kind)return!0;for(const t of this.declarations){if(!t.id.included)return!1;if(t.id.type===rt){if(e.has(t.id.variable))return!1}else{const n=[];if(t.id.addExportedVariables(n,e),n.length>0)return!1}}return!0}}Ic.prototype.includeNode=rs,Ic.prototype.applyDeoptimizations=os;class wc extends ss{declareDeclarator(e){this.isUsingDeclaration="using"===e,this.isAsyncUsingDeclaration="await using"===e,this.id.declare(e,Pe,this.init||fs)}deoptimizePath(e){this.id.deoptimizePath(e)}hasEffects(e){const t=this.init?.hasEffects(e);return this.id.markDeclarationReached(),t||this.isUsingDeclaration||this.isAsyncUsingDeclaration||this.id.hasEffects(e)||this.scope.context.options.treeshake.propertyReadSideEffects&&this.id.hasEffectsWhenDestructuring(e,Pe,this.init||fs)}include(e,t){const{id:n,init:s}=this;this.included||this.includeNode(e),s?.include(e,t),n.markDeclarationReached(),t?n.include(e,t):n.includeDestructuredIfNecessary(e,Pe,s||fs)}removeAnnotations(e){this.init?.removeAnnotations(e)}render(e,t){const{exportNamesByVariable:n,snippets:{_:s,getPropertyAccess:i}}=t,{end:r,id:o,init:a,start:l}=this,c=o.included||this.isUsingDeclaration||this.isAsyncUsingDeclaration;if(c)o.render(e,t);else{const t=X(e.original,"=",o.end);e.remove(l,Y(e.original,t+1))}if(a){if(o instanceof ki&&a instanceof Qa&&!a.id){o.variable.getName(i)!==o.name&&e.appendLeft(a.start+5,` ${o.name}`)}a.render(e,t,c?oe:{renderedSurroundingElement:it})}else o instanceof ki&&Pc(o.variable,n)&&e.appendLeft(r,`${s}=${s}void 0`)}includeNode(e){this.included=!0;const{id:t,init:n}=this;if(n&&(this.isUsingDeclaration?n.includePath(Nc,e):this.isAsyncUsingDeclaration&&n.includePath(kc,e),t instanceof ki&&n instanceof Qa&&!n.id)){const{name:e,variable:s}=t;for(const t of n.scope.accessedOutsideVariables.values())t!==s&&t.forbidName(e)}}}wc.prototype.applyDeoptimizations=os;const Nc=[be],kc=[Ee];class Cc extends ss{hasEffects(e){return!!this.test.hasEffects(e)||ol(e,this.body)}include(e,t){this.included=!0,this.test.include(e,t),al(e,this.body,t)}}Cc.prototype.includeNode=rs,Cc.prototype.applyDeoptimizations=os;class Rc extends ss{applyDeoptimizations(){this.deoptimized=!0,this.argument?.deoptimizePath(Ie)}hasEffects(e){return this.deoptimized||this.applyDeoptimizations(),!(e.ignore.returnYield&&!this.argument?.hasEffects(e))}includeNode(e){this.included=!0,this.deoptimized||this.applyDeoptimizations(),this.argument?.includePath(Ie,e)}render(e,t){this.argument&&(this.argument.render(e,t,{preventASI:!0}),this.argument.start===this.start+5&&e.prependLeft(this.start+5," "))}}const Dc=["PanicError","ParseError","ArrayExpression","ArrayPattern","ArrowFunctionExpression","AssignmentExpression","AssignmentPattern","AwaitExpression","BinaryExpression","BlockStatement","BreakStatement","CallExpression","CatchClause","ChainExpression","ClassBody","ClassDeclaration","ClassExpression","ConditionalExpression","ContinueStatement","DebuggerStatement","Decorator","ExpressionStatement","DoWhileStatement","EmptyStatement","ExportAllDeclaration","ExportDefaultDeclaration","ExportNamedDeclaration","ExportSpecifier","ExpressionStatement","ForInStatement","ForOfStatement","ForStatement","FunctionDeclaration","FunctionExpression","Identifier","IfStatement","ImportAttribute","ImportDeclaration","ImportDefaultSpecifier","ImportExpression","ImportNamespaceSpecifier","ImportSpecifier","JSXAttribute","JSXClosingElement","JSXClosingFragment","JSXElement","JSXEmptyExpression","JSXExpressionContainer","JSXFragment","JSXIdentifier","JSXMemberExpression","JSXNamespacedName","JSXOpeningElement","JSXOpeningFragment","JSXSpreadAttribute","JSXSpreadChild","JSXText","LabeledStatement","Literal","Literal","Literal","Literal","Literal","Literal","LogicalExpression","MemberExpression","MetaProperty","MethodDefinition","NewExpression","ObjectExpression","ObjectPattern","PrivateIdentifier","Program","Property","PropertyDefinition","RestElement","ReturnStatement","SequenceExpression","SpreadElement","StaticBlock","Super","SwitchCase","SwitchStatement","TaggedTemplateExpression","TemplateElement","TemplateLiteral","ThisExpression","ThrowStatement","TryStatement","UnaryExpression","UpdateExpression","VariableDeclaration","VariableDeclarator","WhileStatement","YieldExpression"],Oc=[nc,sc,ei,Oa,_a,Ta,Ba,za,Ga,nr,Ha,Ka,Xa,Ja,Za,Fi,Qa,nl,sl,il,rl,tr,ll,cl,ul,lr,dl,hl,tr,pl,fl,ml,ar,gl,ki,El,xl,Al,Sl,Il,kl,Cl,Dl,Ml,_l,Hl,Tl,Bl,Wl,Rl,ql,Kl,Xl,Jl,Ll,Yl,Fl,Zl,Fr,Fr,Fr,Fr,Fr,Fr,Ql,Hr,Jr,Li,ec,tc,La,ic,rc,oc,ac,sr,lc,cc,Qs,Bi,uc,dc,hc,pc,fc,mc,yc,bc,Ec,Sc,vc,Ic,wc,Cc,Rc],Mc=[function(e,t,n){e.message=n.convertString(n[t])},function(e,t,n){e.message=n.convertString(n[t])},function(e,t,n){const{scope:s}=e;e.elements=Lc(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.elements=Lc(e,s,n[t],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.async=!(1&~i),e.expression=!(2&~i),e.generator=!(4&~i);const r=e.annotations=Zn(n[t+1],n);e.annotationNoSideEffects=r.some(e=>"noSideEffects"===e.type);const o=e.params=Lc(e,s,n[t+2],n);s.addParameterVariables(o.map(e=>e.declare("parameter",Pe,qe)),o[o.length-1]instanceof sr),e.body=_c(e,s.bodyScope,n[t+3],n)},function(e,t,n){const{scope:s}=e;e.operator=Xn[n[t]],e.left=_c(e,s,n[t+1],n),e.right=_c(e,s,n[t+2],n)},function(e,t,n){const{scope:s}=e;e.left=_c(e,s,n[t],n),e.right=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.argument=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.operator=Xn[n[t]],e.left=_c(e,s,n[t+1],n),e.right=_c(e,s,n[t+2],n)},function(e,t,n){const{scope:s}=e;e.body=Lc(e,s,n[t],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.label=0===i?null:_c(e,s,i,n)},function(e,t,n){const{scope:s}=e,i=n[t];e.optional=!(1&~i),e.annotations=Zn(n[t+1],n),e.callee=_c(e,s,n[t+2],n),e.arguments=Lc(e,s,n[t+3],n)},function(e,t,n){const{scope:s}=e,i=n[t],r=e.param=0===i?null:_c(e,s,i,n);r?.declare("parameter",Pe,qe),e.body=_c(e,s.bodyScope,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.expression=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e,i=n[t];if(i){const t=n[i],r=e.body=new Array(t);for(let o=0;o"noSideEffects"===e.type);const o=n[t+2];e.id=0===o?null:_c(e,s.parent,o,n);const a=e.params=Lc(e,s,n[t+3],n);s.addParameterVariables(a.map(e=>e.declare("parameter",Pe,qe)),a[a.length-1]instanceof sr),e.body=_c(e,s.bodyScope,n[t+4],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.async=!(1&~i),e.generator=!(2&~i);const r=e.annotations=Zn(n[t+1],n);e.annotationNoSideEffects=r.some(e=>"noSideEffects"===e.type);const o=n[t+2];e.id=0===o?null:_c(e,e.idScope,o,n);const a=e.params=Lc(e,s,n[t+3],n);s.addParameterVariables(a.map(e=>e.declare("parameter",Pe,qe)),a[a.length-1]instanceof sr),e.body=_c(e,s.bodyScope,n[t+4],n)},function(e,t,n){e.name=n.convertString(n[t])},function(e,t,n){const{scope:s}=e;e.test=_c(e,s,n[t],n),e.consequent=_c(e,e.consequentScope=new yl(s),n[t+1],n);const i=n[t+2];e.alternate=0===i?null:_c(e,e.alternateScope=new yl(s),i,n)},function(e,t,n){const{scope:s}=e;e.key=_c(e,s,n[t],n),e.value=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.specifiers=Lc(e,s,n[t],n),e.source=_c(e,s,n[t+1],n),e.attributes=Lc(e,s,n[t+2],n);const i=n[t+3];e.phase=0===i?void 0:Xn[i]},function(e,t,n){const{scope:s}=e;e.local=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.source=_c(e,s,n[t],n),e.sourceAstNode=Ca(n[t],n);const i=n[t+1];e.options=0===i?null:_c(e,s,i,n);const r=n[t+2];e.phase=0===r?void 0:Xn[r]},function(e,t,n){const{scope:s}=e;e.local=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.local=_c(e,s,n[t+1],n),e.imported=0===i?e.local:_c(e,s,i,n)},function(e,t,n){const{scope:s}=e;e.name=_c(e,s,n[t],n);const i=n[t+1];e.value=0===i?null:_c(e,s,i,n)},function(e,t,n){const{scope:s}=e;e.name=_c(e,s,n[t],n)},function(){},function(e,t,n){const{scope:s}=e;e.openingElement=_c(e,s,n[t],n),e.children=Lc(e,s,n[t+1],n);const i=n[t+2];e.closingElement=0===i?null:_c(e,s,i,n)},function(){},function(e,t,n){const{scope:s}=e;e.expression=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.openingFragment=_c(e,s,n[t],n),e.children=Lc(e,s,n[t+1],n),e.closingFragment=_c(e,s,n[t+2],n)},function(e,t,n){e.name=n.convertString(n[t])},function(e,t,n){const{scope:s}=e;e.object=_c(e,s,n[t],n),e.property=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.namespace=_c(e,s,n[t],n),e.name=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.selfClosing=!(1&~i),e.name=_c(e,s,n[t+1],n),e.attributes=Lc(e,s,n[t+2],n)},function(e){e.attributes=[],e.selfClosing=!1},function(e,t,n){const{scope:s}=e;e.argument=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.expression=_c(e,s,n[t],n)},function(e,t,n){e.value=n.convertString(n[t]),e.raw=n.convertString(n[t+1])},function(e,t,n){const{scope:s}=e;e.label=_c(e,s,n[t],n),e.body=_c(e,s,n[t+1],n)},function(e,t,n){const s=e.bigint=n.convertString(n[t]);e.raw=n.convertString(n[t+1]),e.value=BigInt(s)},function(e,t,n){const s=n[t],i=e.value=!(1&~s);e.raw=i?"true":"false"},function(e){e.value=null},function(e,t,n){const s=n[t];e.raw=0===s?void 0:n.convertString(s),e.value=new DataView(n.buffer).getFloat64(t+1<<2,!0)},function(e,t,n){const s=n.convertString(n[t]),i=n.convertString(n[t+1]);e.raw=`/${i}/${s}`,e.regex={flags:s,pattern:i},e.value=new RegExp(i,s)},function(e,t,n){e.value=n.convertString(n[t]);const s=n[t+1];e.raw=0===s?void 0:n.convertString(s)},function(e,t,n){const{scope:s}=e;e.operator=Xn[n[t]],e.left=_c(e,s,n[t+1],n),e.right=_c(e,s,n[t+2],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.computed=!(1&~i),e.optional=!(2&~i),e.object=_c(e,s,n[t+1],n),e.property=_c(e,s,n[t+2],n)},function(e,t,n){const{scope:s}=e;e.meta=_c(e,s,n[t],n),e.property=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.static=!(1&~i),e.computed=!(2&~i),e.decorators=Lc(e,s,n[t+1],n),e.key=_c(e,s,n[t+2],n),e.value=_c(e,s,n[t+3],n),e.kind=Xn[n[t+4]]},function(e,t,n){const{scope:s}=e;e.annotations=Zn(n[t],n),e.callee=_c(e,s,n[t+1],n),e.arguments=Lc(e,s,n[t+2],n)},function(e,t,n){const{scope:s}=e;e.properties=Lc(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.properties=Lc(e,s,n[t],n)},function(e,t,n){e.name=n.convertString(n[t])},function(e,t,n){const{scope:s}=e;e.body=Lc(e,s,n[t],n),e.invalidAnnotations=Zn(n[t+1],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.method=!(1&~i),e.shorthand=!(2&~i),e.computed=!(4&~i);const r=n[t+1];e.value=_c(e,s,n[t+2],n),e.kind=Xn[n[t+3]],e.key=0===r?e.value:_c(e,s,r,n)},function(e,t,n){const{scope:s}=e,i=n[t];e.static=!(1&~i),e.computed=!(2&~i),e.decorators=Lc(e,s,n[t+1],n),e.key=_c(e,s,n[t+2],n);const r=n[t+3];e.value=0===r?null:_c(e,s,r,n)},function(e,t,n){const{scope:s}=e;e.argument=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.argument=0===i?null:_c(e,s,i,n)},function(e,t,n){const{scope:s}=e;e.expressions=Lc(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.argument=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.body=Lc(e,s,n[t],n)},function(){},function(e,t,n){const{scope:s}=e,i=n[t];e.test=0===i?null:_c(e,s,i,n),e.consequent=Lc(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.discriminant=_c(e,e.parentScope,n[t],n),e.cases=Lc(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.tag=_c(e,s,n[t],n),e.quasi=_c(e,s,n[t+1],n)},function(e,t,n){const s=n[t];e.tail=!(1&~s);const i=n[t+1],r=0===i?null:n.convertString(i),o=n.convertString(n[t+2]);e.value={cooked:r,raw:o}},function(e,t,n){const{scope:s}=e;e.quasis=Lc(e,s,n[t],n),e.expressions=Lc(e,s,n[t+1],n)},function(){},function(e,t,n){const{scope:s}=e;e.argument=_c(e,s,n[t],n)},function(e,t,n){const{scope:s}=e;e.block=_c(e,s,n[t],n);const i=n[t+1];e.handler=0===i?null:_c(e,s,i,n);const r=n[t+2];e.finalizer=0===r?null:_c(e,s,r,n)},function(e,t,n){const{scope:s}=e;e.operator=Xn[n[t]],e.argument=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.prefix=!(1&~i),e.operator=Xn[n[t+1]],e.argument=_c(e,s,n[t+2],n)},function(e,t,n){const{scope:s}=e;e.kind=Xn[n[t]],e.declarations=Lc(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e;e.id=_c(e,s,n[t],n);const i=n[t+1];e.init=0===i?null:_c(e,s,i,n)},function(e,t,n){const{scope:s}=e;e.test=_c(e,s,n[t],n),e.body=_c(e,s,n[t+1],n)},function(e,t,n){const{scope:s}=e,i=n[t];e.delegate=!(1&~i);const r=n[t+1];e.argument=0===r?null:_c(e,s,r,n)}];function _c(e,t,n,s){const i=s[n],r=Oc[i];if(!r)throw console.trace(),new Error(`Unknown node type: ${i}`);const o=new r(e,t);return o.type=Dc[i],o.start=s[n+1],o.end=s[n+2],Mc[i](o,n+3,s),o.initialise(),o}function Lc(e,t,n,s){if(0===n)return le;const i=s[n++],r=new Array(i);for(let o=0;ofunction(e){const t=Ca(0,e);switch(t.type){case"PanicError":return Bt(zt(Sn(t.message)));case"ParseError":return Bt(zt(Sn(t.message,t.start)));default:return t}}(Da(ca(e,t,n))),Hc=new Set(["assert","with"]);function Wc(e){const{scope:{context:t},options:n,start:s}=e;if(!(n instanceof tc))return n&&t.module.log(ft,mn(t.module.id),s),ae;const i=n.properties.find(e=>Hc.has(qc(e)))?.value;if(!i)return ae;if(!(i instanceof tc))return t.module.log(ft,(r=t.module.id,{code:Gt,message:`Rollup could not statically analyze the options argument of a dynamic import in "${xt(r)}". Dynamic import options need to be an object with a nested attributes object.`}),s),ae;var r;const o=i.properties.map(e=>{const n=qc(e);return"string"==typeof n&&"string"==typeof e.value.value?[n,e.value.value]:(t.module.log(ft,mn(t.module.id),e.start),null)}).filter(e=>!!e);return o.length>0?Object.fromEntries(o):ae}const qc=e=>{const t=e.key;return t&&!e.computed&&(t.name||t.value)};function Kc(e,t){const n=Object.keys(e);return n.length!==Object.keys(t).length||n.some(n=>e[n]!==t[n])}var Xc="performance"in("undefined"==typeof globalThis?"undefined"==typeof window?{}:window:globalThis)?performance:{now:()=>0},Jc={memoryUsage:()=>({heapUsed:0})};let Yc=new Map;function Zc(e,t){switch(t){case 1:return`# ${e}`;case 2:return`## ${e}`;case 3:return e;default:return`- ${e}`}}function Qc(e,t=3){e=Zc(e,t);const n=Jc.memoryUsage().heapUsed,s=Xc.now(),i=Yc.get(e);void 0===i?Yc.set(e,{memory:0,startMemory:n,startTime:s,time:0,totalMemory:0}):(i.startMemory=n,i.startTime=s)}function eu(e,t=3){e=Zc(e,t);const n=Yc.get(e);if(void 0!==n){const e=Jc.memoryUsage().heapUsed;n.memory+=e-n.startMemory,n.time+=Xc.now()-n.startTime,n.totalMemory=Math.max(n.totalMemory,e)}}function tu(){const e={};for(const[t,{memory:n,time:s,totalMemory:i}]of Yc)e[t]=[s,n,i];return e}let nu=Kn,su=Kn;const iu=["augmentChunkHash","buildEnd","buildStart","generateBundle","load","moduleParsed","options","outputOptions","renderChunk","renderDynamicImport","renderStart","resolveDynamicImport","resolveFileUrl","resolveId","resolveImportMeta","shouldTransformCachedModule","transform","writeBundle"];function ru(e,t){if(e._hasTimer)return e;e._hasTimer=!0;for(const n of iu)if(n in e){let s=`plugin ${t}`;e.name&&(s+=` (${e.name})`),s+=` - ${n}`;const i=function(...e){nu(s,4);const t=r.apply(this,e);return su(s,4),t};let r;"function"==typeof e[n].handler?(r=e[n].handler,e[n].handler=i):(r=e[n],e[n]=i)}return e}const ou={identifier:null,localName:Ro};function au(e,t,n,s,i=new Map,r,o,a){const l=i.get(t);if(l){if(l.has(e))return s?[null]:Bt((c=t,{code:"CIRCULAR_REEXPORT",exporter:u=e.id,message:`"${c}" cannot be exported from "${xt(u)}" as it is a reexport that references itself.`}));l.add(e)}else i.set(t,new Set([e]));var c,u;return e.getVariableForExportName(t,{exportOrReexportModules:a,importChain:r,importerForSideEffects:n,isExportAllSearch:s,searchedNamesAndModules:i,sideEffectModules:o})}function lu(e,t){const n=ue(t.sideEffectDependenciesByVariable,e,de);let s=e;const i=new Set([s]);for(;;){const e=s.module;if(s=s instanceof co?s.getDirectOriginalVariable():s instanceof po?s.syntheticNamespace:null,!s||i.has(s))break;i.add(s),n.add(e);const t=e.sideEffectDependenciesByVariable.get(s);if(t)for(const e of t)n.add(e)}return n}class cu{constructor(e,t,n,s,i,r,o,a){this.graph=e,this.id=t,this.options=n,this.alternativeReexportModules=new Map,this.chunkFileNames=new Set,this.chunkNames=[],this.cycles=new Set,this.dependencies=new Set,this.dynamicDependencies=new Set,this.dynamicImporters=[],this.dynamicImports=[],this.execIndex=1/0,this.hasTreeShakingPassStarted=!1,this.implicitlyLoadedAfter=new Set,this.implicitlyLoadedBefore=new Set,this.importDescriptions=new Map,this.importMetas=[],this.importedFromNotTreeshaken=!1,this.importers=[],this.includedDynamicImporters=[],this.includedTopLevelAwaitingDynamicImporters=new Set,this.includedImports=new Set,this.isExecuted=!1,this.isUserDefinedEntryPoint=!1,this.needsExportShim=!1,this.sideEffectDependenciesByVariable=new Map,this.sourcePhaseSources=new Set,this.sourcesWithAttributes=new Map,this.allExportsIncluded=!1,this.ast=null,this.exportAllModules=[],this.exportAllSources=new Set,this.exportDescriptions=new Map,this.exportedVariablesByName=null,this.exportNamesByVariable=null,this.exportShimVariable=new Bc(this),this.namespaceReexportsByName=new Map,this.reexportDescriptions=new Map,this.relevantDependencies=null,this.syntheticExports=new Map,this.syntheticNamespace=null,this.transformDependencies=[],this.excludeFromSourcemap=/\0/.test(t),this.context=n.moduleContext(t),this.preserveSignature=this.options.preserveEntrySignatures;const l=this,{dynamicImports:c,dynamicImporters:u,exportAllSources:d,exportDescriptions:h,implicitlyLoadedAfter:p,implicitlyLoadedBefore:f,importers:m,reexportDescriptions:g,sourcesWithAttributes:y}=this;this.info={ast:null,attributes:a,code:null,get dynamicallyImportedIdResolutions(){return c.map(({argument:e})=>"string"==typeof e&&l.resolvedIds[e]).filter(Boolean)},get dynamicallyImportedIds(){return c.map(({id:e})=>e).filter(e=>null!=e)},get dynamicImporters(){return u.sort()},get exportedBindings(){const e={".":[...h.keys()]};for(const[t,{source:n}]of g)(e[n]??=[]).push(t);for(const t of d)(e[t]??=[]).push("*");return e},get exports(){return[...h.keys(),...g.keys(),...[...d].map(()=>"*")]},get hasDefaultExport(){return l.ast?l.exportDescriptions.has("default")||g.has("default"):null},id:t,get implicitlyLoadedAfterOneOf(){return Array.from(p,Uc).sort()},get implicitlyLoadedBefore(){return Array.from(f,Uc).sort()},get importedIdResolutions(){return Array.from(y.keys(),e=>l.resolvedIds[e]).filter(Boolean)},get importedIds(){return Array.from(y.keys(),e=>l.resolvedIds[e]?.id).filter(Boolean)},get importers(){return m.sort()},isEntry:s,isExternal:!1,get isIncluded(){return e.phase!==zc.GENERATE?null:l.isIncluded()},meta:{...o},moduleSideEffects:i,safeVariableNames:null,syntheticNamedExports:r}}basename(){const e=F(this.id),t=U(this.id);return Fn(t?e.slice(0,-t.length):e)}bindReferences(){this.ast.bind()}cacheInfoGetters(){Ln(this.info,["dynamicallyImportedIdResolutions","dynamicallyImportedIds","dynamicImporters","exportedBindings","exports","hasDefaultExport","implicitlyLoadedAfterOneOf","implicitlyLoadedBefore","importedIdResolutions","importedIds","importers"])}error(e,t){return void 0!==t&&this.addLocationToLogProps(e,t),Bt(e)}estimateSize(){let e=0;for(const t of this.ast.body)t.included&&(e+=t.end-t.start);return e}getDependenciesToBeIncluded(){if(this.relevantDependencies)return this.relevantDependencies;this.relevantDependencies=new Set;const e=new Set,t=new Set,n=new Set(this.includedImports);if(this.info.isEntry||this.includedDynamicImporters.length>0||this.namespace.included||this.implicitlyLoadedAfter.size>0)for(const e of this.getExportedVariablesByName().values())e.included&&n.add(e);for(let s of n){const n=this.sideEffectDependenciesByVariable.get(s);if(n)for(const e of n)t.add(e);s instanceof po?s=s.getBaseVariable():s instanceof co&&(s=s.getOriginalVariable()),e.add(s.module)}if(this.options.treeshake&&"no-treeshake"!==this.info.moduleSideEffects)this.addRelevantSideEffectDependencies(this.relevantDependencies,e,t);else for(const e of this.dependencies)this.relevantDependencies.add(e);for(const t of e)this.relevantDependencies.add(t);return this.relevantDependencies}getExportedVariablesByName(){if(this.exportedVariablesByName)return this.exportedVariablesByName;const e=this.exportedVariablesByName=new Map;for(const t of this.exportDescriptions.keys())if(t!==this.info.syntheticNamedExports){const[n]=this.getVariableForExportName(t);if(!n)return Bt(yn(t,this.id));e.set(t,n)}for(const t of this.reexportDescriptions.keys()){const[n]=this.getVariableForExportName(t);n&&e.set(t,n)}for(const t of this.exportAllModules)if(t instanceof Wn)e.set(`*${t.id}`,t.getVariableForExportName("*",{importChain:[this.id]})[0]);else for(const n of t.getExportedVariablesByName().keys())if("default"!==n&&!e.has(n)){const[t]=this.getVariableForExportName(n);t&&e.set(n,t)}return this.exportedVariablesByName=new Map([...e].sort(hu))}getExportNamesByVariable(){if(this.exportNamesByVariable)return this.exportNamesByVariable;const e=new Map;for(const[t,n]of this.getExportedVariablesByName().entries()){const s=n instanceof co?n.getOriginalVariable():n;if(!n||!(n.included||n instanceof _n))continue;const i=e.get(s);i?i.push(t):e.set(s,[t])}return this.exportNamesByVariable=e}getRenderedExports(){const e=[],t=[];for(const n of this.exportDescriptions.keys())(this.getExportedVariablesByName().get(n)?.included?e:t).push(n);return{removedExports:t,renderedExports:e}}getSyntheticNamespace(){return null===this.syntheticNamespace&&(this.syntheticNamespace=void 0,[this.syntheticNamespace]=this.getVariableForExportName("string"==typeof this.info.syntheticNamedExports?this.info.syntheticNamedExports:"default",{onlyExplicit:!0})),this.syntheticNamespace?this.syntheticNamespace:Bt((e=this.id,t=this.info.syntheticNamedExports,{code:"SYNTHETIC_NAMED_EXPORTS_NEED_NAMESPACE_EXPORT",exporter:e,message:`Module "${xt(e)}" that is marked with \`syntheticNamedExports: ${JSON.stringify(t)}\` needs ${"string"==typeof t&&"default"!==t?`an explicit export named "${t}"`:"a default export"} that does not reexport an unresolved named export of the same module.`}));var e,t}getVariableForExportName(e,{importerForSideEffects:t,importChain:n=[],isExportAllSearch:s,onlyExplicit:i,searchedNamesAndModules:r,sideEffectModules:o,exportOrReexportModules:a}=ae){if("*"===e[0]){if(1===e.length)return[this.namespace];return this.graph.modulesById.get(e.slice(1)).getVariableForExportName("*",{importChain:[...n,this.id]})}const l=this.reexportDescriptions.get(e);if(l){const[e,s]=au(l.module,l.localName,t,!1,r,[...n,this.id],o,a);return e?(t&&(uu(e,t,this),this.info.moduleSideEffects&&ue(t.sideEffectDependenciesByVariable,e,de).add(this)),this.info.moduleSideEffects&&o?.add(this),a?.add(this),[e]):this.error(bn(l.localName,this.id,l.module.id,!!s?.missingButExportExists),l.start)}const c=this.exportDescriptions.get(e);if(c){if(c===ou)return[this.exportShimVariable];const e=c.localName,n=this.traceVariable(e,{exportOrReexportModules:a,importerForSideEffects:t,searchedNamesAndModules:r,sideEffectModules:o});return n?(t&&(uu(n,t,this),ue(t.sideEffectDependenciesByVariable,n,de).add(this)),o?.add(this),a?.add(this),[n]):[null,{missingButExportExists:!0}]}if(i)return[null];if("default"!==e){const s=this.namespaceReexportsByName.get(e)??this.getVariableFromNamespaceReexports(e,t,r,[...n,this.id]);if(this.namespaceReexportsByName.set(e,s),s[0]){const[e,n]=s;if(t){const{exportOrReexportModules:s,sideEffectModules:i}=n;for(const n of s)t.alternativeReexportModules.has(e)||uu(e,t,n);for(const n of i)ue(t.sideEffectDependenciesByVariable,e,de).add(n)}return s}}return this.info.syntheticNamedExports?[ue(this.syntheticExports,e,()=>new po(this.astContext,e,this.getSyntheticNamespace()))]:!s&&this.options.shimMissingExports?(this.shimMissingExport(e),[this.exportShimVariable]):[null]}hasEffects(){return"no-treeshake"===this.info.moduleSideEffects||this.ast.hasCachedEffects()}include(){const e=ze();this.ast.shouldBeIncluded(e)&&this.ast.include(e,!1)}includeAllExports(){if(this.allExportsIncluded)return;this.allExportsIncluded=!0,this.includeModuleInExecution();const e=ze();for(const t of this.getExportedVariablesByName().values())this.includeVariable(t,Ie,e),t.deoptimizePath(Ie),t instanceof _n&&(t.module.reexported=!0)}includeAllInBundle(){this.ast.include(ze(),!0),this.includeAllExports()}includeModuleInExecution(){this.isExecuted||(qn(this),this.graph.needsTreeshakingPass=!0)}isIncluded(){return this.ast&&(this.ast.included||this.namespace.included||this.importedFromNotTreeshaken||this.exportShimVariable.included)}linkImports(){this.addModulesToImportDescriptions(this.importDescriptions),this.addModulesToImportDescriptions(this.reexportDescriptions);const e=[];for(const t of this.exportAllSources){const n=this.graph.modulesById.get(this.resolvedIds[t].id);n instanceof Wn?e.push(n):this.exportAllModules.push(n)}this.exportAllModules.push(...e)}log(e,t,n){this.addLocationToLogProps(t,n),this.options.onLog(e,t)}render(e){const t=this.magicString.clone();this.ast.render(t,e),t.trim();const{usesTopLevelAwait:n}=this.astContext;return n&&"es"!==e.format&&"system"!==e.format?Bt((s=this.id,i=e.format,{code:"INVALID_TLA_FORMAT",id:s,message:`Module format "${i}" does not support top-level await. Use the "es" or "system" output formats rather.`})):{source:t,usesTopLevelAwait:n};var s,i}async setSource({ast:e,code:t,customTransformCache:n,originalCode:s,originalSourcemap:i,resolvedIds:r,sourcemapChain:o,transformDependencies:a,transformFiles:l,safeVariableNames:c,...u}){if(nu("generate ast",3),t.startsWith("#!")){const e=t.indexOf("\n");this.shebang=t.slice(2,e)}this.info.code=t,this.info.safeVariableNames=c,this.originalCode=s,this.originalSourcemap=jc(i),this.sourcemapChain=o.map(e=>e.missing?e:jc(e)),Fc(this.originalSourcemap,this.sourcemapChain),l&&(this.transformFiles=l),this.transformDependencies=a,this.customTransformCache=n,this.updateOptions(u),this.resolvedIds=r??Object.create(null);const d=this.id;this.magicString=new C(t,{filename:this.excludeFromSourcemap?null:d,indentExclusionRanges:[]}),this.astContext={addDynamicImport:this.addDynamicImport.bind(this),addExport:this.addExport.bind(this),addImport:this.addImport.bind(this),addImportMeta:this.addImportMeta.bind(this),addImportSource:this.addImportSource.bind(this),code:t,deoptimizationTracker:this.graph.deoptimizationTracker,error:this.error.bind(this),fileName:d,getImportedJsxFactoryVariable:this.getImportedJsxFactoryVariable.bind(this),getModuleExecIndex:()=>this.execIndex,getModuleName:this.basename.bind(this),getNodeConstructor:e=>Tc[e]||Tc.UnknownNode,importDescriptions:this.importDescriptions,includeDynamicImport:this.includeDynamicImport.bind(this),includeVariableInModule:this.includeVariableInModule.bind(this),log:this.log.bind(this),magicString:this.magicString,manualPureFunctions:this.graph.pureFunctions,module:this,moduleContext:this.context,newlyIncludedVariableInits:this.graph.newlyIncludedVariableInits,options:this.options,requestTreeshakingPass:()=>this.graph.needsTreeshakingPass=!0,traceExport:e=>this.getVariableForExportName(e),traceVariable:this.traceVariable.bind(this),usesTopLevelAwait:!1},this.scope=new gc(this.graph.scope,this.astContext,this.importDescriptions),this.namespace=new uo(this.astContext);const h={context:this.astContext,type:"Module"};if(e)this.ast=new Tc[e.type](h,this.scope).parseNode(e),this.info.ast=e;else{su("generate ast",3);const e=await async function(e,t,n){return ca(e,t,n)}(t,!1,!1!==this.options.jsx);nu("generate ast",3),this.ast=(p=e,f=h,m=this.scope,_c(f,m,0,Da(p))),Object.defineProperty(this.info,"ast",{get:()=>{if(this.graph.astLru.has(d))return this.graph.astLru.get(d);{const e=this.tryParse();return!1!==this.options.cache?(Object.defineProperty(this.info,"ast",{value:e}),e):(this.graph.astLru.set(d,e),e)}}})}var p,f,m;su("generate ast",3)}toJSON(){return{ast:this.info.ast,attributes:this.info.attributes,code:this.info.code,customTransformCache:this.customTransformCache,dependencies:Array.from(this.dependencies,Uc),id:this.id,meta:this.info.meta,moduleSideEffects:this.info.moduleSideEffects,originalCode:this.originalCode,originalSourcemap:this.originalSourcemap,resolvedIds:this.resolvedIds,safeVariableNames:this.info.safeVariableNames,sourcemapChain:this.sourcemapChain,syntheticNamedExports:this.info.syntheticNamedExports,transformDependencies:this.transformDependencies,transformFiles:this.transformFiles}}traceVariable(e,{importerForSideEffects:t,isExportAllSearch:n,searchedNamesAndModules:s,sideEffectModules:i,exportOrReexportModules:r}=ae){const o=this.scope.variables.get(e);if(o)return o;const a=this.importDescriptions.get(e);if(a){const e=a.module;if(e instanceof cu&&"*"===a.name)return e.namespace;const[o,l]=au(e,a.name,t||this,n,s,[this.id],i,r);return o||this.error(bn(a.name,this.id,e.id,!!l?.missingButExportExists),a.start)}return null}updateOptions({meta:e,moduleSideEffects:t,syntheticNamedExports:n}){null!=t&&(this.info.moduleSideEffects=t),null!=n&&(this.info.syntheticNamedExports=n),null!=e&&Object.assign(this.info.meta,e)}addDynamicImport(e){let t=e.sourceAstNode;"TemplateLiteral"===t.type?1===t.quasis.length&&"string"==typeof t.quasis[0].value.cooked&&(t=t.quasis[0].value.cooked):"Literal"===t.type&&"string"==typeof t.value&&(t=t.value),this.dynamicImports.push({argument:t,id:null,node:e})}assertUniqueExportName(e,t){(this.exportDescriptions.has(e)||this.reexportDescriptions.has(e))&&this.error(function(e){return{code:"DUPLICATE_EXPORT",message:`Duplicate export "${e}"`}}(e),t)}addExport(e){if(e instanceof lr)this.assertUniqueExportName("default",e.start),this.exportDescriptions.set("default",{identifier:e.variable.getAssignedVariableName(),localName:"default"});else if(e instanceof ul){const t=e.source.value;if(this.addSource(t,e),e.exported){const n=e.exported instanceof Fr?e.exported.value:e.exported.name;this.assertUniqueExportName(n,e.exported.start),this.reexportDescriptions.set(n,{localName:"*",module:null,source:t,start:e.start})}else this.exportAllSources.add(t)}else if(e.source instanceof Fr){const t=e.source.value;this.addSource(t,e);for(const{exported:n,local:s,start:i}of e.specifiers){const e=n instanceof Fr?n.value:n.name;this.assertUniqueExportName(e,i),this.reexportDescriptions.set(e,{localName:s instanceof Fr?s.value:s.name,module:null,source:t,start:i})}}else if(e.declaration){const t=e.declaration;if(t instanceof Ic)for(const e of t.declarations)for(const t of la(e.id))this.assertUniqueExportName(t,e.id.start),this.exportDescriptions.set(t,{identifier:null,localName:t});else{const e=t.id.name;this.assertUniqueExportName(e,t.id.start),this.exportDescriptions.set(e,{identifier:null,localName:e})}}else for(const{local:t,exported:n}of e.specifiers){const e=t.name,s=n instanceof ki?n.name:n.value;this.assertUniqueExportName(s,n.start),this.exportDescriptions.set(s,{identifier:null,localName:e})}}addImport(e){const t=e.source.value;this.addSource(t,e);for(const n of e.specifiers){const s=n.local.name;(this.scope.variables.has(s)||this.importDescriptions.has(s))&&this.error($n(s),n.local.start);const i="source"===e.phase?Mn:n instanceof Sl?"default":n instanceof kl?"*":n.imported instanceof ki?n.imported.name:n.imported.value;this.importDescriptions.set(s,{module:null,name:i,phase:"source"===e.phase?"source":"instance",source:t,start:n.start})}}addImportSource(e){e&&!this.sourcesWithAttributes.has(e)&&this.sourcesWithAttributes.set(e,ae)}addImportMeta(e){this.importMetas.push(e)}addLocationToLogProps(e,t){e.id=this.id,e.pos=t;let n=this.info.code;const s=ct(n,t,{offsetLine:1});if(s){let{column:i,line:r}=s;try{({column:i,line:r}=function(e,t){const n=e.filter(e=>!e.missing);e:for(;n.length>0;){const e=n.pop().mappings[t.line-1];if(e){const n=e.filter(e=>e.length>1),s=n[n.length-1];let i=n[0];for(let e of n){if(e[0]>=t.column||e===s){e=e[0]!==t.column?i:e,t={column:e[3],line:e[2]+1};continue e}i=e}}throw new Error("Can't resolve original location of error.")}return t}(this.sourcemapChain,{column:i,line:r})),n=this.originalCode}catch(e){this.options.onLog(ft,function(e,t,n,s,i){return{cause:e,code:"SOURCEMAP_ERROR",id:t,loc:{column:n,file:t,line:s},message:`Error when using sourcemap for reporting an error: ${e.message}`,pos:i}}(e,this.id,i,r,t))}Vt(e,{column:i,line:r},n,this.id)}}addModulesToImportDescriptions(e){for(const t of e.values()){const{id:e}=this.resolvedIds[t.source];t.module=this.graph.modulesById.get(e)}}addRelevantSideEffectDependencies(e,t,n){const s=new Set,i=r=>{for(const o of r)s.has(o)||(s.add(o),t.has(o)?e.add(o):(o.info.moduleSideEffects||n.has(o))&&(o instanceof Wn||o.hasEffects()?e.add(o):i(o.dependencies)))};i(this.dependencies),i(n)}addSource(e,t){const n=(s=t.attributes,s?.length?Object.fromEntries(s.map(e=>[qc(e),e.value.value])):ae);var s;const i=this.sourcesWithAttributes.get(e);i?Kc(i,n)&&this.log(ft,cn(i,n,e,this.id),t.start):this.sourcesWithAttributes.set(e,n),"source"===t.phase&&this.sourcePhaseSources.add(e)}getImportedJsxFactoryVariable(e,t,n){const{id:s}=this.resolvedIds[n],i=this.graph.modulesById.get(s),[r]=i.getVariableForExportName(e,{importChain:[this.id]});return r||this.error((o=e,a=s,l=this.id,{code:"MISSING_JSX_EXPORT",exporter:a,id:l,message:`Export "${o}" is not defined in module "${xt(a)}" even though it is needed in "${xt(l)}" to provide JSX syntax. Please check your "jsx" option.`,names:[o],url:vt(It)}),t);var o,a,l}getVariableFromNamespaceReexports(e,t,n,s){let i=null;const r=new Map,o=new Set,a=new Set,l=new Set;for(const c of this.exportAllModules){if(c.info.syntheticNamedExports===e)continue;const[u,d]=au(c,e,t,!0,du(n),s,a,l);c instanceof Wn||d?.indirectExternal?o.add(u):u instanceof po?i||(i=u):u&&r.set(u,c)}if(r.size>0){const t=[...r],n=t[0][0];return 1===t.length?[n,{exportOrReexportModules:l,sideEffectModules:a}]:(this.options.onLog(ft,(c=e,u=this.id,d=t.map(([,e])=>e.id),{binding:c,code:"NAMESPACE_CONFLICT",ids:d,message:`Conflicting namespaces: "${xt(u)}" re-exports "${c}" from one of the modules ${bt(d.map(e=>xt(e)))} (will be ignored).`,reexporter:u})),[null])}var c,u,d;if(o.size>0){const t=[...o],n=t[0];return t.length>1&&this.options.onLog(ft,function(e,t,n,s){return{binding:e,code:"AMBIGUOUS_EXTERNAL_NAMESPACES",ids:s,message:`Ambiguous external namespace resolution: "${xt(t)}" re-exports "${e}" from one of the external modules ${bt(s.map(e=>xt(e)))}, guessing "${xt(n)}".`,reexporter:t}}(e,this.id,n.module.id,t.map(e=>e.module.id))),[n,{exportOrReexportModules:l,indirectExternal:!0,sideEffectModules:a}]}return i?[i,{exportOrReexportModules:l,sideEffectModules:a}]:[null]}includeAndGetAdditionalMergedNamespaces(){const e=new Set,t=new Set;for(const n of[this,...this.exportAllModules])if(n instanceof Wn){const[t]=n.getVariableForExportName("*",{importChain:[this.id]});t.includePath(Ie,ze()),this.includedImports.add(t),e.add(t)}else if(n.info.syntheticNamedExports){const e=n.getSyntheticNamespace();e.includePath(Ie,ze()),this.includedImports.add(e),t.add(e)}return[...t,...e]}includeDynamicImport(e){const{resolution:t}=e;t instanceof cu&&(t.includedDynamicImporters.includes(this)||(t.includedDynamicImporters.push(this),this.astContext.usesTopLevelAwait&&t.includedTopLevelAwaitingDynamicImporters.add(this)))}includeVariable(e,t,n){const{included:s,module:i}=e;if(e.includePath(t,n),s)i instanceof cu&&i!==this&&lu(e,this);else if(this.graph.needsTreeshakingPass=!0,i instanceof cu&&(i.includeModuleInExecution(),i!==this)){const t=lu(e,this);for(const e of t)e.includeModuleInExecution()}}includeVariableInModule(e,t,n){this.includeVariable(e,t,n);const s=e.module;s&&s!==this&&this.includedImports.add(e)}shimMissingExport(e){var t,n;this.options.onLog(ft,(t=this.id,{binding:n=e,code:"SHIMMED_EXPORT",exporter:t,message:`Missing export "${n}" has been shimmed in module "${xt(t)}".`})),this.exportDescriptions.set(e,ou)}tryParse(){try{return Gc(this.info.code,{jsx:!1!==this.options.jsx})}catch(e){return this.error(Pn(e,this.id),e.pos)}}}function uu(e,t,n){if(e.module instanceof cu&&e.module!==n){const s=e.module.cycles;if(s.size>0){const i=n.cycles;for(const r of i)if(s.has(r)){t.alternativeReexportModules.set(e,n);break}}}}const du=e=>e&&new Map(Array.from(e,([e,t])=>[e,new Set(t)])),hu=([e],[t])=>et?1:0,pu=(e,t)=>[e,t].filter(Boolean).join("\n"),fu=(e,t)=>[e,t].filter(Boolean).join("\n\n");const mu={amd:bu,cjs:bu,es:yu,iife:bu,system:yu,umd:bu};function gu(e,t,n,s,i,r,o,a,l,c,u,d,h,p){const f=[...e].reverse();for(const e of f)e.scope.addUsedOutsideNames(s,i,d,h);!function(e,t,n){for(const s of t){s.info.safeVariableNames||={};for(const t of s.scope.variables.values())if(t.included&&!(t.renderBaseName||t instanceof co&&t.getOriginalVariable()!==t)){const n=Object.getOwnPropertyDescriptor(s.info.safeVariableNames,t.name)?.value;if(n&&!e.has(n)){e.add(n),t.setRenderNames(null,n);continue}t.setRenderNames(null,Ri(t.name,e,t.forbiddenNames)),s.info.safeVariableNames[t.name]=t.renderName}if(n.has(s)){const t=s.namespace;t.setRenderNames(null,Ri(t.name,e,t.forbiddenNames))}}}(s,f,p),mu[i](s,n,t,r,o,a,l,c,u);for(const e of f)e.scope.deconflict(i,d,h)}function yu(e,t,n,s,i,r,o,a,l){for(const t of n.dependencies)(i||t instanceof fo)&&(t.variableName=Ri(t.suggestedVariableName,e,null));for(const n of t){const t=n.module,s=n.name;n.isNamespace&&(i||t instanceof Wn)?n.setRenderNames(null,(t instanceof Wn?a.get(t):o.get(t)).variableName):t instanceof Wn&&n.isSourcePhase?n.setRenderNames(null,Ri(t.suggestedVariableName+"__source",e,n.forbiddenNames)):t instanceof Wn&&"default"===s?n.setRenderNames(null,Ri([...t.exportedVariables].some(([e,t])=>"*"===t&&e.included)?t.suggestedVariableName+"__default":t.suggestedVariableName,e,n.forbiddenNames)):n.setRenderNames(null,Ri(Fn(s),e,n.forbiddenNames))}for(const t of l)t.setRenderNames(null,Ri(t.name,e,t.forbiddenNames))}function bu(e,t,{deconflictedDefault:n,deconflictedNamespace:s,dependencies:i},r,o,a,l,c){for(const t of i)t.variableName=Ri(t.suggestedVariableName,e,null);for(const t of s)t.namespaceVariableName=Ri(`${t.suggestedVariableName}__namespace`,e,null);for(const t of n)t.defaultVariableName=s.has(t)&&vr(r(t.id),a)?t.namespaceVariableName:Ri(`${t.suggestedVariableName}__default`,e,null);for(const e of t){const t=e.module;if(t instanceof Wn){const n=c.get(t),s=e.name;if("default"===s){const s=r(t.id),i=Ar[s]?n.defaultVariableName:n.variableName;Sr(s,a)?e.setRenderNames(i,"default"):e.setRenderNames(null,i)}else"*"===s?e.setRenderNames(null,$r[r(t.id)]?n.namespaceVariableName:n.variableName):e.setRenderNames(n.variableName,null)}else{const n=l.get(t);o&&e.isNamespace?e.setRenderNames(null,"default"===n.exportMode?n.namespaceVariableName:n.variableName):"default"===n.exportMode?e.setRenderNames(null,n.variableName):e.setRenderNames(n.variableName,n.getVariableExportName(e))}}}function Eu(e,{exports:t,name:n,format:s},i,r){const o=e.getExportNames();if("default"===t){if(1!==o.length||"default"!==o[0])return Bt(fn("default",o,i))}else if("none"===t&&o.length>0)return Bt(fn("none",o,i));return"auto"===t&&(0===o.length?t="none":1===o.length&&"default"===o[0]?t="default":("es"!==s&&"system"!==s&&o.includes("default")&&r(ft,function(e,t){return{code:"MIXED_EXPORTS",id:e,message:`Entry module "${xt(e)}" is using named and default exports together. Consumers of your bundle will have to use \`${t||"chunk"}.default\` to access the default export, which may not be what you want. Use \`output.exports: "named"\` to disable this warning.`,url:vt(kt)}}(i,n)),t="named")),t}function xu(e){const t=e.split("\n"),n=t.filter(e=>/^\t+/.test(e)),s=t.filter(e=>/^ {2,}/.test(e));if(0===n.length&&0===s.length)return null;if(n.length>=s.length)return"\t";const i=s.reduce((e,t)=>{const n=/^ +/.exec(t)[0].length;return Math.min(n,e)},1/0);return" ".repeat(i)}function Au(e,t,n,s,i,r){const o=e.getDependenciesToBeIncluded();for(const e of o){if(e instanceof Wn){t.push(r.get(e));continue}const o=i.get(e);o===s?n.has(e)||(n.add(e),Au(e,t,n,s,i,r)):t.push(o)}}const Su="!~{",$u="}~",vu=new RegExp(`${Su}[0-9a-zA-Z_$]{1,16}${$u}`,"g"),Pu=(e,t)=>e.replace(vu,e=>t.get(e)||e),Iu=(e,t,n)=>e.replace(vu,e=>e===t?n:e),wu=Symbol("bundleKeys"),Nu={type:"placeholder"};function ku(e,t,n){return At(e)?Bt(Cn(`Invalid pattern "${e}" for "${t}", patterns can be neither absolute nor relative paths. If you want your files to be stored in a subdirectory, write its name without a leading slash like this: subdirectory/pattern.`)):e.replace(/\[(\w+)(:\d+)?]/g,(e,s,i)=>{if(!n.hasOwnProperty(s)||i&&"hash"!==s)return Bt(Cn(`"[${s}${i||""}]" is not a valid placeholder in the "${t}" pattern.`));const r=n[s](i&&Number.parseInt(i.slice(1)));return At(r)?Bt(Cn(`Invalid substitution "${r}" for placeholder "[${s}]" in "${t}" pattern, can be neither absolute nor relative path.`)):r})}function Cu(e,{[wu]:t}){if(!t.has(e.toLowerCase()))return e;const n=Math.max(e.lastIndexOf("/"),e.lastIndexOf("\\")),s=e.slice(0,n+1),i=e.slice(n+1),r=i.indexOf(".",1),o=s+(-1===r?i:i.slice(0,r)),a=-1===r?"":i.slice(r);let l,c=1;for(;t.has((l=o+ ++c+a).toLowerCase()););return l}const Ru=["Object","Promise","module","exports","require","__filename","__dirname",...zr],Du=new Set([".js",".jsx",".ts",".tsx",".mjs",".mts",".cjs",".cts"]);function Ou(e,t,n,s){const i="function"==typeof t?t(e.id):t[e.id];return i||(n?(s(ft,(r=e.id,o=e.variableName,{code:"MISSING_GLOBAL_NAME",id:r,message:`No name was provided for external module "${r}" in "output.globals" – guessing "${o}".`,names:[o],url:vt("configuration-options/#output-globals")})),e.variableName):void 0);var r,o}class Mu{constructor(e,t,n,s,i,r,o,a,l,c,u,d,h,p,f){this.orderedModules=e,this.inputOptions=t,this.outputOptions=n,this.unsetOptions=s,this.pluginDriver=i,this.modulesById=r,this.chunkByModule=o,this.externalChunkByModule=a,this.facadeChunkByModule=l,this.includedNamespaces=c,this.manualChunkAlias=u,this.getPlaceholder=d,this.bundle=h,this.inputBase=p,this.snippets=f,this.dependencies=new Set,this.entryModules=[],this.exportMode="named",this.facadeModule=null,this.namespaceVariableName="",this.variableName="",this.isManualChunk=!1,this.accessedGlobalsByScope=new Map,this.dynamicEntryModules=[],this.dynamicName=null,this.exportNamesByVariable=new Map,this.exports=new Set,this.exportsByName=new Map,this.fileName=null,this.implicitEntryModules=[],this.implicitlyLoadedBefore=new Set,this.imports=new Set,this.includedDynamicImports=null,this.includedReexportsByModule=new Map,this.isEmpty=!0,this.name=null,this.needsExportsShim=!1,this.preRenderedChunkInfo=null,this.preliminaryFileName=null,this.preliminarySourcemapFileName=null,this.renderedChunkInfo=null,this.renderedDependencies=null,this.renderedModules=Object.create(null),this.sortedExportNames=null,this.strictFacade=!1,this.allowExtensionModules=new Set,this.execIndex=e.length>0?e[0].execIndex:1/0;const m=new Set(e);for(const t of e){o.set(t,this),t.namespace.included&&!n.preserveModules&&c.add(t),this.isEmpty&&t.isIncluded()&&(this.isEmpty=!1),(t.info.isEntry||n.preserveModules)&&this.entryModules.push(t);for(const e of t.includedDynamicImporters)if(!m.has(e)){this.dynamicEntryModules.push(t),t.info.syntheticNamedExports&&(c.add(t),this.exports.add(t.namespace));break}t.implicitlyLoadedAfter.size>0&&this.implicitEntryModules.push(t)}this.suggestedVariableName=Fn(this.generateVariableName()),this.isManualChunk=null!==u}static generateFacade(e,t,n,s,i,r,o,a,l,c,u,d,h,p,f){const m=new Mu([],e,t,n,s,i,r,o,a,l,null,d,h,p,f);m.assignFacadeName(u,c),a.has(c)||a.set(c,m);for(const e of c.getDependenciesToBeIncluded())m.dependencies.add(e instanceof cu?r.get(e):o.get(e));return!m.dependencies.has(r.get(c))&&c.info.moduleSideEffects&&c.hasEffects()&&m.dependencies.add(r.get(c)),m.ensureReexportsAreAvailableForModule(c),m.facadeModule=c,m.strictFacade=!0,m}canModuleBeFacade(e,t){const n=e.getExportNamesByVariable();for(const e of this.exports)if(!n.has(e))return!1;for(const s of t)if(!(s.module===e||n.has(s)||s instanceof po&&n.has(s.getBaseVariable())))return!1;return!0}finalizeChunk(e,t,n,s){const i=this.getRenderedChunkInfo(),r=e=>Pu(e,s),o=i.fileName,a=this.fileName=r(o);return{...i,code:e,dynamicImports:i.dynamicImports.map(r),fileName:a,implicitlyLoadedBefore:i.implicitlyLoadedBefore.map(r),importedBindings:Object.fromEntries(Object.entries(i.importedBindings).map(([e,t])=>[r(e),t])),imports:i.imports.map(r),map:t,preliminaryFileName:o,referencedFiles:i.referencedFiles.map(r),sourcemapFileName:n}}generateExports(){this.sortedExportNames=null;const e=new Set(this.exports);if(null!==this.facadeModule&&(!1!==this.facadeModule.preserveSignature||this.strictFacade)){const t=this.facadeModule.getExportNamesByVariable();for(const[n,s]of t){this.exportNamesByVariable.set(n,[...s]);for(const e of s)this.exportsByName.set(e,n);e.delete(n)}}for(const t of this.allowExtensionModules){const n=t.getExportNamesByVariable();for(const[t,s]of n){this.exportNamesByVariable.set(t,[...s]);for(const e of s)this.exportsByName.set(e,t);e.delete(t)}}this.outputOptions.minifyInternalExports?function(e,t,n){let s=0;for(const i of e){let[e]=i.name;if(t.has(e))do{e=Ci(++s),49===e.charCodeAt(0)&&(s+=9*64**(e.length-1),e=Ci(s))}while(Tn.has(e)||t.has(e));t.set(e,i),n.set(i,[e])}}(e,this.exportsByName,this.exportNamesByVariable):function(e,t,n){for(const s of e){let e=0,i=s.name;for(;t.has(i);)i=s.name+"$"+ ++e;t.set(i,s),n.set(s,[i])}}(e,this.exportsByName,this.exportNamesByVariable),(this.outputOptions.preserveModules||this.facadeModule&&this.facadeModule.info.isEntry)&&(this.exportMode=Eu(this,this.outputOptions,this.facadeModule.id,this.inputOptions.onLog))}generateFacades(){const e=[],t=new Set([...this.entryModules,...this.implicitEntryModules]),n=new Set(this.dynamicEntryModules.map(({namespace:e})=>e));for(const s of t){if("allow-extension"===s.preserveSignature){if(this.canPreserveModuleExports(s)&&!s.chunkFileNames.size&&s.chunkNames.every(({isUserDefined:e})=>!e)){this.allowExtensionModules.add(s),this.facadeModule||(this.facadeModule=s,this.strictFacade=!1,this.assignFacadeName({},s,this.outputOptions.preserveModules)),this.facadeChunkByModule.set(s,this);continue}}const t=Array.from(new Set(s.chunkNames.filter(({isUserDefined:e})=>e).map(({name:e})=>e)),e=>({name:e}));if(0===t.length&&s.isUserDefinedEntryPoint&&t.push({}),t.push(...Array.from(s.chunkFileNames,e=>({fileName:e}))),0===t.length&&t.push({}),!this.facadeModule){const e=!this.outputOptions.preserveModules&&("strict"===s.preserveSignature||"exports-only"===s.preserveSignature&&s.getExportNamesByVariable().size>0);e&&!this.canModuleBeFacade(s,n)||(this.facadeModule=s,this.facadeChunkByModule.set(s,this),s.preserveSignature&&(this.strictFacade=e),this.assignFacadeName(t.shift(),s,this.outputOptions.preserveModules))}for(const n of t)e.push(Mu.generateFacade(this.inputOptions,this.outputOptions,this.unsetOptions,this.pluginDriver,this.modulesById,this.chunkByModule,this.externalChunkByModule,this.facadeChunkByModule,this.includedNamespaces,s,n,this.getPlaceholder,this.bundle,this.inputBase,this.snippets))}for(const e of this.dynamicEntryModules)e.info.syntheticNamedExports||(!this.facadeModule&&this.canModuleBeFacade(e,n)?(this.facadeModule=e,this.facadeChunkByModule.set(e,this),this.strictFacade=!0,this.dynamicName=_u(e)):this.facadeModule===e&&!this.strictFacade&&this.canModuleBeFacade(e,n)?this.strictFacade=!0:this.facadeChunkByModule.get(e)?.strictFacade||(this.includedNamespaces.add(e),this.exports.add(e.namespace)));return this.outputOptions.preserveModules||this.addNecessaryImportsForFacades(),e}canPreserveModuleExports(e){const t=e.getExportNamesByVariable();for(const[e,n]of t)for(const t of n){const n=this.exportsByName.get(t);if(n&&n!==e)return!1}for(const[e,n]of t)for(const t of n)this.exportsByName.set(t,e);return!0}getChunkName(){return this.name??=this.outputOptions.sanitizeFileName(this.getFallbackChunkName())}getExportNames(){return this.sortedExportNames??=[...this.exportsByName.keys()].sort()}getFileName(){return this.fileName||this.getPreliminaryFileName().fileName}getImportPath(e){return hr($t(e,this.getFileName(),"amd"===this.outputOptions.format&&!this.outputOptions.amd.forceJsExtensionForImports,!0))}getPreliminaryFileName(){if(this.preliminaryFileName)return this.preliminaryFileName;let e,t=null;const{chunkFileNames:n,entryFileNames:s,file:i,format:r,preserveModules:o}=this.outputOptions;if(i)e=F(i);else if(null===this.fileName){const[i,a]=o||this.facadeModule?.isUserDefinedEntryPoint?[s,"output.entryFileNames"]:[n,"output.chunkFileNames"];e=ku("function"==typeof i?i(this.getPreRenderedChunkInfo()):i,a,{format:()=>r,hash:e=>t||(t=this.getPlaceholder(a,e||8)),name:()=>this.getChunkName()}),t||(e=Cu(e,this.bundle))}else e=this.fileName;return t||(this.bundle[e]=Nu),this.preliminaryFileName={fileName:e,hashPlaceholder:t}}getPreliminarySourcemapFileName(){if(this.preliminarySourcemapFileName)return this.preliminarySourcemapFileName;const{sourcemapFileNames:e,format:t}=this.outputOptions;if(!e)return null;let n=null;const[s,i]=[e,"output.sourcemapFileNames"];let r=ku("function"==typeof s?s(this.getPreRenderedChunkInfo()):s,i,{chunkhash:()=>this.getPreliminaryFileName().hashPlaceholder||"",format:()=>t,hash:e=>n||(n=this.getPlaceholder(i,e||8)),name:()=>this.getChunkName()});return n||(r=Cu(r,this.bundle)),this.preliminarySourcemapFileName={fileName:r,hashPlaceholder:n}}getRenderedChunkInfo(){if(this.renderedChunkInfo)return this.renderedChunkInfo;const e=this.getRenderedDependencies();return this.renderedChunkInfo={...this.getPreRenderedChunkInfo(),dynamicImports:this.getDynamicDependencies().map(zu),fileName:this.getFileName(),implicitlyLoadedBefore:Array.from(this.implicitlyLoadedBefore,zu),importedBindings:Tu(e,zu),imports:Array.from(e.keys(),zu),modules:this.renderedModules,referencedFiles:this.getReferencedFiles()}}getVariableExportName(e){return this.outputOptions.preserveModules&&e instanceof uo?"*":this.exportNamesByVariable.get(e)[0]}link(){this.dependencies=function(e,t,n,s){const i=[],r=new Set;for(let o=t.length-1;o>=0;o--){const a=t[o];if(!r.has(a)){const t=[];Au(a,t,r,e,n,s),i.unshift(t)}}const o=new Set;for(const e of i)for(const t of e)o.add(t);return o}(this,this.orderedModules,this.chunkByModule,this.externalChunkByModule);for(const e of this.orderedModules)this.addImplicitlyLoadedBeforeFromModule(e),this.setUpChunkImportsAndExportsForModule(e)}inlineTransitiveImports(){const{facadeModule:e,dependencies:t,outputOptions:n}=this,{hoistTransitiveImports:s,preserveModules:i}=n;if(s&&!i&&null!==e)for(const e of t)e instanceof Mu&&this.inlineChunkDependencies(e)}async render(){const{exportMode:e,facadeModule:t,inputOptions:{onLog:n},outputOptions:s,pluginDriver:i,snippets:r}=this,{format:o,preserveModules:a}=s,l=this.getPreliminaryFileName(),c=this.getPreliminarySourcemapFileName(),{accessedGlobals:u,indent:d,magicString:h,renderedSource:p,usedModules:f,usesTopLevelAwait:m}=this.renderModules(l.fileName),g=[...this.getRenderedDependencies().values()],y="none"===e?[]:this.getChunkExportDeclarations(o);let b=y.length>0,E=!1;for(const e of g){const{reexports:t}=e;t?.length&&(b=!0,!E&&t.some(e=>"default"===e.reexported)&&(E=!0),"es"===o&&(e.reexports=t.filter(({reexported:e})=>!y.find(({exported:t})=>t===e))))}if(!E)for(const{exported:e}of y)if("default"===e){E=!0;break}const{intro:x,outro:A,banner:S,footer:$}=await async function(e,t,n){try{let[s,i,r,o]=await Promise.all([t.hookReduceValue("banner",e.banner(n),[n],pu),t.hookReduceValue("footer",e.footer(n),[n],pu),t.hookReduceValue("intro",e.intro(n),[n],fu),t.hookReduceValue("outro",e.outro(n),[n],fu)]);return r&&(r+="\n\n"),o&&(o=`\n\n${o}`),s&&(s+="\n"),i&&(i="\n"+i),{banner:s,footer:i,intro:r,outro:o}}catch(e){return Bt((s=e.message,{code:"ADDON_ERROR",message:`Could not retrieve "${e.hook}". Check configuration of plugin "${e.plugin}".\n\tError Message: ${s}`}))}var s}(s,i,this.getRenderedChunkInfo());if(Vo[o](p,{accessedGlobals:u,dependencies:g,exports:y,hasDefaultExport:E,hasExports:b,id:l.fileName,indent:d,intro:x,isEntryFacade:a||null!==t&&t.info.isEntry,isModuleFacade:null!==t,log:n,namedExportsMode:"default"!==e,outro:A,snippets:r,usesTopLevelAwait:m},s),S&&h.prepend(S),"es"===o||"cjs"===o){const e=null!==t&&t.info.isEntry&&t.shebang;e&&h.prepend(`#!${e}\n`)}return $&&h.append($),{chunk:this,magicString:h,preliminaryFileName:l,preliminarySourcemapFileName:c,usedModules:f}}addImplicitlyLoadedBeforeFromModule(e){const{chunkByModule:t,implicitlyLoadedBefore:n}=this;for(const s of e.implicitlyLoadedBefore){const e=t.get(s);e&&e!==this&&n.add(e)}}addNecessaryImportsForFacades(){for(const[e,t]of this.includedReexportsByModule)if(this.includedNamespaces.has(e))for(const e of t)this.imports.add(e)}assignFacadeName({fileName:e,name:t},n,s){e?this.fileName=e:this.name=this.outputOptions.sanitizeFileName(t||(s?this.getPreserveModulesChunkNameFromModule(n):_u(n)))}checkCircularDependencyImport(e,t){const n=e.module;if(n instanceof cu){const s=this.chunkByModule.get(n);let i;do{if(i=t.alternativeReexportModules.get(e),i){this.chunkByModule.get(i)!==s&&this.inputOptions.onLog(ft,rn(n.getExportNamesByVariable().get(e)?.[0]||"*",n.id,i.id,t.id,this.outputOptions.preserveModules)),t=i}}while(i)}}ensureReexportsAreAvailableForModule(e){const t=[],n=e.getExportNamesByVariable();for(const s of n.keys()){const n=s instanceof po,i=n?s.getBaseVariable():s;if(this.checkCircularDependencyImport(i,e),!(i instanceof uo&&this.outputOptions.preserveModules)){const e=i.module;if(e instanceof cu){const s=this.chunkByModule.get(e);s&&s!==this&&(s.exports.add(i),t.push(i),n&&this.imports.add(i))}}}t.length>0&&this.includedReexportsByModule.set(e,t)}generateVariableName(){if(this.manualChunkAlias)return this.manualChunkAlias;const e=this.entryModules[0]||this.implicitEntryModules[0]||this.dynamicEntryModules[0]||this.orderedModules[this.orderedModules.length-1];return e?_u(e):"chunk"}getChunkExportDeclarations(e){const t=[];for(const n of this.getExportNames()){if("*"===n[0])continue;const s=this.exportsByName.get(n);if(!(s instanceof po)){const t=s.module;if(t){const s=this.chunkByModule.get(t);if(s!==this){if(!s||"es"!==e)continue;const t=this.renderedDependencies.get(s);if(!t)continue;const{imports:i,reexports:r}=t,o=r?.find(({reexported:e})=>e===n),a=i?.find(({imported:e})=>e===o?.imported);if(!a)continue}}}let i=null,r=!1,o=s.getName(this.snippets.getPropertyAccess);if(s instanceof vi){for(const e of s.declarations)if(e.parent instanceof ar||e instanceof lr&&e.declaration instanceof ar){r=!0;break}}else s instanceof po&&(i=o,"es"===e&&(o=s.renderName));t.push({exported:n,expression:i,hoisted:r,local:o})}return t}getDependenciesToBeDeconflicted(e,t,n){const s=new Set,i=new Set,r=new Set;for(const t of[...this.exportNamesByVariable.keys(),...this.imports])if(e||t.isNamespace){const o=t.module;if(o instanceof Wn){const a=this.externalChunkByModule.get(o);s.add(a),e&&("default"===t.name?Ar[n(o.id)]&&i.add(a):t.isNamespace&&$r[n(o.id)]&&(this.imports.has(t)||!this.exportNamesByVariable.get(t)?.every(e=>"*"===e[0]))&&r.add(a))}else{const n=this.chunkByModule.get(o);n!==this&&(s.add(n),e&&"default"===n.exportMode&&t.isNamespace&&r.add(n))}}if(t)for(const e of this.dependencies)s.add(e);return{deconflictedDefault:i,deconflictedNamespace:r,dependencies:s}}getDynamicDependencies(){return this.getIncludedDynamicImports().map(e=>e.facadeChunk||e.chunk||e.externalChunk||e.resolution).filter(e=>e!==this&&(e instanceof Mu||e instanceof fo))}getDynamicImportStringAndAttributes(e,t,n){const{externalImportAttributes:s}=this.outputOptions,i=["es","cjs"].includes(this.outputOptions.format)&&s;if(e instanceof Wn){const n=this.externalChunkByModule.get(e),s=n.getImportAttributes(this.snippets);return[`'${n.getImportPath(t)}'`,s||!!i||null]}let r=null;if(i){const e=Wc(n);r=e===ae||mo(e,this.snippets)}return[e||"",r]}getFallbackChunkName(){return this.manualChunkAlias?this.manualChunkAlias:this.dynamicName?this.dynamicName:this.fileName?Et(this.fileName):Et(this.orderedModules[this.orderedModules.length-1].id)}getImportSpecifiers(){const{interop:e}=this.outputOptions,t=new Map;for(const n of this.imports){const s=n.module;let i,r;const o=s instanceof Wn&&n.isSourcePhase;if(s instanceof Wn){if(i=this.externalChunkByModule.get(s),r=n.name,!o&&"default"!==r&&"*"!==r&&"defaultOnly"===e(s.id))return Bt(Nn(s.id,r,!1))}else i=this.chunkByModule.get(s),r=i.getVariableExportName(n);ue(t,i,he).push({imported:r,local:n.getName(this.snippets.getPropertyAccess),phase:o?"source":"instance"})}return t}getIncludedDynamicImports(){if(this.includedDynamicImports)return this.includedDynamicImports;const e=[];for(const t of this.orderedModules)for(const{node:n}of t.dynamicImports){if(!n.included)continue;const{resolution:t}=n;e.push(t instanceof cu?{chunk:this.chunkByModule.get(t),externalChunk:null,facadeChunk:this.facadeChunkByModule.get(t),node:n,resolution:t}:t instanceof Wn?{chunk:null,externalChunk:this.externalChunkByModule.get(t),facadeChunk:null,node:n,resolution:t}:{chunk:null,externalChunk:null,facadeChunk:null,node:n,resolution:t})}return this.includedDynamicImports=e}getPreRenderedChunkInfo(){if(this.preRenderedChunkInfo)return this.preRenderedChunkInfo;const{dynamicEntryModules:e,facadeModule:t,implicitEntryModules:n,orderedModules:s}=this;return this.preRenderedChunkInfo={exports:this.getExportNames(),facadeModuleId:t&&t.id,isDynamicEntry:e.length>0,isEntry:!!t?.info.isEntry,isImplicitEntry:n.length>0,moduleIds:s.map(({id:e})=>e),name:this.getChunkName(),type:"chunk"}}getPreserveModulesChunkNameFromModule(e){const t=Lu(e);if(t)return t;const{preserveModulesRoot:n,sanitizeFileName:s}=this.outputOptions,i=s(V(e.id.split(Bu,1)[0])),r=s(this.inputBase),o=U(i),a=Du.has(o)?i.slice(0,-o.length):i;return B(a)?n&&W(a).startsWith(n)?a.slice(n.length).replace(/^[/\\]/,""):"/"===r&&"/"!==a[0]?H(r,a.replace(/^[a-zA-Z]:[/\\]/,"/")):H(r,a):this.outputOptions.virtualDirname.replace(/\/$/,"")+"/"+F(a)}getReexportSpecifiers(){const{externalLiveBindings:e,interop:t}=this.outputOptions,n=new Map;for(let s of this.getExportNames()){let i,r,o;if("*"===s[0]){const n=s.slice(1);"defaultOnly"===t(n)&&this.inputOptions.onLog(ft,kn(n)),o=e,i=this.externalChunkByModule.get(this.modulesById.get(n)),r=s="*"}else{const n=this.exportsByName.get(s);if(n instanceof po)continue;const a=n.module;if(a instanceof cu){if(i=this.chunkByModule.get(a),i===this)continue;r=i.getVariableExportName(n),o=n.isReassigned}else{if(i=this.externalChunkByModule.get(a),r=n.name,"default"!==r&&"*"!==r&&"defaultOnly"===t(a.id))return Bt(Nn(a.id,r,!0));o=e&&("default"!==r||Sr(t(a.id),!0))}}ue(n,i,he).push({imported:r,needsLiveBinding:o,reexported:s})}return n}getReferencedFiles(){const e=new Set;for(const t of this.orderedModules)for(const n of t.importMetas){const t=n.getReferencedFileName(this.pluginDriver);t&&e.add(t)}return[...e]}getRenderedDependencies(){if(this.renderedDependencies)return this.renderedDependencies;const e=this.getImportSpecifiers(),t=this.getReexportSpecifiers(),n=new Map,s=this.getFileName();for(const i of this.dependencies){const r=e.get(i)||null,o=t.get(i)||null;if(null===r&&null===o&&i instanceof fo&&!i.moduleSideEffects&&!this.outputOptions.hoistTransitiveImports)continue;const a=i instanceof fo||"default"!==i.exportMode,l=i.getImportPath(s),c=r?.find(e=>"source"===e.phase),u=r?.filter(e=>"source"!==e.phase)??null;n.set(i,{attributes:i instanceof fo?i.getImportAttributes(this.snippets):null,defaultVariableName:i.defaultVariableName,globalName:i instanceof fo&&("umd"===this.outputOptions.format||"iife"===this.outputOptions.format)&&Ou(i,this.outputOptions.globals,null!==(r||o),this.inputOptions.onLog),importPath:l,imports:u&&u.length>0?u:null,isChunk:i instanceof Mu,name:i.variableName,namedExportsMode:a,namespaceVariableName:i.namespaceVariableName,reexports:o,sourcePhaseImport:c?.local})}return this.renderedDependencies=n}inlineChunkDependencies(e){for(const t of e.dependencies)this.dependencies.has(t)||(this.dependencies.add(t),t instanceof Mu&&this.inlineChunkDependencies(t))}renderModules(e){const{accessedGlobalsByScope:t,dependencies:n,exportNamesByVariable:s,includedNamespaces:i,inputOptions:{onLog:r},isEmpty:o,orderedModules:a,outputOptions:l,pluginDriver:c,renderedModules:u,snippets:d}=this,{compact:h,format:p,freeze:f,generatedCode:{symbols:m},importAttributesKey:g}=l,{_:y,cnst:b,n:E}=d;this.setDynamicImportResolutions(e),this.setImportMetaResolutions(e),this.setIdentifierRenderResolutions();const x=new D({separator:`${E}${E}`}),A=function(e,t){if(!0!==t.indent)return t.indent;for(const t of e){const e=xu(t.originalCode);if(null!==e)return e}return"\t"}(a,l),S=[];let $="";const v=new Set,P=new Map,I={accessedDocumentCurrentScript:!1,exportNamesByVariable:s,format:p,freeze:f,importAttributesKey:g,indent:A,pluginDriver:c,snippets:d,symbols:m,useOriginalName:null};let w=!1;for(const e of a){let n,s=0;if(e.isIncluded()||i.has(e)){const r=e.render(I);!I.accessedDocumentCurrentScript&&Yr.includes(p)&&this.accessedGlobalsByScope.get(e.scope)?.delete(xr),I.accessedDocumentCurrentScript=!1,({source:n}=r),w||=r.usesTopLevelAwait,s=n.length(),s&&(h&&n.lastLine().includes("//")&&n.append("\n"),P.set(e,n),x.addSource(n),S.push(e));const o=e.namespace;if(i.has(e)){const e=o.renderBlock(I);o.renderFirst()?$+=E+e:x.addSource(new C(e))}const a=t.get(e.scope);if(a)for(const e of a)v.add(e)}const{renderedExports:r,removedExports:o}=e.getRenderedExports();u[e.id]={get code(){return n?.toString()??null},originalLength:e.originalCode.length,removedExports:o,renderedExports:r,renderedLength:s}}$&&x.prepend($+E+E),this.needsExportsShim&&x.prepend(`${E}${b} ${Ro}${y}=${y}void 0;${E}${E}`);const N=h?x:x.trim();var k;return o&&0===this.getExportNames().length&&0===n.size&&r(ft,{code:"EMPTY_BUNDLE",message:`Generated an empty chunk: "${k=this.getChunkName()}".`,names:[k]}),{accessedGlobals:v,indent:A,magicString:x,renderedSource:N,usedModules:S,usesTopLevelAwait:w}}setDynamicImportResolutions(e){const{accessedGlobalsByScope:t,outputOptions:n,pluginDriver:s,snippets:i}=this;for(const r of this.getIncludedDynamicImports())if(r.chunk){const{chunk:o,facadeChunk:a,node:l,resolution:c}=r;o===this?l.setInternalResolution(c.namespace):l.setExternalResolution((a||o).exportMode,n,i,s,t,`'${(a||o).getImportPath(e)}'`,!a?.strictFacade&&o.exportNamesByVariable.get(c.namespace)[0],null,this,a||o)}else{const{node:o,resolution:a}=r,[l,c]=this.getDynamicImportStringAndAttributes(a,e,o);o.setExternalResolution("external",n,i,s,t,l,!1,c,this,null)}}setIdentifierRenderResolutions(){const{format:e,generatedCode:{symbols:t},interop:n,preserveModules:s,externalLiveBindings:i}=this.outputOptions;for(const e of this.orderedModules)for(const t of e.scope.variables.values())t.setRenderNames(null,null);const r=new Set;for(const t of this.getExportNames()){const n=this.exportsByName.get(t);"es"!==e&&"system"!==e&&n.isReassigned&&!n.isId?n.setRenderNames("exports",t):n instanceof po?r.add(n):n.setRenderNames(null,null)}for(const e of this.orderedModules)if(e.needsExportShim){this.needsExportsShim=!0;break}const o=new Set(Ru);this.needsExportsShim&&o.add(Ro),t&&o.add("Symbol"),gu(this.orderedModules,this.getDependenciesToBeDeconflicted("es"!==e&&"system"!==e,"amd"===e||"umd"===e||"iife"===e,n),this.imports,o,e,n,s,i,this.chunkByModule,this.externalChunkByModule,r,this.exportNamesByVariable,this.accessedGlobalsByScope,this.includedNamespaces)}setImportMetaResolutions(e){const{accessedGlobalsByScope:t,includedNamespaces:n,orderedModules:s,outputOptions:{format:i}}=this;for(const r of s){for(const n of r.importMetas)n.setResolution(i,t,e);n.has(r)&&r.namespace.prepare(t)}}setUpChunkImportsAndExportsForModule(e){const t=new Set(e.includedImports);if(!this.outputOptions.preserveModules&&this.includedNamespaces.has(e))for(const n of e.getExportedVariablesByName().values())n.included&&t.add(n);for(let n of t){n instanceof co&&(n=n.getOriginalVariable()),n instanceof po&&(n=n.getBaseVariable());const t=this.chunkByModule.get(n.module);t!==this&&(this.imports.add(n),n.module instanceof cu&&(this.checkCircularDependencyImport(n,e),n instanceof uo&&this.outputOptions.preserveModules||t.exports.add(n)))}(this.includedNamespaces.has(e)||e.info.isEntry&&!1!==e.preserveSignature||e.includedDynamicImporters.some(e=>this.chunkByModule.get(e)!==this))&&this.ensureReexportsAreAvailableForModule(e);for(const{node:{included:t,resolution:n}}of e.dynamicImports)t&&n instanceof cu&&this.chunkByModule.get(n)===this&&!this.includedNamespaces.has(n)&&(this.includedNamespaces.add(n),this.ensureReexportsAreAvailableForModule(n))}}function _u(e){return Lu(e)??Et(e.id)}function Lu(e){return e.chunkNames.find(({isUserDefined:e})=>e)?.name??e.chunkNames[0]?.name}function Tu(e,t){const n={};for(const[s,i]of e){const e=new Set;if(i.imports)for(const{imported:t}of i.imports)e.add(t);if(i.reexports)for(const{imported:t}of i.reexports)e.add(t);n[t(s)]=[...e]}return n}const Bu=/[#?]/,zu=e=>e.getFileName();function*Vu(e){for(const t of e)yield*t}function Fu(e,t,n,s,i,r){const{chunkDefinitions:o,manualChunkModules:a,manualChunkModulesByModule:l}=function(e,t,n){const s=new Set(e.keys()),i=Object.create(null),r=[...e].sort(([e],[t])=>e.execIndex-t.execIndex);for(const[e,o]of r){const r=i[o]||=[];t&&n?r.push(e):ju(e,r,s)}const o=Object.entries(i),a=new Array(o.length),l=new Array(o.length),c=new Map;let u=0;for(const[e,t]of o){l[u]={alias:e,modules:t},a[u]=t;for(const e of t)c.set(e,t);u++}return{chunkDefinitions:l,manualChunkModules:a,manualChunkModulesByModule:c}}(t,i,r),{entriesAndManualChunksCount:c,dependentEntriesByModule:u,dynamicallyDependentEntriesByDynamicEntry:d,dynamicImportsByEntry:h,dynamicallyDependentEntriesByAwaitedDynamicEntry:p,awaitedDynamicImportsByEntry:f}=function(e,t,n){const s=new Set,i=new Set,r=new Map,o=new Set(e),a=e.map(e=>[e]).concat(t),l=new Array(a.length),c=new Array(a.length);let u=0;for(const e of a){const t=new Set,d=new Set;l[u]=t,c[u]=d;const h=new Set(e),p=new Set;for(const e of h){ue(r,e,de).add(u);const l=n.get(e);if(l&&!p.has(l)){p.add(l);for(const e of l)h.add(e)}for(const t of e.getDependenciesToBeIncluded())t instanceof Wn||h.add(t);for(const{node:{resolution:n}}of e.dynamicImports)if(n instanceof cu&&n.includedDynamicImporters.length>0&&!o.has(n)){s.add(n),o.add(n),a.push([n]),t.add(n);for(const e of n.includedTopLevelAwaitingDynamicImporters)if(h.has(e)){i.add(n),d.add(n);break}}for(const t of e.implicitlyLoadedBefore)o.has(t)||(s.add(t),o.add(t),a.push([t]))}u++}const{awaitedDynamicEntries:d,awaitedDynamicImportsByEntry:h,dynamicEntries:p,dynamicImportsByEntry:f}=function(e,t,n,s,i){const r=new Map,o=new Set,a=new Set;for(const[n,i]of e.entries())for(const e of i)r.set(e,n),t.has(e)&&o.add(n),s.has(e)&&a.add(n);const l=Uu(n,r),c=Uu(i,r);return{awaitedDynamicEntries:a,awaitedDynamicImportsByEntry:c,dynamicEntries:o,dynamicImportsByEntry:l}}(a,s,l,i,c);return{awaitedDynamicImportsByEntry:h,dependentEntriesByModule:r,dynamicallyDependentEntriesByAwaitedDynamicEntry:Gu(r,d,a,e=>e.includedTopLevelAwaitingDynamicImporters),dynamicallyDependentEntriesByDynamicEntry:Gu(r,p,a,e=>e.includedDynamicImporters),dynamicImportsByEntry:f,entriesAndManualChunksCount:a.length}}(e,a,l),m=function(e){const t=Object.create(null);for(const{dependentEntries:n,module:s}of e){let e=0n;for(const t of n)e|=1n<0&&s.includedTopLevelAwaitingDynamicImporters.size>0){n.push({alias:null,modules:[s]});continue}yield{dependentEntries:i,module:s}}}(u,l,o)),g=function(e,t){const n=new Array(e).fill(0n);let s=1n;for(const{dependentEntries:e}of t){for(const t of e)n[t]|=s;s<<=1n}return n}(c,m),y=Hu(g,d,h,c);!function(e,t,n){let s=1n;for(const{dependentEntries:i}of e){for(const e of i)(t[e]&s)===s&&0n===(n[e]&s)&&i.delete(e);s<<=1n}}(m,y,Hu(g,p,f,c));const{chunks:b,sideEffectAtoms:E,sizeByAtom:x}=function(e,t,n,s){const i=Object.create(null),r=new Map,o=new Array(e.length);let a=0n,l=1n,c=0;for(const{dependentEntries:u,modules:d}of e){let e=0n,h=-1n;for(const s of u)e|=1n<1?e.estimateSize():1);m||(a|=l),o[c++]=f,p.containedAtoms|=l,p.modules.push(...d),p.pure&&=m,p.size+=f,l<<=1n}const u=Object.values(i);return a|=function(e,t,n){const s=new Map;let i=0n;for(const r of e){const{dependencies:e,modules:o}=r;for(const a of o)for(const o of a.getDependenciesToBeIncluded())if(o instanceof Wn){if(o.info.moduleSideEffects){const e=ue(s,o,()=>{const e=n;return n<<=1n,i|=e,e});r.containedAtoms|=e,r.correlatedAtoms|=e}}else{const n=t.get(o);n&&n!==r&&(e.add(n),n.dependentChunks.add(r))}}return i}(u,r,l),{chunks:u,sideEffectAtoms:a,sizeByAtom:o}}(m,g,y,n);return o.push(...function(e,t,n,s,i){nu("optimize chunks",3);const r=function(e,t){const n=[],s=[];for(const i of e)(i.size1&&i("info",An(e.length,r.small.size,"Initially"));(function(e,t,n,s){const{small:i}=e;for(const r of i){const o=qu(r,e,n,s,t<=1?1:1/0);if(o){const{containedAtoms:n,correlatedAtoms:s,modules:a,pure:l,size:c}=r;i.delete(r),Ju(o,t,e).delete(o),o.modules.push(...a),o.size+=c,o.pure&&=l;const{dependencies:u,dependentChunks:d,dependentEntries:h}=o;o.correlatedAtoms&=s,o.containedAtoms|=n;for(const e of r.dependentEntries)h.add(e);for(const e of r.dependencies)u.add(e),e.dependentChunks.delete(r),e.dependentChunks.add(o);for(const e of r.dependentChunks)d.add(e),e.dependencies.delete(r),e.dependencies.add(o);u.delete(o),d.delete(o),Ju(o,t,e).add(o)}}})(r,t,n,s),t>1&&i("info",An(r.small.size+r.big.size,r.small.size,"After merging chunks"));return su("optimize chunks",3),[...r.small,...r.big]}(b,n,E,x,s).map(({modules:e})=>({alias:null,modules:e}))),o}function ju(e,t,n){const s=new Set([e]);for(const e of s){n.add(e),t.push(e);for(const t of e.dependencies)t instanceof Wn||n.has(t)||s.add(t)}}function Uu(e,t){const n=new Array(e.length);let s=0;for(const i of e){const e=new Set;for(const n of i)e.add(t.get(n));n[s++]=e}return n}function Gu(e,t,n,s){const i=new Map;for(const r of t){const t=ue(i,r,de),o=n[r];for(const n of o)for(const i of Vu([s(n),n.implicitlyLoadedAfter])){const n=e.get(i);if(n)for(const e of n)t.add(e)}}return i}function Hu(e,t,n,s){const i=Array.from({length:s},(e,n)=>t.has(n)?-1n:0n);for(const[s,r]of t){t.delete(s);const o=i[s];let a=o;for(const t of r)a&=e[t]|i[t];if(a!==o){i[s]=a;for(const e of n[s])ue(t,e,de).add(s)}}return i}function Wu({size:e},{size:t}){return e-t}function qu(e,{big:t,small:n},s,i,r){let o=null;for(const a of Vu([n,t])){if(e===a)continue;const t=Ku(e,a,r,s,i);if(t=t)return 1/0;return s}(o&~r,n,i)}function Ju(e,t,n){return e.sizee.execIndex>t.execIndex?1:-1;function Zu(e){e.sort(Yu)}function Qu(e){let t=0;const n=[],s=new Set,i=new Set,r=new Map,o=[],a=(e,t)=>{r.has(e)?s.has(e)||n.push(function(e,t,n){const s=Symbol(e.id),i=[e.id];let r=t;e.cycles.add(s);for(;r!==e;)r.cycles.add(s),i.push(r.id),r=n.get(r);return i.push(i[0]),i.reverse(),i}(e,t,r)):(r.set(e,t),l(e))},l=e=>{if(e instanceof cu){for(const t of e.dependencies)a(t,e);for(const t of e.implicitlyLoadedBefore)i.add(t);for(const{node:{resolution:t,scope:n}}of e.dynamicImports)t instanceof cu&&(n.context.usesTopLevelAwait?a(t,e):i.add(t));o.push(e)}e.execIndex=t++,s.add(e)};for(const t of e)r.has(t)||(r.set(t,null),l(t));for(const e of i)r.has(e)||(r.set(e,null),l(e));return{cyclePaths:n,orderedModules:o}}const ed=(e,t)=>t?`(${e})`:e;class td{constructor(e,t){this.isOriginal=!0,this.filename=e,this.content=t}traceSegment(e,t,n){return{column:t,line:e,name:n,source:this}}}class nd{constructor(e,t){this.sources=t,this.names=e.names,this.mappings=e.mappings}traceMappings(){const e=[],t=new Map,n=[],s=[],i=new Map,r=[];for(const o of this.mappings){const a=[];for(const r of o){if(1===r.length)continue;const o=this.sources[r[1]];if(!o)continue;const l=o.traceSegment(r[2],r[3],5===r.length?this.names[r[4]]:"");if(l){const{column:o,line:c,name:u,source:{content:d,filename:h}}=l;let p=t.get(h);if(void 0===p)p=e.length,e.push(h),t.set(h,p),n[p]=d;else if(null==n[p])n[p]=d;else if(null!=d&&n[p]!==d)return Bt(wn(h));const f=[r[0],p,c,o];if(u){let e=i.get(u);void 0===e&&(e=s.length,s.push(u),i.set(u,e)),f[4]=e}a.push(f)}}r.push(a)}return{mappings:r,names:s,sources:e,sourcesContent:n}}traceSegment(e,t,n){const s=this.mappings[e];if(!s)return null;let i=0;let r=s.length-1;for(;i<=r;){const e=i+r>>1;let o=s[e];if(o[0]!==t&&i===r){o=s[s[i][0]>t?Math.max(0,i-1):i]}if(o[0]===t||i===r){if(1==o.length)return null;const e=this.sources[o[1]];return e?e.traceSegment(o[2],o[3],5===o.length?this.names[o[4]]:n):null}o[0]>t?r=e-1:i=e+1}return null}}function sd(e){return function(t,n){return n.missing?(e(ft,(s=n.plugin,{code:Jt,message:`Sourcemap is likely to be incorrect: a plugin (${s}) was used to transform files, but didn't generate a sourcemap for the transformation. Consult the plugin documentation for help`,plugin:s,url:vt("troubleshooting/#warning-sourcemap-is-likely-to-be-incorrect")})),new nd({mappings:[],names:[]},[t])):new nd(n,[t]);var s}}function id(e,t,n,s,i){let r;if(n){const t=n.sources,s=n.sourcesContent||[],i=j(e)||".",o=n.sourceRoot||".",a=t.map((e,t)=>new td(W(i,o,e),s[t]));r=new nd(n,a)}else r=new td(e,t);return s.reduce(i,r)}let rd;const od=e=>function(e){let t,n;try{const r=Ia.__wbindgen_add_to_stack_pointer(-16);Ia.xxhashBase64Url(r,da(e));var s=fa().getInt32(r+0,!0),i=fa().getInt32(r+4,!0);return t=s,n=i,ma(s,i)}finally{Ia.__wbindgen_add_to_stack_pointer(16),Ia.__wbindgen_export(t,n,1)}}(ld(e)),ad={base36:e=>function(e){let t,n;try{const r=Ia.__wbindgen_add_to_stack_pointer(-16);Ia.xxhashBase36(r,da(e));var s=fa().getInt32(r+0,!0),i=fa().getInt32(r+4,!0);return t=s,n=i,ma(s,i)}finally{Ia.__wbindgen_add_to_stack_pointer(16),Ia.__wbindgen_export(t,n,1)}}(ld(e)),base64:od,hex:e=>function(e){let t,n;try{const r=Ia.__wbindgen_add_to_stack_pointer(-16);Ia.xxhashBase16(r,da(e));var s=fa().getInt32(r+0,!0),i=fa().getInt32(r+4,!0);return t=s,n=i,ma(s,i)}finally{Ia.__wbindgen_add_to_stack_pointer(16),Ia.__wbindgen_export(t,n,1)}}(ld(e))};function ld(e){return"string"==typeof e?"undefined"==typeof Buffer?(rd??=new TextEncoder,rd.encode(e)):Buffer.from(e):e}let cd="sourceMa";async function ud(e,t,n,s,i){nu("render chunks",2),function(e){for(const t of e)t.facadeModule&&t.facadeModule.isUserDefinedEntryPoint&&t.getPreliminaryFileName()}(e);const r=await Promise.all(e.map(e=>e.render()));su("render chunks",2),nu("transform chunks",2);const o=ad[s.hashCharacters],a=function(e){return Object.fromEntries(e.map(e=>{const t=e.getRenderedChunkInfo();return[t.fileName,t]}))}(e),{hashDependenciesByPlaceholder:l,initialHashesByPlaceholder:c,nonHashedChunksWithPlaceholders:u,placeholders:d,renderedChunksByPlaceholder:h}=await async function(e,t,n,s,i,r){const o=[],a=new Map,l=new Map,c=new Map,u=new Set;for(const{preliminaryFileName:{hashPlaceholder:t}}of e)t&&u.add(t);return await Promise.all(e.map(async({chunk:e,preliminaryFileName:{fileName:d,hashPlaceholder:h},preliminarySourcemapFileName:p,magicString:f,usedModules:m})=>{const g={chunk:e,fileName:d,sourcemapFileName:p?.fileName??null,...await dd(f,d,m,t,n,s,r)},{code:y,map:b}=g;if(h){const{containedPlaceholders:t,transformedCode:n}=((e,t)=>{const n=new Set,s=e.replace(vu,e=>t.has(e)?(n.add(e),`${Su}${"0".repeat(e.length-5)}${$u}`):e);return{containedPlaceholders:n,transformedCode:s}})(y,u);let r=n;const o=s.hookReduceValueSync("augmentChunkHash","",[e.getRenderedChunkInfo()],(e,t)=>(t&&(e+=t),e));o&&(r+=o),a.set(h,g),l.set(h,{containedPlaceholders:t,contentHash:i(r)})}else o.push(g);const E=p?.hashPlaceholder;b&&E&&c.set(p.hashPlaceholder,i(b.toString()).slice(0,p.hashPlaceholder.length))})),{hashDependenciesByPlaceholder:l,initialHashesByPlaceholder:c,nonHashedChunksWithPlaceholders:o,placeholders:u,renderedChunksByPlaceholder:a}}(r,a,s,n,o,i),p=function(e,t,n,s,i,r){const o=new Map(n);for(const n of s){const{fileName:s}=e.get(n);let a="";const l=new Set([n]);for(const e of l){const{containedPlaceholders:n,contentHash:s}=t.get(e);a+=s;for(const e of n)l.add(e)}let c,u;do{u&&(a=u),u=r(a).slice(0,n.length),c=Iu(s,n,u)}while(i[wu].has(c.toLowerCase()));i[c]=Nu,o.set(n,u)}return o}(h,l,c,d,t,o);!function(e,t,n,s,i,r){for(const{chunk:s,code:o,fileName:a,sourcemapFileName:l,map:c}of e.values()){let e=Pu(o,t);const u=Pu(a,t);let d=null;c&&(r.sourcemapDebugIds&&(e+=pd(e,c)),d=l?Pu(l,t):`${u}.map`,c.file=Pu(c.file??"",t),e+=hd(d,c,i,r)),n[u]=s.finalizeChunk(e,c,d,t)}for(const{chunk:e,code:o,fileName:a,sourcemapFileName:l,map:c}of s){let s=t.size>0?Pu(o,t):o,u=null;c&&(r.sourcemapDebugIds&&(s+=pd(s,c)),u=l?Pu(l,t):`${a}.map`,s+=hd(u,c,i,r)),n[a]=e.finalizeChunk(s,c,u,t)}}(h,p,t,u,n,s),su("transform chunks",2)}async function dd(e,t,n,s,i,r,o){let a=null;const l=[];let c=await r.hookReduceArg0("renderChunk",[e.toString(),s[t],i,{chunks:s}],(e,t,n)=>{if(null==t)return e;if("string"==typeof t&&(t={code:t,map:void 0}),null!==t.map){const e=jc(t.map);l.push(e||{missing:!0,plugin:n.name})}return t.code});const{compact:u,dir:d,file:h,sourcemap:p,sourcemapExcludeSources:f,sourcemapFile:m,sourcemapPathTransform:g,sourcemapIgnoreList:y}=i;if(u||"\n"===c[c.length-1]||(c+="\n"),p){let s;nu("sourcemaps",3),s=h?W(m||h):d?W(d,t):W(t);a=function(e,t,n,s,i,r){const o=sd(r),a=n.filter(e=>!e.excludeFromSourcemap).map(e=>id(e.id,e.originalCode,e.originalSourcemap,e.sourcemapChain,o)),l=new nd(t,a),c=s.reduce(o,l);let{sources:u,sourcesContent:d,names:h,mappings:p}=c.traceMappings();if(e){const t=j(e);u=u.map(e=>H(t,e)),e=F(e)}for(const e of n)Fc(e.originalSourcemap,e.sourcemapChain);return new E({file:e,mappings:p,names:h,sources:u,sourcesContent:i?void 0:d})}(s,e.generateDecodedMap({}),n,l,f,o);for(let e=0;e{const t=new Set;return new Proxy(e,{deleteProperty:(e,n)=>("string"==typeof n&&t.delete(n.toLowerCase()),Reflect.deleteProperty(e,n)),get:(e,n)=>n===wu?t:Reflect.get(e,n),set:(e,n,s)=>("string"==typeof n&&t.add(n.toLowerCase()),Reflect.set(e,n,s))})})(t);this.pluginDriver.setOutputBundle(n,this.outputOptions);try{nu("initialize render",2),await this.pluginDriver.hookParallel("renderStart",[this.outputOptions,this.inputOptions]),su("initialize render",2),nu("generate chunks",2);const e=(()=>{let e=0;return(t,n)=>{if(n>21)return Bt(Cn(`Hashes cannot be longer than 21 characters, received ${n}. Check the "${t}" option.`));const s=`${Su}${Ci(++e).padStart(n-5,"0")}${$u}`;return s.length>n?Bt(Cn(`To generate hashes for this number of chunks (currently ${e}), you need a minimum hash size of ${s.length}, received ${n}. Check the "${t}" option.`)):s}})(),t=await this.generateChunks(n,e);t.length>1&&function(e,t){if("umd"===e.format||"iife"===e.format)return Bt(gn("output.format",Ct,"UMD and IIFE output formats are not supported for code-splitting builds",e.format));if("string"==typeof e.file)return Bt(gn("output.file",Nt,'when building multiple chunks, the "output.dir" option must be used, not "output.file". To inline dynamic imports, set the "inlineDynamicImports" option'));if(e.sourcemapFile)return Bt(gn("output.sourcemapFile",_t,'"output.sourcemapFile" is only supported for single-file builds'));!e.amd.autoId&&e.amd.id&&t(ft,gn("output.amd.id",wt,'this option is only properly supported for single-file builds. Use "output.amd.autoId" and "output.amd.basePath" instead'))}(this.outputOptions,this.inputOptions.onLog),this.pluginDriver.setChunkInformation(this.facadeChunkByModule);for(const e of t)e.generateExports(),e.inlineTransitiveImports();su("generate chunks",2),await ud(t,n,this.pluginDriver,this.outputOptions,this.inputOptions.onLog)}catch(e){throw await this.pluginDriver.hookParallel("renderError",[e]),e}return(e=>{const t=new Set,n=Object.values(e);for(const e of n)"asset"===e.type&&e.needsCodeReference&&t.add(e.fileName);for(const e of n)if("chunk"===e.type)for(const n of e.referencedFiles)t.has(n)&&t.delete(n);for(const n of t)delete e[n]})(n),nu("generate bundle",2),await this.pluginDriver.hookSeq("generateBundle",[this.outputOptions,n,e]),this.finaliseAssets(n),function(e){for(const[t,n]of Object.entries(e)){if(gd(t))return Bt(on(t));if("placeholder"!==n.type){const{fileName:e}=n;if(e!==t&&gd(e))return Bt(on(e))}}}(n),su("generate bundle",2),su("GENERATE",1),t}async addManualChunks(e){const t=new Map,n=await Promise.all(Object.entries(e).map(async([e,t])=>({alias:e,entries:await this.graph.moduleLoader.addAdditionalModules(t,!0)})));for(const{alias:e,entries:s}of n)for(const n of s)md(e,n,t);return t}assignManualChunks(e){const t=new Map,n={getModuleIds:()=>this.graph.modulesById.keys(),getModuleInfo:this.graph.getModuleInfo};for(const s of this.graph.modulesById.values())if(s instanceof cu){const i=e(s.id,n);"string"==typeof i&&md(i,s,t)}return t}finaliseAssets(e){if(this.outputOptions.validate)for(const t of Object.values(e))if("code"in t)try{Gc(t.code,{jsx:!1!==this.inputOptions.jsx})}catch(e){this.inputOptions.onLog(ft,nn(t,e))}this.pluginDriver.finaliseAssets()}async generateChunks(e,t){const{experimentalMinChunkSize:n,inlineDynamicImports:s,manualChunks:i,preserveModules:r,onlyExplicitManualChunks:o}=this.outputOptions,a="object"==typeof i?await this.addManualChunks(i):this.assignManualChunks(i),l=function({compact:e,generatedCode:{arrowFunctions:t,constBindings:n,objectShorthand:s,reservedNamesAsProps:i}}){const{_:r,n:o,s:a}=e?{_:"",n:"",s:""}:{_:" ",n:"\n",s:";"},l=n?"const":"var",c=(e,{isAsync:t,name:n})=>`${t?"async ":""}function${n?` ${n}`:""}${r}(${e.join(`,${r}`)})${r}`,u=t?(e,{isAsync:t,name:n})=>{const s=1===e.length;return`${n?`${l} ${n}${r}=${r}`:""}${t?`async${s?" ":r}`:""}${s?e[0]:`(${e.join(`,${r}`)})`}${r}=>${r}`}:c,d=(e,{functionReturn:n,lineBreakIndent:s,name:i})=>[`${u(e,{isAsync:!1,name:i})}${t?s?`${o}${s.base}${s.t}`:"":`{${s?`${o}${s.base}${s.t}`:r}${n?"return ":""}`}`,t?`${i?";":""}${s?`${o}${s.base}`:""}`:`${a}${s?`${o}${s.base}`:r}}`],h=i?e=>jn.test(e):e=>!Tn.has(e)&&jn.test(e);return{_:r,cnst:l,getDirectReturnFunction:d,getDirectReturnIifeLeft:(e,n,{needsArrowReturnParens:s,needsWrappedFunction:i})=>{const[r,o]=d(e,{functionReturn:!0,lineBreakIndent:null,name:null});return`${ed(`${r}${ed(n,t&&s)}${o}`,t||i)}(`},getFunctionIntro:u,getNonArrowFunctionIntro:c,getObject(e,{lineBreakIndent:t}){const n=t?`${o}${t.base}${t.t}`:r;return`{${e.map(([e,t])=>{if(null===e)return`${n}${t}`;const i=Gn(e);return e===t&&s&&e===i?n+e:`${n}${i}:${r}${t}`}).join(",")}${0===e.length?"":t?`${o}${t.base}`:r}}`},getPropertyAccess:e=>h(e)?`.${e}`:`[${JSON.stringify(e)}]`,n:o,s:a}}(this.outputOptions),c=function(e){const t=[];for(const n of e.values())n instanceof cu&&(n.isIncluded()||n.info.isEntry||n.includedDynamicImporters.length>0)&&t.push(n);return t}(this.graph.modulesById),u=function(e){if(0===e.length)return"/";if(1===e.length)return j(e[0]);const t=e.slice(1).reduce((e,t)=>{const n=t.split(/\/+|\\+/);let s;for(s=0;e[s]===n[s]&&s1?t.join("/"):"/"}(function(e,t){const n=[];for(const s of e)(s.info.isEntry||t)&&B(s.id)&&n.push(s.id);return n}(c,r)),d=function(e,t,n){const s=new Map;for(const i of e.values())i instanceof Wn&&s.set(i,new fo(i,t,n));return s}(this.graph.modulesById,this.outputOptions,u),h=s?[{alias:null,modules:c}]:r?c.map(e=>({alias:null,modules:[e]})):Fu(this.graph.entryModules,a,n,this.inputOptions.onLog,"function"==typeof i,o),p=new Array(h.length),f=new Map;let m=0;for(const{alias:n,modules:s}of h){Zu(s);const i=new Mu(s,this.inputOptions,this.outputOptions,this.unsetOptions,this.pluginDriver,this.graph.modulesById,f,d,this.facadeChunkByModule,this.includedNamespaces,n,t,e,u,l);p[m++]=i}for(const e of p)e.link();s||r||this.checkCircularChunks(p);const g=[];for(const e of p)g.push(...e.generateFacades());return[...p,...g]}checkCircularChunks(e){const t=new Set,n=new Map,s=(e,s)=>{if(n.has(e)){if(!t.has(e)){const t=[e.getChunkName()];let i=e.isManualChunk,r=s;for(;r!==e&&r;)t.push(r.getChunkName()),i&&=r.isManualChunk,r=n.get(r);t.push(t[0]),t.reverse(),this.inputOptions.onLog(ft,function(e,t){return{code:"CIRCULAR_CHUNK",ids:e,message:`Circular chunk: ${e.join(" -> ")}. ${t?"Please adjust the manual chunk logic for these chunks.":`Please consider disabling the "output.onlyExplicitManualChunks" option, as enabling it causes modules located between the modules included in the manual chunk "${e.at(-2)}" to be extracted into the separate chunk "${e.at(-1)}".`}`}}(t,i))}}else n.set(e,s),i(e)},i=e=>{for(const t of e.dependencies)t instanceof Mu&&s(t,e);t.add(e)};for(const t of e)n.has(t)||i(t)}}function md(e,t,n){const s=n.get(t);if("string"==typeof s&&s!==e)return Bt((i=t.id,r=e,o=s,{code:"INVALID_CHUNK",message:`Cannot assign "${xt(i)}" to the "${r}" chunk as it is already in the "${o}" chunk.`}));var i,r,o;n.set(t,e)}function gd(e){const t=function(...e){const t=e.join("/"),n=L.test(t[0]);return(n?"/":"")+(G(t.split(L),n)||(n?"":"."))}(e).replaceAll("\\","/");return".."===t||t.startsWith("../")||"."===t||B(t)}class yd extends Di{constructor(){super(),this.parent=null,this.variables.set("undefined",new lo)}findVariable(e){let t=this.variables.get(e);return t||(t=new Si(e),this.variables.set(e,t)),t}}async function bd(e,t,n,s,i,r,o,a,l,c,u){const d=await function(e,t,n,s,i,r,o,a,l){let c=null,u=null;if(i){c=new Set;for(const n of i)e===n.source&&t===n.importer&&c.add(n.plugin);u=(e,t)=>({...e,resolve:(e,n,{attributes:r,custom:o,isEntry:a,skipSelf:l,importerAttributes:c}=oe)=>(l??=!0,l&&-1!==i.findIndex(s=>s.plugin===t&&s.source===e&&s.importer===n)?Promise.resolve(null):s(e,n,o,a,r||ae,c,l?[...i,{importer:n,plugin:t,source:e}]:i))})}return n.hookFirstAndGetPlugin("resolveId",[e,t,{attributes:a,custom:r,importerAttributes:l,isEntry:o}],u,c)}(e,t,s,i,r,o,a,l,c);if(null!=d){const[e,t]=d;return"object"!=typeof e||e.resolvedBy?"string"==typeof e?{id:e,resolvedBy:t.name}:e:{...e,resolvedBy:t.name}}return void 0===t||B(e)||"."===e[0]?async function(e,t,n){return await Ed(e,t,n)??await Ed(e+".mjs",t,n)??await Ed(e+".js",t,n)}(t?W(j(t),e):W(e),n,u):null}async function Ed(e,t,n){try{const s=await n.lstat(e);if(!t&&s.isSymbolicLink())return await Ed(await n.realpath(e),t,n);if(t&&s.isSymbolicLink()||s.isFile()){const t=F(e);if((await n.readdir(j(e))).includes(t))return e}}catch{}}function xd(e){return 65279===e.charCodeAt(0)?xd(e.slice(1)):e}const Ad=(e,t,n=Pd)=>{const{onwarn:s,onLog:i}=e,r=Sd(n,s);if(i){const e=yt[t];return(t,n)=>i(t,$d(n),(t,n)=>{if("error"===t)return Bt(vd(n));yt[t]>=e&&r(t,vd(n))})}return r},Sd=(e,t)=>t?(n,s)=>{n===ft?t($d(s),t=>e(ft,vd(t))):e(n,s)}:e,$d=e=>(Object.defineProperty(e,"toString",{value:()=>e.message,writable:!0}),e),vd=e=>"string"==typeof e?{message:e}:"function"==typeof e?vd(e()):e,Pd=(e,{message:t})=>{switch(e){case ft:return console.warn(t);case gt:return console.debug(t);default:return console.info(t)}};function Id(e,t,n,s,i=/$./){const r=new Set(t),o=Object.keys(e).filter(e=>!(r.has(e)||i.test(e)));o.length>0&&s(ft,function(e,t,n){return{code:"UNKNOWN_OPTION",message:`Unknown ${e}: ${t.join(", ")}. Allowed options: ${n.join(", ")}`}}(n,o,[...r].sort()))}const wd={recommended:{annotations:!0,correctVarValueBeforeDeclaration:!1,manualPureFunctions:le,moduleSideEffects:()=>!0,propertyReadSideEffects:!0,tryCatchDeoptimization:!0,unknownGlobalSideEffects:!1},safest:{annotations:!0,correctVarValueBeforeDeclaration:!0,manualPureFunctions:le,moduleSideEffects:()=>!0,propertyReadSideEffects:!0,tryCatchDeoptimization:!0,unknownGlobalSideEffects:!0},smallest:{annotations:!0,correctVarValueBeforeDeclaration:!1,manualPureFunctions:le,moduleSideEffects:()=>!1,propertyReadSideEffects:!1,tryCatchDeoptimization:!1,unknownGlobalSideEffects:!1}},Nd={preserve:{factory:null,fragment:null,importSource:null,mode:"preserve"},"preserve-react":{factory:"React.createElement",fragment:"React.Fragment",importSource:"react",mode:"preserve"},react:{factory:"React.createElement",fragment:"React.Fragment",importSource:"react",mode:"classic"},"react-jsx":{factory:"React.createElement",importSource:"react",jsxImportSource:"react/jsx-runtime",mode:"automatic"}},kd={es2015:{arrowFunctions:!0,constBindings:!0,objectShorthand:!0,reservedNamesAsProps:!0,symbols:!0},es5:{arrowFunctions:!1,constBindings:!1,objectShorthand:!1,reservedNamesAsProps:!0,symbols:!1}},Cd=(e,t,n,s,i)=>{const r=e?.preset;if(r){const i=t[r];if(i)return{...i,...e};Bt(gn(`${n}.preset`,s,`valid values are ${bt(Object.keys(t))}`,r))}return((e,t,n,s)=>i=>{if("string"==typeof i){const r=e[i];if(r)return r;Bt(gn(t,n,`valid values are ${s}${bt(Object.keys(e))}. You can also supply an object for more fine-grained control`,i))}return(e=>e&&"object"==typeof e?e:{})(i)})(t,n,s,i)(e)},Rd=async e=>(await async function(e){do{e=(await Promise.all(e)).flat(1/0)}while(e.some(e=>e?.then));return e}([e])).filter(Boolean),Dd="at position ",Od="at output position ";const Md={delete:()=>!1,get(){},has:()=>!1,set(){}};function _d(e){return e.startsWith(Dd)||e.startsWith(Od)?Bt({code:"ANONYMOUS_PLUGIN_CACHE",message:"A plugin is trying to use the Rollup cache but is not declaring a plugin name or cacheKey."}):Bt({code:"DUPLICATE_PLUGIN_NAME",message:`The plugin name ${e} is being used twice in the same build. Plugin names must be distinct or provide a cacheKey (please post an issue to the plugin if you are a plugin user).`})}async function Ld(e,t,n,s){const i=t.id,r=[];let o=null===e.map?null:jc(e.map);const a=e.code;let l=e.ast;const c=[],u=[];let d=!1;const h=()=>d=!0;let p="",f=e.code;const m=e=>(t,n)=>{t=vd(t),n&&Vt(t,n,f,i),t.id=i,t.hook="transform",e(t)};let g;try{g=await n.hookReduceArg0("transform",[f,i,{attributes:t.info.attributes}],function(e,n,i){let o,a;if("string"==typeof n)o=n;else{if(!n||"object"!=typeof n)return e;if(t.updateOptions(n),null==n.code)return(n.map||n.ast)&&s.onLog(ft,function(e){return{code:"NO_TRANSFORM_MAP_OR_AST_WITHOUT_CODE",message:`The plugin "${e}" returned a "map" or "ast" without returning a "code". This will be ignored.`}}(i.name)),e;n.attributes&&Rn('Returning attributes from the "transform" hook is forbidden.',"plugin-development/#transform",!1,s),({code:o,map:a,ast:l}=n)}return null!==a&&r.push(jc("string"==typeof a?JSON.parse(a):a)||{missing:!0,plugin:i.name}),f=o,o},(e,t)=>{return p=t.name,{...e,addWatchFile(t){c.push(t),e.addWatchFile(t)},cache:d?e.cache:(l=e.cache,g=h,{delete:e=>(g(),l.delete(e)),get:e=>(g(),l.get(e)),has:e=>(g(),l.has(e)),set:(e,t)=>(g(),l.set(e,t))}),debug:m(e.debug),emitFile:e=>(u.push(e),n.emitFile(e)),error:(t,n)=>("string"==typeof t&&(t={message:t}),n&&Vt(t,n,f,i),t.id=i,t.hook="transform",e.error(t)),getCombinedSourcemap(){const e=function(e,t,n,s,i){return 0===s.length?n:jc({version:3,...id(e,t,n,s,sd(i)).traceMappings()})}(i,a,o,r,s.onLog);if(!e){return new C(a).generateMap({hires:!0,includeContent:!0,source:i})}return o!==e&&(o=e,r.length=0),new E({...e,sourcesContent:e.sourcesContent})},info:m(e.info),setAssetSource(){return this.error({code:"INVALID_SETASSETSOURCE",message:"setAssetSource cannot be called in transform for caching reasons. Use emitFile with a source, or call setAssetSource in another hook."})},warn:m(e.warn)};var l,g})}catch(e){return Bt(In(e,p,{hook:"transform",id:i}))}return!d&&u.length>0&&(t.transformFiles=u),{ast:l,code:g,customTransformCache:d,originalCode:a,originalSourcemap:o,safeVariableNames:null,sourcemapChain:r,transformDependencies:c}}const Td="resolveDependencies";class Bd{constructor(e,t,n,s){this.graph=e,this.modulesById=t,this.options=n,this.pluginDriver=s,this.implicitEntryModules=new Set,this.sortedEntryModules=[],this.entryModules=new Set,this.latestLoadModulesPromise=Promise.resolve(),this.moduleLoadPromises=new Map,this.modulesWithLoadedDependencies=new Set,this.resolveId=async(e,t,n,s,i,r,o=null)=>this.getResolvedIdWithDefaults(this.getNormalizedResolvedIdWithoutDefaults(!this.options.external(e,t,!1)&&await bd(e,t,this.options.preserveSymlinks,this.pluginDriver,this.resolveId,o,n,"boolean"==typeof s?s:!t,i,r,this.options.fs),t,e),i),this.hasModuleSideEffects=n.treeshake?n.treeshake.moduleSideEffects:()=>!0}async addAdditionalModules(e,t){const n=this.extendLoadModulesPromise(Promise.all(e.map(e=>this.loadEntryModule(e,!1,void 0,null,t,void 0))));return await this.awaitLoadModulesPromise(),n}async addEntryModules(e,t){const n=await this.extendLoadModulesPromise(Promise.all(e.map(({id:e,importer:t})=>this.loadEntryModule(e,!0,t,null,void 0,void 0))).then(n=>{let s=!1;for(const[i,r]of n.entries())r.isUserDefinedEntryPoint=r.isUserDefinedEntryPoint||t,Vd(r,e[i],t),this.entryModules.has(r)||(this.sortedEntryModules.push(r),this.entryModules.add(r),s=!0);return s&&this.sortedEntryModules.sort((e,t)=>e.id>t.id?1:-1),n}));return await this.awaitLoadModulesPromise(),{entryModules:this.sortedEntryModules,implicitEntryModules:[...this.implicitEntryModules],newEntryModules:n}}async emitChunk({fileName:e,id:t,importer:n,name:s,implicitlyLoadedAfterOneOf:i,preserveSignature:r}){const o={fileName:e||null,id:t,importer:n,name:s||null},a=i?await this.addEntryWithImplicitDependants(o,i):(await this.addEntryModules([o],!1)).newEntryModules[0];return null!=r&&(a.preserveSignature=r),a}async preloadModule(e){return(await this.fetchModule(this.getResolvedIdWithDefaults(e,ae),void 0,!1,!e.resolveDependencies||Td)).info}addEntryWithImplicitDependants(e,t){return this.extendLoadModulesPromise(this.loadEntryModule(e.id,!1,e.importer,null,void 0,void 0).then(async n=>{if(Vd(n,e,!1),!n.info.isEntry){const s=await Promise.all(t.map(t=>this.loadEntryModule(t,!1,e.importer,n.id,void 0,void 0)));if(!n.info.isEntry){this.implicitEntryModules.add(n);for(const e of s)n.implicitlyLoadedAfter.add(e);for(const e of n.implicitlyLoadedAfter)e.implicitlyLoadedBefore.add(n)}}return n}))}async addModuleSource(e,t,n){let s;try{s=await this.graph.fileOperationQueue.run(async()=>{const t=await this.pluginDriver.hookFirst("load",[e,{attributes:n.info.attributes}]);return null!==t?("object"==typeof t&&t.attributes&&Rn('Returning attributes from the "load" hook is forbidden.',"plugin-development/#load",!1,this.options),t):(this.graph.watchFiles[e]=!0,await this.options.fs.readFile(e,{encoding:"utf8"}))})}catch(n){let s=`Could not load ${e}`;throw t&&(s+=` (imported by ${xt(t)})`),s+=`: ${n.message}`,n.message=s,n}const i="string"==typeof s?{code:s}:null!=s&&"object"==typeof s&&"string"==typeof s.code?s:Bt(function(e){return{code:"BAD_LOADER",message:`Error loading "${xt(e)}": plugin load hook should return a string, a { code, map } object, or nothing/null.`}}(e));i.code=xd(i.code);const r=this.graph.cachedModules.get(e);if(!r||r.customTransformCache||r.originalCode!==i.code||await this.pluginDriver.hookFirst("shouldTransformCachedModule",[{ast:r.ast,attributes:r.attributes,code:r.code,id:r.id,meta:r.meta,moduleSideEffects:r.moduleSideEffects,resolvedSources:r.resolvedIds,syntheticNamedExports:r.syntheticNamedExports}]))n.updateOptions(i),await n.setSource(await Ld(i,n,this.pluginDriver,this.options));else{if(r.transformFiles)for(const e of r.transformFiles)this.pluginDriver.emitFile(e);await n.setSource(r)}}async awaitLoadModulesPromise(){let e;do{e=this.latestLoadModulesPromise,await e}while(e!==this.latestLoadModulesPromise)}extendLoadModulesPromise(e){return this.latestLoadModulesPromise=Promise.all([e,this.latestLoadModulesPromise]),this.latestLoadModulesPromise.catch(()=>{}),e}async fetchDynamicDependencies(e,t){const n=await Promise.all(t.map(t=>t.then(async([{argument:t,node:n},s])=>null===s?null:"string"==typeof s?(n.resolution=s,null):"source"!==n.phase||s.external?n.resolution=await this.fetchResolvedDependency(xt(s.id),e.id,s):Bt(xn("string"==typeof t?t:xt(s.id),e.id)))));for(const t of n)t&&(e.dynamicDependencies.add(t),t.dynamicImporters.push(e.id))}async fetchModule({attributes:e,id:t,meta:n,moduleSideEffects:s,syntheticNamedExports:i},r,o,a){const l=this.modulesById.get(t);if(l instanceof cu)return r&&Kc(e,l.info.attributes)&&this.options.onLog(ft,cn(l.info.attributes,e,t,r)),await this.handleExistingModule(l,o,a),l;if(l instanceof Wn)return Bt({code:"EXTERNAL_MODULES_CANNOT_BE_TRANSFORMED_TO_MODULES",message:`${l.id} is resolved as a module now, but it was an external module before. Please check whether there are conflicts in your Rollup options "external" and "manualChunks", manualChunks cannot include external modules.`});const c=new cu(this.graph,t,this.options,o,s,i,n,e);this.modulesById.set(t,c);const u=this.addModuleSource(t,r,c).then(()=>[this.getResolveStaticDependencyPromises(c),this.getResolveDynamicImportPromises(c),d]),d=jd(u).then(()=>this.pluginDriver.hookParallel("moduleParsed",[c.info]));d.catch(()=>{}),this.moduleLoadPromises.set(c,u);const h=await u;return a?a===Td&&await d:await this.fetchModuleDependencies(c,...h),c}async fetchModuleDependencies(e,t,n,s){this.modulesWithLoadedDependencies.has(e)||(this.modulesWithLoadedDependencies.add(e),await Promise.all([this.fetchStaticDependencies(e,t),this.fetchDynamicDependencies(e,n)]),e.linkImports(),await s)}fetchResolvedDependency(e,t,n){if(n.external){const{attributes:s,external:i,id:r,moduleSideEffects:o,meta:a}=n;let l=this.modulesById.get(r);if(l){if(!(l instanceof Wn))return Bt(function(e,t){return{code:"INVALID_EXTERNAL_ID",message:`"${e}" is imported as an external by "${xt(t)}", but is already an existing non-external module id.`}}(e,t));Kc(l.info.attributes,s)&&this.options.onLog(ft,cn(l.info.attributes,s,e,t))}else l=new Wn(this.options,r,o,a,"absolute"!==i&&B(r),s),this.modulesById.set(r,l);return Promise.resolve(l)}return this.fetchModule(n,t,!1,!1)}async fetchStaticDependencies(e,t){for(const n of await Promise.all(t.map(t=>t.then(([t,n])=>e.sourcePhaseSources.has(t)&&!n.external?Bt(xn(t,e.id)):this.fetchResolvedDependency(t,e.id,n)))))e.dependencies.add(n),n.importers.push(e.id);if(!this.options.treeshake||"no-treeshake"===e.info.moduleSideEffects)for(const t of e.dependencies)t instanceof cu&&(t.importedFromNotTreeshaken=!0)}getNormalizedResolvedIdWithoutDefaults(e,t,n){const{makeAbsoluteExternalsRelative:s}=this.options;if(e){if("object"==typeof e){const i=e.external||this.options.external(e.id,t,!0);return{...e,external:i&&("relative"===i||!B(e.id)||!0===i&&Fd(e.id,n,s)||"absolute")}}const i=this.options.external(e,t,!0);return{external:i&&(Fd(e,n,s)||"absolute"),id:i&&s?zd(e,t):e}}const i=s?zd(n,t):n;return!1===e||this.options.external(i,t,!0)?{external:Fd(i,n,s)||"absolute",id:i}:null}getResolveDynamicImportPromises(e){return e.dynamicImports.map(async t=>{const n=await this.resolveDynamicImport(e,t.argument,e.id,Wc(t.node));return n&&"string"!=typeof n?(t.node.shouldIncludeDynamicAttributes=!!n.external,t.id=n.id):t.node.shouldIncludeDynamicAttributes=!0,[t,n]})}getResolveStaticDependencyPromises(e){return Array.from(e.sourcesWithAttributes,async([t,n])=>[t,e.resolvedIds[t]=e.resolvedIds[t]||this.handleInvalidResolvedId(await this.resolveId(t,e.id,ae,!1,n,e.info.attributes),t,e.id,n)])}getResolvedIdWithDefaults(e,t){if(!e)return null;const n=e.external||!1;return{attributes:e.attributes||t,external:n,id:e.id,meta:e.meta||{},moduleSideEffects:e.moduleSideEffects??this.hasModuleSideEffects(e.id,!!n),resolvedBy:e.resolvedBy??"rollup",syntheticNamedExports:e.syntheticNamedExports??!1}}async handleExistingModule(e,t,n){const s=this.moduleLoadPromises.get(e);if(n)return n===Td?jd(s):s;if(t){e.info.isEntry=!0,this.implicitEntryModules.delete(e);for(const t of e.implicitlyLoadedAfter)t.implicitlyLoadedBefore.delete(e);e.implicitlyLoadedAfter.clear()}return this.fetchModuleDependencies(e,...await s)}handleInvalidResolvedId(e,t,n,s){return null===e?z(t)?Bt(function(e,t){return{code:Qt,exporter:e,id:t,message:`Could not resolve "${e}" from "${xt(t)}"`}}(t,n)):(this.options.onLog(ft,function(e,t){return{code:Qt,exporter:e,id:t,message:`"${e}" is imported by "${xt(t)}", but could not be resolved – treating it as an external dependency.`,url:vt("troubleshooting/#warning-treating-module-as-external-dependency")}}(t,n)),{attributes:s,external:!0,id:t,meta:{},moduleSideEffects:this.hasModuleSideEffects(t,!0),resolvedBy:"rollup",syntheticNamedExports:!1}):(e.external&&e.syntheticNamedExports&&this.options.onLog(ft,function(e,t){return{code:"EXTERNAL_SYNTHETIC_EXPORTS",exporter:e,message:`External "${e}" cannot have "syntheticNamedExports" enabled (imported by "${xt(t)}").`}}(t,n)),e)}async loadEntryModule(e,t,n,s,i=!1,r){const o=await bd(e,n,this.options.preserveSymlinks,this.pluginDriver,this.resolveId,null,ae,!0,ae,r,this.options.fs);if(null==o)return Bt(null===s?function(e){return{code:Zt,message:`Could not resolve entry module "${xt(e)}".`}}(e):function(e,t){return{code:qt,message:`Module "${xt(e)}" that should be implicitly loaded before "${xt(t)}" could not be resolved.`}}(e,s));const a="object"==typeof o&&o.external;return!1===o||a?Bt(null===s?a&&i?{code:"EXTERNAL_MODULES_CANNOT_BE_INCLUDED_IN_MANUAL_CHUNKS",message:`"${e}" cannot be included in manualChunks because it is resolved as an external module by the "external" option or plugins.`}:function(e){return{code:Zt,message:`Entry module "${xt(e)}" cannot be external.`}}(e):function(e,t){return{code:qt,message:`Module "${xt(e)}" that should be implicitly loaded before "${xt(t)}" cannot be external.`}}(e,s)):this.fetchModule(this.getResolvedIdWithDefaults("object"==typeof o?o:{id:o},ae),void 0,t,!1)}async resolveDynamicImport(e,t,n,s){const i=await this.pluginDriver.hookFirst("resolveDynamicImport",[t,n,{attributes:s,importerAttributes:e.info.attributes}]);if("string"!=typeof t)return"string"==typeof i?i:i?this.getResolvedIdWithDefaults(i,s):null;if(null==i){const i=e.resolvedIds[t];return i?(Kc(i.attributes,s)&&this.options.onLog(ft,cn(i.attributes,s,t,n)),i):e.resolvedIds[t]=this.handleInvalidResolvedId(await this.resolveId(t,e.id,ae,!1,s,e.info.attributes),t,e.id,s)}return this.handleInvalidResolvedId(this.getResolvedIdWithDefaults(this.getNormalizedResolvedIdWithoutDefaults(i,n,t),s),t,n,s)}}function zd(e,t){return z(e)?t?W(t,"..",e):W(e):e}function Vd(e,{fileName:t,name:n},s){null!==t?e.chunkFileNames.add(t):null!==n&&(e.chunkNames.push({isUserDefined:s,name:n}),e.chunkNames.sort((e,t)=>e.name>t.name?1:-1))}function Fd(e,t,n){return!0===n||"ifRelativeSource"===n&&z(t)||!B(e)}async function jd(e){const[t,n]=await e;return Promise.all([...t,...n])}function Ud(e,t,n,s,i,r,o,a,l){const c=o.sanitizeFileName(e||"asset");return Cu(ku("function"==typeof o.assetFileNames?o.assetFileNames({get name(){return Rn('Accessing the "name" property of emitted assets when generating the file name is deprecated. Use the "names" property instead.',Tt,!1,l),e},names:t,get originalFileName(){return Rn('Accessing the "originalFileName" property of emitted assets when generating the file name is deprecated. Use the "originalFileNames" property instead.',Tt,!1,l),s},originalFileNames:i,source:n,type:"asset"}):o.assetFileNames,"output.assetFileNames",{ext:()=>U(c).slice(1),extname:()=>U(c),hash:e=>r.slice(0,Math.min(Math.max(0,e||8),21)),name:()=>c.slice(0,Math.max(0,c.length-U(c).length))}),a)}function Gd(e,{bundle:t},n){t[wu].has(e.toLowerCase())?n(ft,function(e){return{code:"FILE_NAME_CONFLICT",message:`The emitted file "${e}" overwrites a previously emitted file of the same name.`}}(e)):t[e]=Nu}const Hd=new Set(["chunk","asset","prebuilt-chunk"]);function Wd(e,t,n){if(!("string"==typeof e||e instanceof Uint8Array)){const e=t.fileName||t.name||n;return Bt(Cn(`Could not set source for ${"string"==typeof e?`asset "${e}"`:"unnamed asset"}, asset source needs to be a string, Uint8Array or Buffer.`))}return e}class qd{constructor(e,t,n){this.graph=e,this.options=t,this.facadeChunkByModule=null,this.nextIdBase=1,this.output=null,this.outputFileEmitters=[],this.emitFile=e=>function(e){return Boolean(e&&Hd.has(e.type))}(e)?"prebuilt-chunk"===e.type?this.emitPrebuiltChunk(e):function(e){const t=e.fileName||e.name;return!t||"string"==typeof t&&!At(t)}(e)?"chunk"===e.type?this.emitChunk(e):this.emitAsset(e):Bt(Cn(`The "fileName" or "name" properties of emitted chunks and assets must be strings that are neither absolute nor relative paths, received "${e.fileName||e.name}".`)):Bt(Cn(`Emitted files must be of type "asset", "chunk" or "prebuilt-chunk", received "${e&&e.type}".`)),this.finaliseAssets=()=>{for(const[e,t]of this.filesByReferenceId)if("asset"===t.type&&"string"!=typeof t.fileName)return Bt(en(t.name||e))},this.getFileName=e=>{const t=this.filesByReferenceId.get(e);return t?"chunk"===t.type?(n=t,s=this.facadeChunkByModule,n.fileName?n.fileName:s?s.get(n.module).getFileName():Bt({code:"CHUNK_NOT_GENERATED",message:`Plugin error - Unable to get file name for emitted chunk "${n.fileName||n.name}". You can only get file names once chunks have been generated after the "renderStart" hook.`})):"prebuilt-chunk"===t.type?t.fileName:function(e,t){return"string"!=typeof e.fileName?Bt({code:"ASSET_NOT_FINALISED",message:`Plugin error - Unable to get file name for asset "${e.name||t}". Ensure that the source is set and that generate is called first. If you reference assets via import.meta.ROLLUP_FILE_URL_, you need to either have set their source after "renderStart" or need to provide an explicit "fileName" when emitting them.`}):e.fileName}(t,e):Bt({code:"FILE_NOT_FOUND",message:`Plugin error - Unable to get file name for unknown file "${e}".`});var n,s},this.setAssetSource=(e,t)=>{const n=this.filesByReferenceId.get(e);if(!n)return Bt({code:"ASSET_NOT_FOUND",message:`Plugin error - Unable to set the source for unknown asset "${e}".`});if("asset"!==n.type)return Bt(Cn(`Asset sources can only be set for emitted assets but "${e}" is an emitted chunk.`));if(void 0!==n.source)return Bt({code:"ASSET_SOURCE_ALREADY_SET",message:`Unable to set the source for asset "${n.name||e}", source already set.`});const s=Wd(t,n,e);if(this.output)this.finalizeAdditionalAsset(n,s,this.output);else{n.source=s;for(const e of this.outputFileEmitters)e.finalizeAdditionalAsset(n,s,e.output)}},this.setChunkInformation=e=>{this.facadeChunkByModule=e},this.setOutputBundle=(e,t)=>{const n=ad[t.hashCharacters],s=this.output={bundle:e,fileNamesBySourceHash:new Map,getHash:n,outputOptions:t};for(const e of this.filesByReferenceId.values())e.fileName&&Gd(e.fileName,s,this.options.onLog);const i=new Map;for(const e of this.filesByReferenceId.values())if("asset"===e.type&&void 0!==e.source)if(e.fileName)this.finalizeAdditionalAsset(e,e.source,s);else{ue(i,n(e.source),he).push(e)}else"prebuilt-chunk"===e.type&&(this.output.bundle[e.fileName]=this.createPrebuiltChunk(e));for(const[e,t]of i)this.finalizeAssetsWithSameSource(t,e,s)},this.filesByReferenceId=n?new Map(n.filesByReferenceId):new Map,n?.addOutputFileEmitter(this)}addOutputFileEmitter(e){this.outputFileEmitters.push(e)}assignReferenceId(e,t){let n=t;do{n=od(n).slice(0,8).replaceAll("-","$")}while(this.filesByReferenceId.has(n)||this.outputFileEmitters.some(({filesByReferenceId:e})=>e.has(n)));e.referenceId=n,this.filesByReferenceId.set(n,e);for(const{filesByReferenceId:t}of this.outputFileEmitters)t.set(n,e);return n}createPrebuiltChunk(e){return{code:e.code,dynamicImports:[],exports:e.exports||[],facadeModuleId:null,fileName:e.fileName,implicitlyLoadedBefore:[],importedBindings:{},imports:[],isDynamicEntry:!1,isEntry:!1,isImplicitEntry:!1,map:e.map||null,moduleIds:[],modules:{},name:e.fileName,preliminaryFileName:e.fileName,referencedFiles:[],sourcemapFileName:e.sourcemapFileName||null,type:"chunk"}}emitAsset(e){const t=void 0===e.source?void 0:Wd(e.source,e,null),n=e.originalFileName||null;"string"==typeof n&&(this.graph.watchFiles[n]=!0);const s={fileName:e.fileName,name:e.name,needsCodeReference:!!e.needsCodeReference,originalFileName:n,referenceId:"",source:t,type:"asset"},i=this.assignReferenceId(s,e.fileName||e.name||String(this.nextIdBase++));if(this.output)this.emitAssetWithReferenceId(s,this.output);else for(const e of this.outputFileEmitters)e.emitAssetWithReferenceId(s,e.output);return i}emitAssetWithReferenceId(e,t){const{fileName:n,source:s}=e;n&&Gd(n,t,this.options.onLog),void 0!==s&&this.finalizeAdditionalAsset(e,s,t)}emitChunk(e){if(this.graph.phase>zc.LOAD_AND_PARSE)return Bt({code:"INVALID_ROLLUP_PHASE",message:"Cannot emit chunks after module loading has finished."});if("string"!=typeof e.id)return Bt(Cn(`Emitted chunks need to have a valid string id, received "${e.id}"`));const t={fileName:e.fileName,module:null,name:e.name||e.id,referenceId:"",type:"chunk"};return this.graph.moduleLoader.emitChunk(e).then(e=>t.module=e).catch(()=>{}),this.assignReferenceId(t,e.id)}emitPrebuiltChunk(e){if("string"!=typeof e.code)return Bt(Cn(`Emitted prebuilt chunks need to have a valid string code, received "${e.code}".`));if("string"!=typeof e.fileName||At(e.fileName))return Bt(Cn(`The "fileName" property of emitted prebuilt chunks must be strings that are neither absolute nor relative paths, received "${e.fileName}".`));const t={code:e.code,exports:e.exports,fileName:e.fileName,map:e.map,referenceId:"",type:"prebuilt-chunk"},n=this.assignReferenceId(t,t.fileName);return this.output&&(this.output.bundle[t.fileName]=this.createPrebuiltChunk(t)),n}finalizeAdditionalAsset(e,t,{bundle:n,fileNamesBySourceHash:s,getHash:i,outputOptions:r}){let{fileName:o,name:a,needsCodeReference:l,originalFileName:c,referenceId:u}=e;if(!o){const e=i(t);o=s.get(e),o||(o=Ud(a,a?[a]:[],t,c,c?[c]:[],e,r,n,this.options),s.set(e,o))}const d={...e,fileName:o,source:t};this.filesByReferenceId.set(u,d);const h=n[o];if("asset"===h?.type)h.needsCodeReference&&=l,a&&h.names.push(a),c&&h.originalFileNames.push(c);else{const{options:e}=this;n[o]={fileName:o,get name(){return Rn('Accessing the "name" property of emitted assets in the bundle is deprecated. Use the "names" property instead.',Tt,!1,e),a},names:a?[a]:[],needsCodeReference:l,get originalFileName(){return Rn('Accessing the "originalFileName" property of emitted assets in the bundle is deprecated. Use the "originalFileNames" property instead.',Tt,!1,e),c},originalFileNames:c?[c]:[],source:t,type:"asset"}}}finalizeAssetsWithSameSource(e,t,{bundle:n,fileNamesBySourceHash:s,outputOptions:i}){const{names:r,originalFileNames:o}=function(e){const t=[],n=[];for(const{name:s,originalFileName:i}of e)"string"==typeof s&&t.push(s),i&&n.push(i);return n.sort(),t.sort((e,t)=>e.length-t.length||(e>t?1:e===t?0:-1)),{names:t,originalFileNames:n}}(e);let a,l="",c=!0;for(const s of e){c&&=s.needsCodeReference;const e=Ud(s.name,r,s.source,s.originalFileName,o,t,i,n,this.options);(!l||e.length{null!=r&&n(ft,{code:"INVALID_LOG_POSITION",message:`Plugin "${s}" tried to add a file position to a log or warning. This is only supported in the "transform" hook at the moment and will be ignored.`}),(i=vd(i)).code&&!i.pluginCode&&(i.pluginCode=i.code),i.code=t,i.plugin=s,n(e,i)}}const Xd=e;function Jd(e,t,n,s,i,r){const{logLevel:o,onLog:a}=s;let l,c=!0;if("string"!=typeof e.cacheKey&&(e.name.startsWith(Dd)||e.name.startsWith(Od)||r.has(e.name)?c=!1:r.add(e.name)),t)if(c){const n=e.cacheKey||e.name;d=t[n]||(t[n]=Object.create(null)),l={delete:e=>delete d[e],get(e){const t=d[e];if(t)return t[0]=0,t[1]},has(e){const t=d[e];return!!t&&(t[0]=0,!0)},set(e,t){d[e]=[0,t]}}}else u=e.name,l={delete:()=>_d(u),get:()=>_d(u),has:()=>_d(u),set:()=>_d(u)};else l=Md;var u,d;return{addWatchFile(e){n.watchFiles[e]=!0},cache:l,debug:Kd(gt,"PLUGIN_LOG",a,e.name,o),emitFile:i.emitFile.bind(i),error:t=>Bt(In(vd(t),e.name)),fs:s.fs,getFileName:i.getFileName,getModuleIds:()=>n.modulesById.keys(),getModuleInfo:n.getModuleInfo,getWatchFiles:()=>Object.keys(n.watchFiles),info:Kd(mt,"PLUGIN_LOG",a,e.name,o),load:e=>n.moduleLoader.preloadModule(e),meta:{rollupVersion:Xd,watchMode:n.watchMode},parse:Gc,resolve:(t,s,{attributes:i,custom:r,isEntry:o,skipSelf:a,importerAttributes:l}=oe)=>(a??=!0,n.moduleLoader.resolveId(t,s,r,o,i||ae,l,a?[{importer:s,plugin:e,source:t}]:null)),setAssetSource:i.setAssetSource,warn:Kd(ft,"PLUGIN_WARNING",a,e.name,o)}}function Yd(e){return Array.isArray(e)?e.filter(Boolean):e?[e]:[]}function Zd(e){if(e instanceof RegExp)return t=>{const n=V(t),s=e.test(n);return e.lastIndex=0,s};const t=process.cwd(),n=function(e,t){return e.startsWith("**")||B(e)?V(e):V(W(t,e))}(e,t),s=oa(n,{dot:!0});return e=>{const t=V(e);return s(t)}}function Qd(e){return e instanceof RegExp?t=>{const n=e.test(t);return e.lastIndex=0,n}:t=>t.includes(e)}function eh(e,t){if(e||t)return n=>!e?.some(e=>e(n))&&(!!t?.some(e=>e(n))||!(t&&t.length>0))}function th(e){return"string"==typeof e||e instanceof RegExp?{include:[e]}:Array.isArray(e)?{include:e}:{exclude:e.exclude?Yd(e.exclude):void 0,include:e.include?Yd(e.include):void 0}}function nh(e){if(!e)return;const{exclude:t,include:n}=th(e),s=t?.map(Zd),i=n?.map(Zd);return eh(s,i)}function sh(e,t){if(!e&&!t)return;const n=nh(e),s=function(e){if(!e)return;const{exclude:t,include:n}=th(e),s=t?.map(Qd),i=n?.map(Qd);return eh(s,i)}(t);return(e,t)=>{let i=!0;return n&&(i&&=n(e)),!!i&&(s&&(i&&=s(t)),i)}}const ih=Object.keys({buildEnd:1,buildStart:1,closeBundle:1,closeWatcher:1,load:1,moduleParsed:1,onLog:1,options:1,resolveDynamicImport:1,resolveId:1,shouldTransformCachedModule:1,transform:1,watchChange:1});class rh{constructor(e,t,n,s,i){this.graph=e,this.options=t,this.pluginCache=s,this.sortedPlugins=new Map,this.unfulfilledActions=new Set,this.compiledPluginFilters={idOnlyFilter:new WeakMap,transformFilter:new WeakMap},this.fileEmitter=new qd(e,t,i&&i.fileEmitter),this.emitFile=this.fileEmitter.emitFile.bind(this.fileEmitter),this.getFileName=this.fileEmitter.getFileName.bind(this.fileEmitter),this.finaliseAssets=this.fileEmitter.finaliseAssets.bind(this.fileEmitter),this.setChunkInformation=this.fileEmitter.setChunkInformation.bind(this.fileEmitter),this.setOutputBundle=this.fileEmitter.setOutputBundle.bind(this.fileEmitter),this.plugins=[...i?i.plugins:[],...n];const r=new Set;if(this.pluginContexts=new Map(this.plugins.map(n=>[n,Jd(n,s,e,t,this.fileEmitter,r)])),i)for(const e of n)for(const n of ih)n in e&&t.onLog(ft,hn(e.name,n))}createOutputPluginDriver(e){return new rh(this.graph,this.options,e,this.pluginCache,this)}getUnfulfilledHookActions(){return this.unfulfilledActions}hookFirst(e,t,n,s){return this.hookFirstAndGetPlugin(e,t,n,s).then(e=>e&&e[0])}async hookFirstAndGetPlugin(e,t,n,s){for(const i of this.getSortedPlugins(e)){if(s?.has(i))continue;const r=await this.runHook(e,t,i,n);if(null!=r)return[r,i]}return null}hookFirstSync(e,t,n){for(const s of this.getSortedPlugins(e)){const i=this.runHookSync(e,t,s,n);if(null!=i)return i}return null}async hookParallel(e,t,n){const s=[];for(const i of this.getSortedPlugins(e))i[e].sequential?(await Promise.all(s),s.length=0,await this.runHook(e,t,i,n)):s.push(this.runHook(e,t,i,n));await Promise.all(s)}hookReduceArg0(e,[t,...n],s,i){let r=Promise.resolve(t);for(const t of this.getSortedPlugins(e))r=r.then(r=>this.runHook(e,[r,...n],t,i).then(e=>s.call(this.pluginContexts.get(t),r,e,t)));return r}hookReduceArg0Sync(e,[t,...n],s,i){for(const r of this.getSortedPlugins(e)){const o=[t,...n],a=this.runHookSync(e,o,r,i);t=s.call(this.pluginContexts.get(r),t,a,r)}return t}async hookReduceValue(e,t,n,s){const i=[],r=[];for(const t of this.getSortedPlugins(e,lh))t[e].sequential?(i.push(...await Promise.all(r)),r.length=0,i.push(await this.runHook(e,n,t))):r.push(this.runHook(e,n,t));return i.push(...await Promise.all(r)),i.reduce(s,await t)}hookReduceValueSync(e,t,n,s,i){let r=t;for(const t of this.getSortedPlugins(e)){const o=this.runHookSync(e,n,t,i);r=s.call(this.pluginContexts.get(t),r,o,t)}return r}hookSeq(e,t,n){let s=Promise.resolve();for(const i of this.getSortedPlugins(e))s=s.then(()=>this.runHook(e,t,i,n));return s.then(ch)}getSortedPlugins(e,t){return ue(this.sortedPlugins,e,()=>oh(e,this.plugins,t))}runHook(e,t,n,s){const i=n[e],r="object"==typeof i?i.handler:i;if("object"==typeof i&&"filter"in i&&i.filter)if("transform"===e){const e=i.filter,n=t,s=ue(this.compiledPluginFilters.transformFilter,e,()=>sh(e.id,e.code));if(s&&!s(n[1],n[0]))return Promise.resolve()}else if("resolveId"===e||"load"===e){const e=i.filter,n=t,s=ue(this.compiledPluginFilters.idOnlyFilter,e,()=>function(e){const t=nh(e);return t?e=>!!t(e):void 0}(e.id));if(s&&!s(n[0]))return Promise.resolve()}let o=this.pluginContexts.get(n);s&&(o=s(o,n));let a=null;return Promise.resolve().then(()=>{if("function"!=typeof r)return r;const s=r.apply(o,t);return s?.then?(a=[n.name,e,t],this.unfulfilledActions.add(a),Promise.resolve(s).then(e=>(this.unfulfilledActions.delete(a),e))):s}).catch(t=>(null!==a&&this.unfulfilledActions.delete(a),Bt(In(t,n.name,{hook:e}))))}runHookSync(e,t,n,s){const i=n[e],r="object"==typeof i?i.handler:i;let o=this.pluginContexts.get(n);s&&(o=s(o,n));try{return r.apply(o,t)}catch(t){return Bt(In(t,n.name,{hook:e}))}}}function oh(e,t,n=ah){const s=[],i=[],r=[];for(const o of t){const t=o[e];if(t){if("object"==typeof t){if(n(t.handler,e,o),"pre"===t.order){s.push(o);continue}if("post"===t.order){r.push(o);continue}}else n(t,e,o);i.push(o)}}return[...s,...i,...r]}function ah(e,t,n){"function"!=typeof e&&Bt(function(e,t){return{code:Ht,hook:e,message:`Error running plugin hook "${e}" for plugin "${t}", expected a function hook or an object with a "handler" function.`,plugin:t}}(t,n.name))}function lh(e,t,n){if("string"!=typeof e&&"function"!=typeof e)return Bt(function(e,t){return{code:Ht,hook:e,message:`Error running plugin hook "${e}" for plugin "${t}", expected a string, a function hook or an object with a "handler" string or function.`,plugin:t}}(t,n.name))}function ch(){}class uh{constructor(e){this.maxParallel=e,this.queue=[],this.workerCount=0}run(e){return new Promise((t,n)=>{this.queue.push({reject:n,resolve:t,task:e}),this.work()})}async work(){if(this.workerCount>=this.maxParallel)return;let e;for(this.workerCount++;e=this.queue.shift();){const{reject:t,resolve:n,task:s}=e;try{n(await s())}catch(e){t(e)}}this.workerCount--}}class dh{constructor(e,t){if(this.options=e,this.astLru=function(e){var t,n,s,i=e;function r(e,r){++t>i&&(s=n,o(1),++t),n[e]=r}function o(e){t=0,n=Object.create(null),e||(s=Object.create(null))}return o(),{clear:o,has:function(e){return void 0!==n[e]||void 0!==s[e]},get:function(e){var t=n[e];return void 0!==t?t:void 0!==(t=s[e])?(r(e,t),t):void 0},set:function(e,t){void 0!==n[e]?n[e]=t:r(e,t)}}}(5),this.cachedModules=new Map,this.deoptimizationTracker=new Re,this.entryModules=[],this.modulesById=new Map,this.needsTreeshakingPass=!1,this.newlyIncludedVariableInits=new Set,this.phase=zc.LOAD_AND_PARSE,this.scope=new yd,this.watchFiles=Object.create(null),this.watchMode=!1,this.externalModules=[],this.implicitEntryModules=[],this.modules=[],this.getModuleInfo=e=>{const t=this.modulesById.get(e);return t?t.info:null},!1!==e.cache){if(e.cache?.modules)for(const t of e.cache.modules)this.cachedModules.set(t.id,t);this.pluginCache=e.cache?.plugins||Object.create(null);for(const e in this.pluginCache){const t=this.pluginCache[e];for(const e of Object.values(t))e[0]++}}if(t){this.watchMode=!0;const e=(...e)=>this.pluginDriver.hookParallel("watchChange",e),n=()=>this.pluginDriver.hookParallel("closeWatcher",[]);t.onCurrentRun("change",e),t.onCurrentRun("close",n)}this.pluginDriver=new rh(this,e,e.plugins,this.pluginCache),this.moduleLoader=new Bd(this,this.modulesById,this.options,this.pluginDriver),this.fileOperationQueue=new uh(e.maxParallelFileOps),this.pureFunctions=(({treeshake:e})=>{const t=Object.create(null);for(const n of e?e.manualPureFunctions:[]){let e=t;for(const t of n.split("."))e=e[t]||=Object.create(null);e[Dn]=!0}return t})(e)}async build(){nu("generate module graph",2),await this.generateModuleGraph(),su("generate module graph",2),nu("sort and bind modules",2),this.phase=zc.ANALYSE,this.sortAndBindModules(),su("sort and bind modules",2),nu("mark included statements",2),this.includeStatements(),su("mark included statements",2),this.phase=zc.GENERATE}getCache(){for(const e in this.pluginCache){const t=this.pluginCache[e];let n=!0;for(const[e,s]of Object.entries(t))s[0]>=this.options.experimentalCacheExpiry?delete t[e]:n=!1;n&&delete this.pluginCache[e]}return{modules:this.modules.map(e=>e.toJSON()),plugins:this.pluginCache}}async generateModuleGraph(){var e;if(({entryModules:this.entryModules,implicitEntryModules:this.implicitEntryModules}=await this.moduleLoader.addEntryModules((e=this.options.input,Array.isArray(e)?e.map(e=>({fileName:null,id:e,implicitlyLoadedAfter:[],importer:void 0,name:null})):Object.entries(e).map(([e,t])=>({fileName:null,id:t,implicitlyLoadedAfter:[],importer:void 0,name:e}))),!0)),0===this.entryModules.length)throw new Error("You must supply options.input to rollup");for(const e of this.modulesById.values())e.cacheInfoGetters(),e instanceof cu?this.modules.push(e):this.externalModules.push(e)}includeStatements(){const e=[...this.entryModules,...this.implicitEntryModules];for(const t of e)qn(t);if(this.options.treeshake){let t=1;this.newlyIncludedVariableInits.clear();do{nu(`treeshaking pass ${t}`,3),this.needsTreeshakingPass=!1;for(const e of this.modules)if(e.isExecuted){e.hasTreeShakingPassStarted=!0,"no-treeshake"===e.info.moduleSideEffects?e.includeAllInBundle():e.include();for(const e of this.newlyIncludedVariableInits)this.newlyIncludedVariableInits.delete(e),e.include(ze(),!1)}if(1===t)for(const t of e)!1!==t.preserveSignature&&(t.includeAllExports(),this.needsTreeshakingPass=!0);su("treeshaking pass "+t++,3)}while(this.needsTreeshakingPass)}else for(const e of this.modules)e.includeAllInBundle();for(const e of this.externalModules)e.warnUnusedImports();for(const e of this.implicitEntryModules)for(const t of e.implicitlyLoadedAfter)t.info.isEntry||t.isIncluded()||Bt(En(t))}sortAndBindModules(){const{orderedModules:e,cyclePaths:t}=Qu(this.entryModules);for(const e of t)this.options.onLog(ft,sn(e));this.modules=e;for(const e of this.modules)e.bindReferences();this.warnForMissingExports()}warnForMissingExports(){for(const e of this.modules)for(const t of e.importDescriptions.values())if("*"!==t.name&&"source"!==t.phase){const[n,s]=t.module.getVariableForExportName(t.name,{importChain:[e.id]});n||e.log(ft,bn(t.name,e.id,t.module.id,!!s?.missingButExportExists),t.start)}}}function hh(e,t){return t()}const ph=e;function fh(e,t,n,s){e=oh("onLog",e);const i=yt[s],r=(s,o,a=ce)=>{jt(o);if(!(yt[s]yt[e]r(e,vd(n),new Set(a).add(t));if(!1===("handler"in e?e.handler:e).call({debug:l(gt),error:e=>Bt(vd(e)),info:l(mt),meta:{rollupVersion:ph,watchMode:n},warn:l(ft)},s,o))return}t(s,o)}};return r}const mh=e=>()=>Bt(function(e){return{code:"NO_FS_IN_BROWSER",message:`Cannot access the file system (via "${e}") when using the browser build of Rollup. Make sure you supply a plugin with custom resolveId and load hooks to Rollup.`,url:vt("plugin-development/#a-simple-example")}}(e)),gh=mh("fs.appendFile"),yh=mh("fs.copyFile"),bh=mh("fs.mkdir"),Eh=mh("fs.mkdtemp"),xh=mh("fs.readdir"),Ah=mh("fs.readFile"),Sh=mh("fs.realpath"),$h=mh("fs.rename"),vh=mh("fs.rmdir"),Ph=mh("fs.stat"),Ih=mh("fs.lstat"),wh=mh("fs.unlink"),Nh=mh("fs.writeFile");var kh=Object.freeze({__proto__:null,appendFile:gh,copyFile:yh,lstat:Ih,mkdir:bh,mkdtemp:Eh,readFile:Ah,readdir:xh,realpath:Sh,rename:$h,rmdir:vh,stat:Ph,unlink:wh,writeFile:Nh});const Ch=e=>!0===e.cache?void 0:e.cache?.cache||e.cache,Rh=e=>{if(!0===e)return()=>!0;if("function"==typeof e)return(t,...n)=>"\0"!==t[0]&&e(t,...n)||!1;if(e){const t=new Set,n=[];for(const s of Yd(e))s instanceof RegExp?n.push(s):t.add(s);return(e,...s)=>t.has(e)||n.some(t=>t.test(e))}return()=>!1},Dh=e=>{const t=e.input;return null==t?[]:"string"==typeof t?[t]:t},Oh=e=>{const t=e.jsx;if(!t)return!1;const n=Cd(t,Nd,"jsx",It,"false, "),{factory:s,importSource:i,mode:r}=n;switch(r){case"automatic":return{factory:s||"React.createElement",importSource:i||"react",jsxImportSource:n.jsxImportSource||"react/jsx-runtime",mode:"automatic"};case"preserve":return!i||s||n.fragment||Bt(gn("jsx",It,"when preserving JSX and specifying an importSource, you also need to specify a factory or fragment")),{factory:s||null,fragment:n.fragment||null,importSource:i||null,mode:"preserve"};default:return r&&"classic"!==r&&Bt(gn("jsx.mode",It,'mode must be "automatic", "classic" or "preserve"',r)),{factory:s||"React.createElement",fragment:n.fragment||"React.Fragment",importSource:i||null,mode:"classic"}}},Mh=e=>{const t=e.maxParallelFileOps;return"number"==typeof t?t<=0?1/0:t:1e3},_h=(e,t)=>{const n=e.moduleContext;if("function"==typeof n)return e=>n(e)??t;if(n){const e=Object.create(null);for(const[t,s]of Object.entries(n))e[W(t)]=s;return n=>e[n]??t}return()=>t},Lh=e=>{if(!1===e.treeshake)return!1;const t=Cd(e.treeshake,wd,"treeshake","configuration-options/#treeshake","false, true, ");return{annotations:!1!==t.annotations,correctVarValueBeforeDeclaration:!0===t.correctVarValueBeforeDeclaration,manualPureFunctions:t.manualPureFunctions??le,moduleSideEffects:Th(t.moduleSideEffects),propertyReadSideEffects:"always"===t.propertyReadSideEffects?"always":!1!==t.propertyReadSideEffects,tryCatchDeoptimization:!1!==t.tryCatchDeoptimization,unknownGlobalSideEffects:!1!==t.unknownGlobalSideEffects}},Th=e=>{if("boolean"==typeof e)return()=>e;if("no-external"===e)return(e,t)=>!t;if("function"==typeof e)return(t,n)=>"\0"===t[0]||!1!==e(t,n);if(Array.isArray(e)){const t=new Set(e);return e=>t.has(e)}return e&&Bt(gn("treeshake.moduleSideEffects","configuration-options/#treeshake-modulesideeffects",'please use one of false, "no-external", a function or an array')),()=>!0},Bh=/[\u0000-\u001F"#$%&*+,:;<=>?[\]^`{|}\u007F]/g,zh=/^[a-z]:/i;function Vh(e){const t=zh.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Bh,"_")}const Fh=(e,t,n)=>{const{file:s}=e;if("string"==typeof s){if(t)return Bt(gn("output.file",Nt,'you must set "output.dir" instead of "output.file" when using the "output.preserveModules" option'));if(!Array.isArray(n.input))return Bt(gn("output.file",Nt,'you must set "output.dir" instead of "output.file" when providing named inputs'))}return s},jh=e=>{const t=e.format;switch(t){case void 0:case"es":case"esm":case"module":return"es";case"cjs":case"commonjs":return"cjs";case"system":case"systemjs":return"system";case"amd":case"iife":case"umd":return t;default:return Bt(gn("output.format",Ct,'Valid values are "amd", "cjs", "system", "es", "iife" or "umd"',t))}},Uh=(e,t)=>{const n=e.inlineDynamicImports||!1,{input:s}=t;return n&&(Array.isArray(s)?s:Object.keys(s)).length>1?Bt(gn("output.inlineDynamicImports",Rt,'multiple inputs are not supported when "output.inlineDynamicImports" is true')):n},Gh=(e,t,n)=>{const s=e.preserveModules||!1;if(s){if(t)return Bt(gn("output.inlineDynamicImports",Rt,'this option is not supported for "output.preserveModules"'));if(!1===n.preserveEntrySignatures)return Bt(gn("preserveEntrySignatures","configuration-options/#preserveentrysignatures",'setting this option to false is not supported for "output.preserveModules"'))}return s},Hh=e=>{const{preserveModulesRoot:t}=e;if(null!=t)return W(t)},Wh=e=>{const t={autoId:!1,basePath:"",define:"define",forceJsExtensionForImports:!1,...e.amd};return(t.autoId||t.basePath)&&t.id?Bt(gn("output.amd.id",wt,'this option cannot be used together with "output.amd.autoId"/"output.amd.basePath"')):t.basePath&&!t.autoId?Bt(gn("output.amd.basePath","configuration-options/#output-amd-basepath",'this option only works with "output.amd.autoId"')):t.autoId?{autoId:!0,basePath:t.basePath,define:t.define,forceJsExtensionForImports:t.forceJsExtensionForImports}:{autoId:!1,define:t.define,forceJsExtensionForImports:t.forceJsExtensionForImports,id:t.id}},qh=(e,t)=>{const n=e[t];return"function"==typeof n?n:()=>n||""},Kh=(e,t)=>{const{dir:n}=e;return"string"==typeof n&&"string"==typeof t?Bt(gn("output.dir",Nt,'you must set either "output.file" for a single-file build or "output.dir" when generating multiple chunks')):n},Xh=(e,t)=>{const n=e.entryFileNames;return null==n&&t.add("entryFileNames"),n??"[name].js"};function Jh(e,t){const n=e.exports;if(null==n)t.add("exports");else if(!["default","named","none","auto"].includes(n))return Bt({code:Ut,message:`"output.exports" must be "default", "named", "none", "auto", or left unspecified (defaults to "auto"), received "${n}".`,url:vt(kt)});return n||"auto"}const Yh=(e,t)=>(null!=e.externalImportAssertions&&Rn('The "output.externalImportAssertions" option is deprecated. Use the "output.externalImportAttributes" option instead.',"configuration-options/#output-externalimportattributes",!0,t),e.externalImportAttributes??e.externalImportAssertions??!0),Zh=e=>{const t=Cd(e.generatedCode,kd,"output.generatedCode","configuration-options/#output-generatedcode","");return{arrowFunctions:!0===t.arrowFunctions,constBindings:!0===t.constBindings,objectShorthand:!0===t.objectShorthand,reservedNamesAsProps:!1!==t.reservedNamesAsProps,symbols:!0===t.symbols}},Qh=(e,t)=>{if(t)return"";const n=e.indent;return!1===n?"":n??!0},ep=new Set(["compat","auto","esModule","default","defaultOnly"]),tp=e=>{const t=e.interop;if("function"==typeof t){const e=Object.create(null);let n=null;return s=>null===s?n||np(n=t(s)):s in e?e[s]:np(e[s]=t(s))}return void 0===t?()=>"default":()=>np(t)},np=e=>ep.has(e)?e:Bt(gn("output.interop",Dt,`use one of ${Array.from(ep,e=>JSON.stringify(e)).join(", ")}`,e)),sp=(e,t,n)=>{const s=e.manualChunks;if(s){if(t)return Bt(gn("output.manualChunks",Ot,'this option is not supported for "output.inlineDynamicImports"'));if(n)return Bt(gn("output.manualChunks",Ot,'this option is not supported for "output.preserveModules"'))}return s||{}},ip=(e,t,n)=>e.minifyInternalExports??(n||"es"===t||"system"===t),rp=(e,t)=>{const n=e.sourcemapFileNames;return null==n&&t.add("sourcemapFileNames"),n},op=e=>{const{sourcemapBaseUrl:t}=e;if(t)return function(e){try{new URL(e)}catch{return!1}return!0}(t)?(n=t).endsWith("/")?n:n+"/":Bt(gn("output.sourcemapBaseUrl","configuration-options/#output-sourcemapbaseurl",`must be a valid URL, received ${JSON.stringify(t)}`));var n},ap=e;function lp(e){return async function(e,t){const{options:n,unsetOptions:s}=await async function(e,t){if(!e)throw new Error("You must supply an options object to rollup");const n=await async function(e,t){const n=oh("options",await Rd(e.plugins)),s=e.logLevel||mt,i=fh(n,Ad(e,s),t,s);for(const r of n){const{name:n,options:o}=r,a="handler"in o?o.handler:o,l=await a.call({debug:Kd(gt,"PLUGIN_LOG",i,n,s),error:e=>Bt(In(vd(e),n,{hook:"onLog"})),info:Kd(mt,"PLUGIN_LOG",i,n,s),meta:{rollupVersion:ap,watchMode:t},warn:Kd(ft,"PLUGIN_WARNING",i,n,s)},e);l&&(e=l)}return e}(e,t),{options:s,unsetOptions:i}=await async function(e,t){const n=new Set,s=e.context??"undefined",i=await Rd(e.plugins),r=e.logLevel||mt,o=fh(i,Ad(e,r),t,r),a=e.strictDeprecations||!1,l=Mh(e),c={cache:Ch(e),context:s,experimentalCacheExpiry:e.experimentalCacheExpiry??10,experimentalLogSideEffects:e.experimentalLogSideEffects||!1,external:Rh(e.external),fs:e.fs??kh,input:Dh(e),jsx:Oh(e),logLevel:r,makeAbsoluteExternalsRelative:e.makeAbsoluteExternalsRelative??"ifRelativeSource",maxParallelFileOps:l,moduleContext:_h(e,s),onLog:o,perf:e.perf||!1,plugins:i,preserveEntrySignatures:e.preserveEntrySignatures??"exports-only",preserveSymlinks:e.preserveSymlinks||!1,shimMissingExports:e.shimMissingExports||!1,strictDeprecations:a,treeshake:Lh(e)};return Id(e,[...Object.keys(c),"onwarn","watch"],"input options",o,/^(output)$/),{options:c,unsetOptions:n}}(n,t);return cp(s.plugins,Dd),{options:s,unsetOptions:i}}(e,null!==t);(function(e){e.perf?(Yc=new Map,nu=Qc,su=eu,e.plugins=e.plugins.map(ru)):(nu=Kn,su=Kn)})(n),await async function(){await Na()}();const i=new dh(n,t),r=!1!==e.cache;e.cache&&(n.cache=void 0,e.cache=void 0);nu("BUILD",1),await hh(i.pluginDriver,async()=>{try{nu("initialize",2),await i.pluginDriver.hookParallel("buildStart",[n]),su("initialize",2),await i.build()}catch(e){const t=Object.keys(i.watchFiles);t.length>0&&(e.watchFiles=t);try{await i.pluginDriver.hookParallel("buildEnd",[e])}catch(t){const n=zt({...e,message:`There was an error during the build:\n ${e.message}\nAdditionally, handling the error in the 'buildEnd' hook caused the following error:\n ${t.message}`});throw await i.pluginDriver.hookParallel("closeBundle",[n]),n}throw await i.pluginDriver.hookParallel("closeBundle",[e]),e}try{await i.pluginDriver.hookParallel("buildEnd",[])}catch(e){throw await i.pluginDriver.hookParallel("closeBundle",[e]),e}}),su("BUILD",1);const o={get cache(){return r?i.getCache():void 0},async close(){o.closed||(o.closed=!0,await i.pluginDriver.hookParallel("closeBundle",[]))},closed:!1,async[Symbol.asyncDispose](){await this.close()},generate:async e=>o.closed?Bt({code:"ALREADY_CLOSED",message:'Bundle is already closed, no more calls to "generate" or "write" are allowed.'}):up(!1,n,s,e,i),get watchFiles(){return Object.keys(i.watchFiles)},write:async e=>o.closed?Bt({code:"ALREADY_CLOSED",message:'Bundle is already closed, no more calls to "generate" or "write" are allowed.'}):up(!0,n,s,e,i)};n.perf&&(o.getTimings=tu);return o}(e,null)}function cp(e,t){for(const[n,s]of e.entries())s.name||(s.name=`${t}${n+1}`)}async function up(e,t,n,s,i){const{options:r,outputPluginDriver:o,unsetOptions:a}=await async function(e,t,n,s){if(!e)throw new Error("You must supply an options object");const i=await Rd(e.plugins);cp(i,Od);const r=t.createOutputPluginDriver(i);return{...await dp(n,s,e,r),outputPluginDriver:r}}(s,i.pluginDriver,t,n);return hh(0,async()=>{const n=new fd(r,a,t,o,i),s=await n.generate(e);if(e){if(nu("WRITE",1),!r.dir&&!r.file)return Bt({code:"MISSING_OPTION",message:'You must specify "output.file" or "output.dir" for the build.',url:vt(Nt)});await Promise.all(Object.values(s).map(e=>i.fileOperationQueue.run(()=>async function(e,t,{fs:{mkdir:n,writeFile:s}}){const i=W(t.dir||j(t.file),e.fileName);return await n(j(i),{recursive:!0}),s(i,"asset"===e.type?e.source:e.code)}(e,r,t)))),await o.hookParallel("writeBundle",[r,s]),su("WRITE",1)}return l=s,{output:Object.values(l).filter(e=>Object.keys(e).length>0).sort((e,t)=>pp(e)-pp(t))};var l})}function dp(e,t,n,s){return async function(e,t,n){const s=new Set(n),i=e.compact||!1,r=jh(e),o=Uh(e,t),a=Gh(e,o,t),l=Fh(e,a,t),c=Zh(e),u=Yh(e,t),d={amd:Wh(e),assetFileNames:e.assetFileNames??"assets/[name]-[hash][extname]",banner:qh(e,"banner"),chunkFileNames:e.chunkFileNames??"[name]-[hash].js",compact:i,dir:Kh(e,l),dynamicImportInCjs:e.dynamicImportInCjs??!0,entryFileNames:Xh(e,s),esModule:e.esModule??"if-default-prop",experimentalMinChunkSize:e.experimentalMinChunkSize??1,exports:Jh(e,s),extend:e.extend||!1,externalImportAssertions:u,externalImportAttributes:u,externalLiveBindings:e.externalLiveBindings??!0,file:l,footer:qh(e,"footer"),format:r,freeze:e.freeze??!0,generatedCode:c,globals:e.globals||{},hashCharacters:e.hashCharacters??"base64",hoistTransitiveImports:e.hoistTransitiveImports??!0,importAttributesKey:e.importAttributesKey??"assert",indent:Qh(e,i),inlineDynamicImports:o,interop:tp(e),intro:qh(e,"intro"),manualChunks:sp(e,o,a),minifyInternalExports:ip(e,r,i),name:e.name,noConflict:e.noConflict||!1,onlyExplicitManualChunks:e.onlyExplicitManualChunks||!1,outro:qh(e,"outro"),paths:e.paths||{},plugins:await Rd(e.plugins),preserveModules:a,preserveModulesRoot:Hh(e),reexportProtoFromExternal:e.reexportProtoFromExternal??!0,sanitizeFileName:"function"==typeof e.sanitizeFileName?e.sanitizeFileName:!1===e.sanitizeFileName?e=>e:Vh,sourcemap:e.sourcemap||!1,sourcemapBaseUrl:op(e),sourcemapDebugIds:e.sourcemapDebugIds||!1,sourcemapExcludeSources:e.sourcemapExcludeSources||!1,sourcemapFile:e.sourcemapFile,sourcemapFileNames:rp(e,s),sourcemapIgnoreList:"function"==typeof e.sourcemapIgnoreList?e.sourcemapIgnoreList:!1===e.sourcemapIgnoreList?()=>!1:e=>e.includes("node_modules"),sourcemapPathTransform:e.sourcemapPathTransform,strict:e.strict??!0,systemNullSetters:e.systemNullSetters??!0,validate:e.validate||!1,virtualDirname:e.virtualDirname||"_virtual"};return Id(e,Object.keys(d),"output options",t.onLog),{options:d,unsetOptions:s}}(s.hookReduceArg0Sync("outputOptions",[n],(e,t)=>t||e,e=>{const t=()=>e.error({code:"CANNOT_EMIT_FROM_OPTIONS_HOOK",message:'Cannot emit files or set asset sources in the "outputOptions" hook, use the "renderStart" hook instead.'});return{...e,emitFile:t,setAssetSource:t}}),e,t)}var hp;function pp(e){return"asset"===e.type?hp.ASSET:e.isEntry?hp.ENTRY_CHUNK:hp.SECONDARY_CHUNK}function fp(e){return e}Symbol.asyncDispose??=Symbol("Symbol.asyncDispose"),function(e){e[e.ENTRY_CHUNK=0]="ENTRY_CHUNK",e[e.SECONDARY_CHUNK=1]="SECONDARY_CHUNK",e[e.ASSET=2]="ASSET"}(hp||(hp={}));const mp=e;export{mp as VERSION,fp as defineConfig,lp as rollup}; diff --git a/extension/vendor/vendor.lock.json b/extension/vendor/vendor.lock.json index 171fca90..7baf7209 100644 --- a/extension/vendor/vendor.lock.json +++ b/extension/vendor/vendor.lock.json @@ -66,6 +66,10 @@ "readability/Readability-readerable.js": "5a8fc32e70171edc4fd27a31c614874df9d7d7cc8becfd7920ecff6a149c5819", "readability/Readability.js": "66abf753559cf89baacf516115a3259a98825399ebc159255cf0065b3b9a899a", "readability/SOURCE.txt": "b199beec47461f3fd3e01d3d3736d384278d123611e283f097fa68e70363ffe1", + "rollup/LICENSE.md": "8d218a9c9950dd89c1aede5956f7ab98b45cc41c876a88bbc5df88174fd8a96f", + "rollup/SOURCE.txt": "32d2c16201e78c1b5f717eada29f70e03e0091f918a0387999545046ca2b2514", + "rollup/bindings_wasm_bg.wasm": "ef41a5a1868f6268a10ce5b1ca4eb92b47683a2375b86c675badf0112a165796", + "rollup/rollup.browser.js": "00c7e102025e8ae11193e9f0f30eb6da31a1fcd34350aae94429833d4f4ea7c0", "simple-icons/SOURCE.txt": "8fcdd2cd8f63fb7fd4aaa9bfa66cde83d453677f964470f419185b2d39151f89", "simple-icons/brand-paths.js": "dc0c3573feb28c31aa7d0786d0af584c8a43706f51e91cf46fe52ee94d541ded", "tesseract/SOURCE.txt": "c0b0c2c9a7380264c2608c5ea3b79983f3623ef010d51d4f91cc170658a1a0b4", diff --git a/manifests/base.json b/manifests/base.json index d923fbd4..8bf837d6 100644 --- a/manifests/base.json +++ b/manifests/base.json @@ -45,7 +45,7 @@ }, "sandbox": { - "pages": ["engine-tabs/app-tab/runner.html"] + "pages": ["engine-tabs/app-tab/runner.html", "engine-tabs/notebook-tab/worker-host.html"] }, "cross_origin_embedder_policy": { "value": "require-corp" }, diff --git a/packaging/check-tscheck.ts b/packaging/check-tscheck.ts index c0379de4..81431fc3 100644 --- a/packaging/check-tscheck.ts +++ b/packaging/check-tscheck.ts @@ -158,7 +158,7 @@ import { computeCoverage } from './tscheck-coverage.ts'; // route, Options surface, and rendered side-panel coverage. // 673 → 676: the Actor Fabric adds its pure topology model, SW live projection, // and rendered browser contract while replacing the checked async-task bar. -const COVERED_FLOOR = 694; +const COVERED_FLOOR = 698; // The scan (walk + // @ts-check detection + the ES5-injected exemption set) // lives in tscheck-coverage.ts so the badge generator reports the same number. diff --git a/packaging/gen-channel-config.ts b/packaging/gen-channel-config.ts index cea63317..328cf08e 100644 --- a/packaging/gen-channel-config.ts +++ b/packaging/gen-channel-config.ts @@ -27,10 +27,14 @@ const DEV_OUT = join(EXTENSION_DIR, 'shared', 'channel-config.js'); export const dwebEnabledForTarget = (channel: ConfigChannel, browser?: Browser): boolean => channel === 'preview' && browser !== 'firefox'; -// Firefox rejects nested generated module URLs inside extension Workers. Keep -// the target fail-closed until the Notebook resolver has a native Gecko loader. export const remoteModuleImportsEnabledForTarget = (channel: ConfigChannel, browser?: Browser): boolean => - channel === 'preview' && browser !== 'firefox'; + channel === 'preview'; + +// Firefox extension module Workers cannot load generated child module URLs. +// The packaged target selects a single linked entry there; Chrome keeps the +// native module graph until the shared path has equivalent field coverage. +export const notebookModuleLoaderForTarget = (browser?: Browser): 'blob-graph' | 'single-bundle' => + browser === 'firefox' ? 'single-bundle' : 'blob-graph'; export const flattenDefaults = (channel: ConfigChannel, browser?: Browser): Record => { const out: Record = {}; @@ -78,6 +82,7 @@ export const genChannelConfigSource = (channel: ConfigChannel, browser?: Browser export const CHANNEL = ${JSON.stringify(channel)}; export const DWEB_ENABLED = ${JSON.stringify(dwebEnabledForTarget(channel, browser))}; export const REMOTE_MODULE_IMPORTS_ENABLED = ${JSON.stringify(remoteModuleImportsEnabledForTarget(channel, browser))}; +export const NOTEBOOK_MODULE_LOADER = ${JSON.stringify(notebookModuleLoaderForTarget(browser))}; export const CHANNEL_DEFAULTS = Object.freeze(${'{'} ${entries} diff --git a/packaging/security-baseline.json b/packaging/security-baseline.json index dc609608..ff3db51b 100644 --- a/packaging/security-baseline.json +++ b/packaging/security-baseline.json @@ -67,7 +67,8 @@ ], "sandbox": { "pages": [ - "engine-tabs/app-tab/runner.html" + "engine-tabs/app-tab/runner.html", + "engine-tabs/notebook-tab/worker-host.html" ] }, "side_panel": { @@ -216,7 +217,8 @@ ], "sandbox": { "pages": [ - "engine-tabs/app-tab/runner.html" + "engine-tabs/app-tab/runner.html", + "engine-tabs/notebook-tab/worker-host.html" ] }, "side_panel": { @@ -367,7 +369,8 @@ ], "sandbox": { "pages": [ - "engine-tabs/app-tab/runner.html" + "engine-tabs/app-tab/runner.html", + "engine-tabs/notebook-tab/worker-host.html" ] }, "side_panel": { diff --git a/scripts/cdp/states.mjs b/scripts/cdp/states.mjs index 972bcfc0..d20f2c98 100644 --- a/scripts/cdp/states.mjs +++ b/scripts/cdp/states.mjs @@ -3141,6 +3141,104 @@ export const STATES = [ } finally { try { page.close(); } catch { /* */ } } }, }, + { + name: 'notebook-stop-control', kind: 'functional', phase: 'post-unlock', + responder: () => ({ sse: sseText('noted') }), + async run(ctx, rec) { + const notebookId = 'e2e-stop-control'; + const page = await openWidePage( + ctx, `engine-tabs/notebook-tab/index.html#${notebookId}`, + { ready: '#notebook-app:not([hidden])' }, + ); + try { + const dispatched = await evalIn(ctx.page, `(async () => { + const browser = (await import('/vendor/browser-polyfill.js')).default; + const tabs = await browser.tabs.query({}); + const tab = tabs.find((candidate) => candidate.url?.includes(${JSON.stringify(`#${notebookId}`)})); + if (!tab?.id) return false; + globalThis.__peerdE2eNotebookEvaluation = browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: ${JSON.stringify(notebookId)}, + runId: 'e2e-stop-control-run', code: 'while (true) {}', timeoutMs: 20_000, + }); + return true; + })()`, true); + rec.check('the infinite Notebook run is dispatched', dispatched === true); + const started = await evalIn(page, `(async () => { + for (let attempt = 0; attempt < 100; attempt += 1) { + const button = document.getElementById('run-btn'); + if (button?.getAttribute('aria-label') === 'Stop notebook run') { + button.focus(); + return { + label: button.getAttribute('aria-label'), + text: button.textContent, + focused: document.activeElement === button, + }; + } + await new Promise((resolveWait) => setTimeout(resolveWait, 20)); + } + return null; + })()`, true); + rec.check('the Notebook exposes one focused Stop control while code runs', + started?.label === 'Stop notebook run' + && /Stop notebook run/.test(started?.text ?? '') + && started?.focused === true, + JSON.stringify(started)); + await rec.shotPage('notebook-stop-control', page); + + await evalIn(page, `document.getElementById('run-btn')?.click()`); + const stopped = await evalIn(ctx.page, + 'globalThis.__peerdE2eNotebookEvaluation', true); + const outcome = await evalIn(page, `(async () => { + for (let attempt = 0; attempt < 100; attempt += 1) { + const button = document.getElementById('run-btn'); + if (button?.getAttribute('aria-label') === 'Run notebook.js') { + return { + idleLabel: button.getAttribute('aria-label'), + focused: document.activeElement === button, + status: document.getElementById('run-status')?.textContent ?? '', + }; + } + await new Promise((resolveWait) => setTimeout(resolveWait, 20)); + } + return {}; + })()`, true); + rec.check('Stop terminates the exact run and restores the focused Run control', + stopped?.result?.stopped === true + && outcome?.idleLabel === 'Run notebook.js' + && outcome?.focused === true + && outcome?.status === 'Notebook run stopped.', + JSON.stringify({ stopped, outcome })); + + const importedFailure = await evalIn(ctx.page, `(async () => { + const browser = (await import('/vendor/browser-polyfill.js')).default; + const tabs = await browser.tabs.query({}); + const tab = tabs.find((candidate) => candidate.url?.includes(${JSON.stringify(`#${notebookId}`)})); + if (!tab?.id) return null; + await browser.tabs.sendMessage(tab.id, { + type: 'js/write-file', path: 'lib/failure.js', + content: 'throw new Error("imported failure canary");', + }); + return browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: ${JSON.stringify(notebookId)}, + runId: 'e2e-imported-failure', + code: 'import "./lib/failure.js"; return true;', timeoutMs: 10_000, + }); + })()`, true); + const failureView = await evalIn(page, `({ + status: document.getElementById('run-status')?.textContent ?? '', + output: document.getElementById('console-output')?.textContent ?? '', + })`, true); + rec.check('Chrome maps an imported-module failure to its source without a generated URL', + importedFailure?.result?.error?.includes('./lib/failure.js:1') + && !/blob:|data:/.test(importedFailure?.result?.error ?? '') + && failureView?.status === 'Notebook run failed.' + && failureView?.output?.includes('./lib/failure.js:1') + && !/blob:|data:/.test(failureView?.output ?? ''), + JSON.stringify({ importedFailure, failureView })); + await rec.shotPage('notebook-imported-failure', page); + } finally { try { page.close(); } catch { /* */ } } + }, + }, { name: 'notebook-tab-failed', kind: 'visual', phase: 'post-unlock', responder: () => ({ sse: sseText('noted') }), diff --git a/scripts/firefox/run-runtime-tests.mjs b/scripts/firefox/run-runtime-tests.mjs index 2f40aac4..2532a0f5 100644 --- a/scripts/firefox/run-runtime-tests.mjs +++ b/scripts/firefox/run-runtime-tests.mjs @@ -41,6 +41,9 @@ const PREVIEW_EXTENSION_ORIGIN = `moz-extension://${PREVIEW_TEST_UUID}`; const FIXTURE_PATH = '/__firefox-runtime-fixture'; const WORKER_PROBE_PATH = '/__firefox-worker-startup-probe'; const MODULE_IMPORT_PROBE_PATH = '/__firefox-module-import-probe.js'; +const REMOTE_MODULE_ROOT_PATH = '/__firefox-remote-module.js'; +const REMOTE_MODULE_CHILD_PATH = '/__firefox-remote-child.js'; +const REMOTE_MODULE_SLOW_PATH = '/__firefox-remote-slow.js'; const DNR_PUBLIC_HOST = 'guard.peerd.test'; const DNR_FRAME_HOST = 'frame.peerd.test'; const DNR_FIXTURE_PATH = '/__firefox-dnr-fixture'; @@ -359,6 +362,8 @@ const startProviderServer = async () => { const connections = []; const tlsErrors = []; let workerStartupProbes = 0; + let remoteModuleRequests = 0; + let slowModuleRequests = 0; let lifetimeActorResponses = 0; let lifetimeActorResponseAt = 0; let lifetimeActorAborts = 0; @@ -391,6 +396,31 @@ const startProviderServer = async () => { const providerRequestHandler = (request, response) => { const host = String(request.headers.host ?? '').split(':')[0].toLowerCase(); const requestUrl = new URL(request.url ?? '/', `https://${host || 'localhost'}`); + if (host === DNR_PUBLIC_HOST && request.method === 'GET' + && requestUrl.pathname === REMOTE_MODULE_SLOW_PATH) { + slowModuleRequests += 1; + const timer = setTimeout(() => { + response.writeHead(200, { 'content-type': 'text/javascript; charset=utf-8' }); + response.end('export const slow = true;'); + }, 2_000); + response.once('close', () => { + clearTimeout(timer); + }); + return; + } + if (host === DNR_PUBLIC_HOST && request.method === 'GET' + && [REMOTE_MODULE_ROOT_PATH, REMOTE_MODULE_CHILD_PATH].includes(requestUrl.pathname)) { + remoteModuleRequests += 1; + response.writeHead(200, { + 'content-type': 'text/javascript; charset=utf-8', + 'cache-control': 'no-store', + 'access-control-allow-origin': '*', + }); + response.end(requestUrl.pathname === REMOTE_MODULE_ROOT_PATH + ? `import { child } from './${REMOTE_MODULE_CHILD_PATH.slice(1)}'; export const remoteValue = child + 1;` + : 'export const child = 41;'); + return; + } if ([DNR_PUBLIC_HOST, DNR_FRAME_HOST].includes(host) && request.method === 'GET' && requestUrl.pathname === DNR_SERVICE_WORKER_FIXTURE_PATH) { response.writeHead(200, { @@ -881,6 +911,8 @@ const startProviderServer = async () => { return routeId; }, get workerStartupProbes() { return workerStartupProbes; }, + get remoteModuleRequests() { return remoteModuleRequests; }, + get slowModuleRequests() { return slowModuleRequests; }, get lifetimeActorResponses() { return lifetimeActorResponses; }, get lifetimeActorResponseAt() { return lifetimeActorResponseAt; }, get lifetimeActorAborts() { return lifetimeActorAborts; }, @@ -3037,9 +3069,344 @@ return 'REACHED';`; } }; -const runPreviewRemoteModuleSmoke = async (driver) => { - console.log('Firefox Preview remote module smoke: fail closed before request'); - const notebookId = 'firefox-preview-remote-refused'; +const runLocalModuleGraphSmoke = async (driver) => { + console.log('Firefox Notebook module graph smoke: link local modules into one sealed worker entry'); + const notebookId = 'firefox-local-module-graph'; + const notebookUrl = `${EXTENSION_ORIGIN}/engine-tabs/notebook-tab/index.html#${notebookId}`; + let notebookTabId = null; + try { + const opened = await driver.executeAsync(` + const [url] = arguments; + const done = arguments[arguments.length - 1]; + browser.tabs.create({ url, active: false }) + .then((tab) => done({ ok: true, tabId: tab.id }), + (error) => done({ ok: false, error: error?.message || String(error) })); + `, [notebookUrl]); + assert(opened?.ok === true && Number.isInteger(opened.tabId), + 'the local-module Notebook host opens', JSON.stringify(opened)); + notebookTabId = opened.tabId; + const ready = await waitFor(() => driver.executeAsync(` + const [tabId, id] = arguments; + const done = arguments[arguments.length - 1]; + Promise.all([ + browser.tabs.get(tabId), + browser.tabs.sendMessage(tabId, { type: 'js/list-files', notebookId: id }), + ]).then(([tab, reply]) => done(tab.status === 'complete' && reply?.ok === true), + () => done(false)); + `, [notebookTabId, notebookId]), { budgetMs: 30_000, pollMs: 200 }); + assert(ready === true, 'the local-module Notebook host is ready for RPC'); + await driver.navigate(notebookUrl); + const workerMatrix = await driver.executeAsync(` + const done = arguments[arguments.length - 1]; + const probe = (options) => new Promise((resolve) => { + const url = URL.createObjectURL(new Blob([ + "postMessage({ type: 'probe-ready' });", + ], { type: 'application/javascript' })); + let worker; + try { worker = options ? new Worker(url, options) : new Worker(url); } + catch (error) { + URL.revokeObjectURL(url); + resolve({ state: 'constructor-error', detail: error?.message || String(error) }); + return; + } + const timer = setTimeout(() => { + worker.terminate(); URL.revokeObjectURL(url); resolve({ state: 'timeout' }); + }, 5_000); + worker.addEventListener('message', () => { + clearTimeout(timer); worker.terminate(); URL.revokeObjectURL(url); resolve({ state: 'ready' }); + }, { once: true }); + worker.addEventListener('error', (event) => { + clearTimeout(timer); worker.terminate(); URL.revokeObjectURL(url); + resolve({ state: 'error', detail: event.message || '' }); + }, { once: true }); + }); + Promise.all([probe(null), probe({ type: 'module' })]) + .then(([classic, module]) => done({ classic, module }), + (error) => done({ error: error?.message || String(error) })); + `); + assert(workerMatrix?.classic?.state === 'error' && workerMatrix?.module?.state === 'error', + 'Firefox MV3 refuses generated Worker roots in a privileged extension page', + JSON.stringify(workerMatrix)); + await driver.navigate(`${EXTENSION_ORIGIN}/sidepanel/sidepanel.html`); + + const write = async (path, content) => driver.executeAsync(` + const [tabId, id, modulePath, source] = arguments; + const done = arguments[arguments.length - 1]; + browser.tabs.sendMessage(tabId, { + type: 'js/write-file', notebookId: id, path: modulePath, content: source, + }).then(done, (error) => done({ ok: false, error: error?.message || String(error) })); + `, [notebookTabId, notebookId, path, content]); + assert((await write('lib/value.js', 'export const value = 42;'))?.ok === true, + 'Firefox writes the shared local dependency'); + assert((await write('lib/index.js', "export { value } from './value.js';"))?.ok === true, + 'Firefox writes the local re-export'); + assert((await write('lib/module-semantics.js', ` + await Promise.resolve(); + export const sourceUrl = import.meta.url; + export const tlaValue = 43; + `))?.ok === true, 'Firefox writes the module-semantics fixture'); + assert((await write('lib/failure.js', ` + /*__peerd_module:00000000-0000-4000-8000-000000000000:module:%__*/ + throw new Error('imported-source-path-probe'); + `))?.ok === true, + 'Firefox writes the imported failure fixture'); + + const run = async (source) => driver.executeAsync(` + const [tabId, id, code] = arguments; + const done = arguments[arguments.length - 1]; + browser.tabs.sendMessage(tabId, { + type: 'js/eval', notebookId: id, code, timeoutMs: 20_000, + }).then(done, (error) => done({ ok: false, error: error?.message || String(error) })); + `, [notebookTabId, notebookId, source]); + const inline = await run("return 'INLINE-OK';"); + assert(inline?.ok === true && inline.result?.error == null + && inline.result?.value === 'INLINE-OK', + 'the Firefox Notebook runs an inline worker entry before the import graph probe', + JSON.stringify(inline)); + const failedInline = await run("throw new Error('source-path-probe');"); + assert(failedInline?.ok === true + && /source-path-probe/.test(failedInline.result?.error ?? '') + && /notebook\.js:1(?::|\b)/.test(failedInline.result?.error ?? '') + && !/blob:|data:/.test(failedInline.result?.error ?? ''), + 'Firefox maps worker failures to the Notebook source without generated URLs', + JSON.stringify(failedInline)); + const graph = await run(`import { value } from './lib/index.js'; +return value;`); + assert(graph?.ok === true && graph.result?.error == null + && graph.result?.value === 42, + 'current Firefox runs a nested local import and re-export', + JSON.stringify(graph)); + const moduleSemantics = await run(`import { sourceUrl, tlaValue } from './lib/module-semantics.js'; +return { sourceUrl, tlaValue };`); + assert(moduleSemantics?.ok === true && moduleSemantics.result?.error == null + && moduleSemantics.result?.value?.tlaValue === 43 + && moduleSemantics.result?.value?.sourceUrl === './lib/module-semantics.js', + 'Firefox preserves imported top-level await and stable import.meta.url', + JSON.stringify(moduleSemantics)); + const importedFailure = await run("import './lib/failure.js'; return false;"); + assert(importedFailure?.ok === true + && /imported-source-path-probe/.test(importedFailure.result?.error ?? '') + && /\.\/lib\/failure\.js/.test(importedFailure.result?.error ?? '') + && !/blob:|data:/.test(importedFailure.result?.error ?? ''), + 'Firefox maps imported-module failures to their source file', + JSON.stringify(importedFailure)); + const stringCompilation = await run(` + const probes = [ + () => eval('1'), + () => Function('return 1')(), + () => (async () => {}).constructor('return 1')(), + () => (function* () {}).constructor('return 1')(), + ]; + return probes.map((probe) => { + try { probe(); return 'unexpected success'; } + catch (error) { return error.name; } + }); + `); + assert(stringCompilation?.ok === true && stringCompilation.result?.error == null + && stringCompilation.result?.value?.length === 4 + && stringCompilation.result.value.every((value) => value !== 'unexpected success'), + 'Firefox blocks eval and function-constructor string compilation', + JSON.stringify(stringCompilation)); + const wasm = await run(` + const bytes = new Uint8Array([0,97,115,109,1,0,0,0]); + const module = await WebAssembly.compile(bytes); + return module instanceof WebAssembly.Module; + `); + assert(wasm?.ok === true && wasm.result?.error == null && wasm.result?.value === true, + 'Firefox keeps WebAssembly compilation without enabling JavaScript string compilation', + JSON.stringify(wasm)); + + const immediateStop = await driver.executeAsync(` + const [tabId, id] = arguments; + const done = arguments[arguments.length - 1]; + const runId = 'firefox-immediate-stop-probe'; + const evaluation = browser.tabs.sendMessage(tabId, { + type: 'js/eval', notebookId: id, runId, + code: 'while (true) {}', timeoutMs: 20_000, + }); + const abort = browser.tabs.sendMessage(tabId, { + type: 'js/abort', notebookId: id, runId, + }); + Promise.all([evaluation, abort]).then(([runResult, abortResult]) => + done({ runResult, abortResult }), + (error) => done({ error: error?.message || String(error) })); + `, [notebookTabId, notebookId]); + assert(immediateStop?.abortResult?.stopped === true + && immediateStop?.runResult?.result?.stopped === true, + 'an immediate Firefox abort cannot race ahead of run registration', + JSON.stringify(immediateStop)); + + const stopped = await driver.executeAsync(` + const [tabId, id] = arguments; + const done = arguments[arguments.length - 1]; + const runId = 'firefox-stop-probe'; + const evaluation = browser.tabs.sendMessage(tabId, { + type: 'js/eval', notebookId: id, runId, + code: 'while (true) {}', timeoutMs: 20_000, + }); + setTimeout(() => { + browser.tabs.sendMessage(tabId, { + type: 'js/abort', notebookId: id, runId, + }).then((abort) => evaluation.then((run) => done({ abort, run })), + (error) => done({ error: error?.message || String(error) })); + }, 250); + `, [notebookTabId, notebookId]); + assert(stopped?.abort?.ok === true && stopped.abort.stopped === true + && stopped?.run?.ok === true && stopped.run.result?.stopped === true + && stopped.run.result?.error == null, + 'Firefox Stop terminates the exact infinite run with a structured stopped result', + JSON.stringify(stopped)); + + assert((await write('cycle-a.js', "import './cycle-b.js'; export const a = 1;"))?.ok === true + && (await write('cycle-b.js', "import './cycle-a.js'; export const b = 2;"))?.ok === true, + 'Firefox writes the cyclic graph fixture'); + const cycle = await run("import './cycle-a.js'; return 'unreachable';"); + assert(cycle?.ok === true && /circular import/.test(cycle.result?.error ?? ''), + 'Firefox preserves Chrome resolver semantics by refusing a cycle before execution', + JSON.stringify(cycle)); + + const recovered = await run("return 'RECOVERED';"); + assert(recovered?.ok === true && recovered.result?.error == null + && recovered.result?.value === 'RECOVERED', + 'the same Firefox Notebook recovers after a graph failure', JSON.stringify(recovered)); + const originalHandle = await driver.windowHandle(); + let notebookHandle = null; + for (const handle of await driver.windowHandles()) { + await driver.switchToWindow(handle); + if ((await driver.execute('return location.href;')) === notebookUrl) { + notebookHandle = handle; + break; + } + } + assert(notebookHandle !== null, 'WebDriver finds the visible Notebook tab'); + const linkingStop = await driver.executeAsync(` + const [id] = arguments; + const done = arguments[arguments.length - 1]; + (async () => { + const tab = await browser.tabs.getCurrent(); + const values = Array.from({ length: 180_000 }, (_, index) => String(index)).join(','); + await browser.tabs.sendMessage(tab.id, { + type: 'js/write-file', notebookId: id, path: 'lib/linker-load.js', + content: 'export const values = [' + values + '];', + }); + const runId = 'firefox-linker-stop-probe'; + const startedAt = Date.now(); + const evaluation = browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: id, runId, + code: "import { values } from './lib/linker-load.js'; return values.length;", + timeoutMs: 20_000, + }); + let sawLinking = false; + for (let attempt = 0; attempt < 400; attempt += 1) { + if (document.getElementById('run-status')?.textContent === 'Linking notebook imports.') { + sawLinking = true; + break; + } + await new Promise((resolveWait) => setTimeout(resolveWait, 5)); + } + const abort = await browser.tabs.sendMessage(tab.id, { + type: 'js/abort', notebookId: id, runId, + }); + done({ + sawLinking, abort, run: await evaluation, + elapsedMs: Date.now() - startedAt, + }); + })().catch((error) => done({ error: error?.message || String(error) })); + `, [notebookId]); + assert(linkingStop?.sawLinking === true + && linkingStop?.abort?.stopped === true + && linkingStop?.run?.result?.stopped === true + && linkingStop.elapsedMs < 3_000, + 'Stop terminates the disposable Firefox compiler during module linking', + JSON.stringify(linkingStop)); + const control = await driver.executeAsync(` + const [id] = arguments; + const done = arguments[arguments.length - 1]; + (async () => { + const tab = await browser.tabs.getCurrent(); + const runId = 'firefox-control-stop-probe'; + const evaluation = browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: id, runId, + code: 'while (true) {}', timeoutMs: 20_000, + }); + let running = null; + for (let attempt = 0; attempt < 50; attempt += 1) { + const button = document.getElementById('run-btn'); + if (button?.getAttribute('aria-label') === 'Stop notebook run') { + button.focus(); + const concurrent = await browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: id, runId: 'firefox-concurrent-probe', + code: "return 'MUST-NOT-REPLACE';", timeoutMs: 20_000, + }); + const notebookFile = await browser.tabs.sendMessage(tab.id, { + type: 'js/read-file', notebookId: id, path: 'notebook.js', + }); + running = { + label: button.getAttribute('aria-label'), + text: button.textContent, + focused: document.activeElement === button, + concurrent, + notebookFile, + }; + button.click(); + break; + } + await new Promise((resolveWait) => setTimeout(resolveWait, 20)); + } + const stoppedRun = await evaluation; + let idle = null; + for (let attempt = 0; attempt < 50; attempt += 1) { + const button = document.getElementById('run-btn'); + if (button?.getAttribute('aria-label') === 'Run notebook.js') { + idle = { + label: button.getAttribute('aria-label'), + focused: document.activeElement === button, + }; + break; + } + await new Promise((resolveWait) => setTimeout(resolveWait, 20)); + } + const recoveredRun = await browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: id, runId: 'firefox-control-recovery', + code: "return 'CONTROL-RECOVERED';", timeoutMs: 20_000, + }); + done({ running, idle, stoppedRun, recoveredRun }); + })().catch((error) => done({ error: error?.message || String(error) })); + `, [notebookId]); + assert(control?.running?.label === 'Stop notebook run' + && /Stop notebook run/.test(control.running.text ?? '') + && control.running.focused === true + && control.running.concurrent?.result?.errorCode === 'notebook_run_busy' + && control.running.notebookFile?.content === 'while (true) {}' + && control?.idle?.label === 'Run notebook.js' + && control.idle.focused === true + && control?.stoppedRun?.result?.stopped === true + && control?.recoveredRun?.result?.value === 'CONTROL-RECOVERED', + 'the accessible Run control becomes Stop, keeps focus, terminates, and recovers', + JSON.stringify(control)); + const visible = await driver.execute(` + return { + status: document.getElementById('run-status')?.textContent ?? '', + output: document.getElementById('console-output')?.textContent ?? '', + }; + `); + await driver.switchToWindow(originalHandle); + assert(visible?.status === 'Notebook run complete.' && !/blob:|data:/.test(visible?.output ?? ''), + 'visible recovery completes without exposing generated module URLs', JSON.stringify(visible)); + } finally { + if (notebookTabId != null) { + await driver.executeAsync(` + const [tabId] = arguments; + const done = arguments[arguments.length - 1]; + browser.tabs.remove(tabId).then(() => done(true), () => done(false)); + `, [notebookTabId]).catch(() => {}); + } + } +}; + +const runPreviewRemoteModuleSmoke = async (driver, providerServer) => { + console.log('Firefox Preview remote module smoke: audited nested graph under compute-only policy'); + const notebookId = 'firefox-preview-remote-graph'; await driver.setWindowRect({ width: 1280, height: 900, x: 0, y: 0 }); await driver.navigate(`${PREVIEW_EXTENSION_ORIGIN}/engine-tabs/notebook-tab/index.html#${notebookId}`); const mounted = await waitFor(() => driver.execute( @@ -3047,48 +3414,155 @@ const runPreviewRemoteModuleSmoke = async (driver) => { ), { budgetMs: 30_000 }); assert(mounted === true, 'Firefox Preview Notebook host mounts for the remote-module probe'); + const remoteUrl = `https://${DNR_PUBLIC_HOST}:${providerServer.tlsPort}${REMOTE_MODULE_ROOT_PATH}`; + const remoteCode = `import { remoteValue } from ${JSON.stringify(remoteUrl)}; +let fileBlocked = false; +let networkBlocked = false; +let subagentBlocked = false; +let dwebBlocked = false; +let providerBlocked = false; +let pageBlocked = false; +let siteBlocked = false; +try { await peerd.self.writeFile('remote.txt', 'no'); } catch { fileBlocked = true; } +try { await peerd.egress.fetch('https://example.com'); } catch { networkBlocked = true; } +try { await peerd.runtime.runAgent({ task: 'no' }); } catch { subagentBlocked = true; } +try { await peerd.distributed.peers(); } catch { dwebBlocked = true; } +try { await peerd.provider.call({ prompt: 'no' }); } catch { providerBlocked = true; } +try { await peerd.page.goto('https://example.com'); } catch { pageBlocked = true; } +try { await peerd.site.fetch('/private'); } catch { siteBlocked = true; } +for (const envelope of [ + { type: 'actor-request', rid: 'forged-actor', args: { task: 'leak' } }, + { type: 'fetch-request', rid: 'forged-fetch', url: 'https://example.com', method: 'GET' }, + { type: 'opfs-request', rid: 'forged-opfs', op: 'write', args: { path: 'remote.txt', content: 'no' } }, + { type: 'distributed-request', rid: 'forged-dweb', method: 'peers' }, + { type: 'provider-request', rid: 'forged-provider', args: { prompt: 'leak' } }, +]) postMessage(envelope); +return { + remoteValue, fileBlocked, networkBlocked, subagentBlocked, dwebBlocked, + providerBlocked, pageBlocked, siteBlocked, +};`; const outcome = await driver.executeAsync(` - const [id] = arguments; + const [id, code] = arguments; const done = arguments[arguments.length - 1]; (async () => { const browser = (await import('/vendor/browser-polyfill.js')).default; const config = await import('/shared/channel-config.js'); + const tab = await browser.tabs.getCurrent(); const original = browser.runtime.sendMessage.bind(browser.runtime); const calls = []; browser.runtime.sendMessage = (message) => { calls.push(message?.type ?? 'unknown'); return original(message); }; - const tab = await browser.tabs.getCurrent(); const run = await browser.tabs.sendMessage(tab.id, { type: 'js/eval', notebookId: id, - code: "import { remoteValue } from 'https://modules.example/probe.js'; return remoteValue;", - timeoutMs: 10_000, + code, + timeoutMs: 20_000, }); done({ remoteModulesEnabled: config.REMOTE_MODULE_IMPORTS_ENABLED, errorCode: run?.result?.errorCode ?? null, resultError: run?.result?.error ?? null, + value: run?.result?.value ?? null, + usedRemoteModules: run?.result?.usedRemoteModules === true, durationMs: run?.result?.durationMs ?? null, - callsJson: JSON.stringify(calls), + status: document.getElementById('run-status')?.textContent ?? '', + output: document.getElementById('console-output')?.textContent ?? '', + calls, + }); + })().catch((error) => done({ error: error?.message || String(error) })); + `, [notebookId, remoteCode]); + assert(outcome?.remoteModulesEnabled === true, + 'Firefox Preview packages the single-entry remote module loader', JSON.stringify(outcome)); + assert(outcome?.resultError == null && outcome?.errorCode == null + && outcome?.usedRemoteModules === true + && outcome?.value?.remoteValue === 42 + && outcome?.value?.fileBlocked === true + && outcome?.value?.networkBlocked === true + && outcome?.value?.subagentBlocked === true + && outcome?.value?.dwebBlocked === true + && outcome?.value?.providerBlocked === true + && outcome?.value?.pageBlocked === true + && outcome?.value?.siteBlocked === true, + 'Firefox Preview runs the nested graph with every host capability blocked', JSON.stringify(outcome)); + assert(Array.isArray(outcome?.calls) + && outcome.calls.filter((type) => type === 'sw/web-fetch').length === 2 + && !outcome.calls.some((type) => [ + 'actor/spawn', 'dweb/distributed/info', 'provider/call', 'page/call', 'site/call', + ].includes(type)), + 'forged remote bridge envelopes do not leave the Firefox Notebook host', + JSON.stringify(outcome?.calls)); + assert(providerServer.remoteModuleRequests === 2, + 'the audited host fetches exactly the root and nested remote modules', + String(providerServer.remoteModuleRequests)); + assert(outcome.status === 'Remote code ran with restricted access.' + && /Remote imports run with compute only/.test(outcome.output) + && !/blob:|data:/.test(outcome.output), + 'Firefox Preview shows the compute-only receipt without generated URLs', JSON.stringify(outcome)); + + const slowUrl = `https://${DNR_PUBLIC_HOST}:${providerServer.tlsPort}${REMOTE_MODULE_SLOW_PATH}`; + const stoppedFetch = await driver.executeAsync(` + const [id, url] = arguments; + const done = arguments[arguments.length - 1]; + (async () => { + const browser = (await import('/vendor/browser-polyfill.js')).default; + const tab = await browser.tabs.getCurrent(); + const runId = 'firefox-remote-fetch-stop'; + const startedAt = Date.now(); + const evaluation = browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: id, runId, + code: 'import ' + JSON.stringify(url) + '; return false;', timeoutMs: 20_000, + }); + await new Promise((resolveWait) => setTimeout(resolveWait, 150)); + const abort = await browser.tabs.sendMessage(tab.id, { + type: 'js/abort', notebookId: id, runId, + }); + const run = await evaluation; + await new Promise((resolveWait) => setTimeout(resolveWait, 300)); + done({ + abort, run, elapsedMs: Date.now() - startedAt, status: document.getElementById('run-status')?.textContent ?? '', output: document.getElementById('console-output')?.textContent ?? '', }); })().catch((error) => done({ error: error?.message || String(error) })); - `, [notebookId]); - assert(outcome?.remoteModulesEnabled === false, - 'Firefox Preview packages remote imports as unavailable', JSON.stringify(outcome)); - assert(outcome?.errorCode === 'remote_module_imports_unavailable' - && outcome?.durationMs === 0 - && outcome?.resultError?.startsWith('import resolution failed:'), - 'Firefox Preview refuses the remote graph before worker creation', JSON.stringify(outcome)); - const calls = JSON.parse(outcome?.callsJson ?? '[]'); - assert(!calls.includes('sw/web-fetch'), - 'Firefox Preview refusal makes no module request', outcome?.callsJson); - assert(/does not allow remote module imports/.test(outcome.status) - && /inline reviewed source directly in the code you run/.test(outcome.status), - 'Firefox Preview shows actionable import recovery', JSON.stringify(outcome)); - writeFileSync(join(OUTPUT, 'preview-notebook-remote-refused.png'), + `, [notebookId, slowUrl]); + assert(stoppedFetch?.abort?.stopped === true + && stoppedFetch?.run?.result?.stopped === true + && stoppedFetch.elapsedMs < 3_000 + && providerServer.slowModuleRequests === 1 + && stoppedFetch.status === 'Notebook run stopped.' + && !stoppedFetch.output.includes(REMOTE_MODULE_SLOW_PATH), + 'Stop cancels the Firefox host fetch operation without late resolver output', + JSON.stringify({ stoppedFetch, requests: providerServer.slowModuleRequests })); + const timedOutFetch = await driver.executeAsync(` + const [id, url] = arguments; + const done = arguments[arguments.length - 1]; + (async () => { + const browser = (await import('/vendor/browser-polyfill.js')).default; + const tab = await browser.tabs.getCurrent(); + const startedAt = Date.now(); + const run = await browser.tabs.sendMessage(tab.id, { + type: 'js/eval', notebookId: id, runId: 'firefox-remote-fetch-timeout', + code: 'import ' + JSON.stringify(url) + '; return false;', timeoutMs: 400, + }); + await new Promise((resolveWait) => setTimeout(resolveWait, 300)); + done({ + run, elapsedMs: Date.now() - startedAt, + status: document.getElementById('run-status')?.textContent ?? '', + output: document.getElementById('console-output')?.textContent ?? '', + }); + })().catch((error) => done({ error: error?.message || String(error) })); + `, [notebookId, slowUrl]); + assert(/timed out/.test(timedOutFetch?.run?.result?.error ?? '') + && timedOutFetch?.run?.result?.errorCode === 'notebook_run_timeout' + && timedOutFetch?.run?.result?.stopped !== true + && timedOutFetch.elapsedMs < 3_000 + && timedOutFetch.status === 'Notebook run timed out.' + && providerServer.slowModuleRequests === 2 + && !timedOutFetch.output.includes(REMOTE_MODULE_SLOW_PATH), + 'the Firefox import deadline cancels host work and recovers without late output', + JSON.stringify({ timedOutFetch, requests: providerServer.slowModuleRequests })); + writeFileSync(join(OUTPUT, 'preview-notebook-remote-restricted.png'), Buffer.from(await driver.screenshot(), 'base64')); }; @@ -3950,8 +4424,20 @@ const main = async () => { assert(unsupportedVoiceNudge === false, 'Firefox hides voice setup when no transcription engine can run'); + if (process.env.FIREFOX_RUNTIME_ONLY === 'notebook-modules') { + await runModuleImportPolicySmoke(driver, server); + await runLocalModuleGraphSmoke(driver); + const installedPreviewId = await driver.installAddon(resolve(previewArtifact)); + assert(installedPreviewId === PREVIEW_ADDON_ID, + 'the targeted Notebook run installs the Firefox Preview package'); + await runPreviewRemoteModuleSmoke(driver, providerServer); + console.log('Firefox Notebook module smoke OK'); + return; + } + await runPrivateNetworkDnrSmoke(driver, providerServer); await runModuleImportPolicySmoke(driver, server); + await runLocalModuleGraphSmoke(driver); await runBoundActorSmoke(driver, providerServer); await runNumericTabAuthoritySmoke(driver, providerServer); await runActorLifetimeSmoke({ providerServer }); @@ -4124,7 +4610,7 @@ const main = async () => { && previewPosture?.dwebAvailable === false, 'installed Firefox Preview omits the dweb surface until it has a mesh host', JSON.stringify(previewPosture)); - await runPreviewRemoteModuleSmoke(driver); + await runPreviewRemoteModuleSmoke(driver, providerServer); await driver.setWindowRect({ width: 400, height: 900, x: 0, y: 0 }); diff --git a/tests/background/notebook-resolve-lane.test.ts b/tests/background/notebook-resolve-lane.test.ts index 64bceeca..ab04e30c 100644 --- a/tests/background/notebook-resolve-lane.test.ts +++ b/tests/background/notebook-resolve-lane.test.ts @@ -40,3 +40,11 @@ describe('notebook-client — re-inflates the OPFS not-found signal (edit_file 3 expect(src).toMatch(/err\.name = 'NotFoundError'/); }); }); + +describe('notebook-client: Stop reaches the exact Notebook run', () => { + test('eval mints a run id and relays abort through js/abort', () => { + expect(src).toMatch(/const runId = crypto\.randomUUID\(\)/); + expect(src).toMatch(/type: 'js\/abort', notebookId, runId: message\.runId/); + expect(src).toMatch(/opts\.signal/); + }); +}); diff --git a/tests/background/routes-engine.test.ts b/tests/background/routes-engine.test.ts index c0ec7963..c3e9d5b7 100644 --- a/tests/background/routes-engine.test.ts +++ b/tests/background/routes-engine.test.ts @@ -162,6 +162,53 @@ describe('sw/web-fetch', () => { expect(await pending).toEqual({ ok: false, error: 'aborted' }); expect(seenSignal?.aborted).toBe(true); }); + + test('a Notebook can cancel only its own token-bound module fetch', async () => { + let seenSignal: AbortSignal | undefined; + const notebookUrl = 'moz-extension://test/engine-tabs/notebook-tab/index.html#n1'; + const routes = makeEngineRoutes(baseDeps({ + browser: { + runtime: { + getURL: (path: string) => `moz-extension://test/${path}`, + getContexts: async () => [], sendMessage: async () => ({ ok: true }), + }, + storage: { local: { get: async () => ({}), set: async () => {} } }, + }, + vmHttpFetch: async ({ signal }: any) => { + seenSignal = signal; + return await new Promise((_resolve, reject) => { + signal.addEventListener('abort', () => reject(new Error('aborted')), { once: true }); + }); + }, + })); + const sender = { tab: { id: 41, url: notebookUrl }, url: notebookUrl }; + const pending = (routes['sw/web-fetch'] as any)({ + url: 'https://modules.example/a.js', noCache: true, + abortToken: 'token-1', notebookId: 'n1', + }, sender); + await Promise.resolve(); + expect(await (routes['sw/web-fetch-abort'] as any)( + { abortToken: 'token-1', notebookId: 'n2' }, { + tab: { id: 99, url: 'moz-extension://test/engine-tabs/notebook-tab/index.html#n2' }, + url: 'moz-extension://test/engine-tabs/notebook-tab/index.html#n2', + }, + )).toEqual({ ok: true, aborted: false }); + expect(await (routes['sw/web-fetch-abort'] as any)( + { abortToken: 'token-1', notebookId: 'n1' }, sender, + )).toEqual({ ok: true, aborted: true }); + expect(await pending).toEqual({ ok: false, error: 'aborted' }); + expect(seenSignal?.aborted).toBe(true); + + const deadlinePending = (routes['sw/web-fetch'] as any)({ + url: 'https://modules.example/slow.js', noCache: true, + abortToken: 'token-2', notebookId: 'n1', deadlineAt: Date.now() + 10, + }, sender); + expect(await deadlinePending).toEqual({ ok: false, error: 'aborted' }); + expect(seenSignal?.aborted).toBe(true); + expect(await (routes['sw/web-fetch-abort'] as any)( + { abortToken: 'token-2', notebookId: 'n1' }, sender, + )).toEqual({ ok: true, aborted: false }); + }); }); describe('app/vm meta + apps Library', () => { diff --git a/tests/engine-tabs/notebook-tab/worker-source.test.ts b/tests/engine-tabs/notebook-tab/worker-source.test.ts index edbf8bdb..097bc16a 100644 --- a/tests/engine-tabs/notebook-tab/worker-source.test.ts +++ b/tests/engine-tabs/notebook-tab/worker-source.test.ts @@ -47,7 +47,7 @@ describe('buildWorkerSource — bodyLine + mapWorkerError', () => { expect(lines[bodyLine + 1]).toBe('mean([A]);'); }); - test('mapWorkerError rewrites entry-blob frames to entryPath:userLine and leaves others alone', () => { + test('mapWorkerError rewrites entry and imported-module blob frames to source paths', () => { const blobUrl = 'blob:chrome-extension://abc/uuid-1'; const raw = [ 'ReferenceError: nope is not defined', @@ -55,10 +55,13 @@ describe('buildWorkerSource — bodyLine + mapWorkerError', () => { ` at ${blobUrl}:12:1`, // preamble frame (before body) → untouched ' at blob:chrome-extension://abc/other-module:7:3', // another module → untouched ].join('\n'); - const out = mapWorkerError(raw, blobUrl, 213, 'notebook.js'); + const out = mapWorkerError(raw, blobUrl, 213, 'notebook.js', new Map([ + ['lib/failure.js', { blobUrl: 'blob:chrome-extension://abc/other-module' }], + ])); expect(out).toContain('at notebook.js:2:9'); expect(out).toContain(`at ${blobUrl}:12:1`); - expect(out).toContain('at blob:chrome-extension://abc/other-module:7:3'); + expect(out).toContain('at ./lib/failure.js:7:3'); + expect(out).not.toContain('blob:chrome-extension://abc/other-module'); expect(out).not.toContain(`${blobUrl}:214:9`); }); diff --git a/tests/peerd-engine/single-module-linker.test.ts b/tests/peerd-engine/single-module-linker.test.ts new file mode 100644 index 00000000..c98c1e39 --- /dev/null +++ b/tests/peerd-engine/single-module-linker.test.ts @@ -0,0 +1,56 @@ +import { describe, expect, test } from 'bun:test'; +import { readFile } from 'node:fs/promises'; +import { buildWorkerSource, NOTEBOOK_BUILTINS, SEAL_MODULE_URL } from '../../extension/engine-tabs/notebook-tab/worker-source.js'; +import { linkSingleModuleWorker } from '../../extension/peerd-engine/single-module-linker.js'; + +const withFileFetch = async (run: () => Promise): Promise => { + const original = globalThis.fetch; + globalThis.fetch = (async (input: RequestInfo | URL, init?: RequestInit) => { + const url = input instanceof Request ? input.url : String(input); + if (url.startsWith('file:')) { + return new Response(await readFile(new URL(url)), { + headers: { 'content-type': 'application/wasm' }, + }); + } + return original(input, init); + }) as typeof fetch; + try { return await run(); } + finally { globalThis.fetch = original; } +}; + +describe('single-module Notebook linker', () => { + test('emits one seal-first worker module with local ESM semantics intact', async () => { + const files: Record = { + 'lib/value.js': `await Promise.resolve(); +export let value = 40; +export const sourceUrl = import.meta.url; +export const add = (n) => { value += n; };`, + 'lib/index.js': "export { value, sourceUrl, add } from './value.js';", + 'side.js': "import { add } from './lib/index.js'; add(2); globalThis.sideOrder = ['side'];", + }; + let sequence = 0; + const built = await buildWorkerSource(`import './side.js'; +import * as values from './lib/index.js'; +await Promise.resolve(); +return { value: values.value, order: globalThis.sideOrder };`, { + notebookId: 'linker-test', + resolverDeps: { + readFile: async (path) => files[path], + makeBlobUrl: () => `blob:peerd-test/${sequence += 1}`, + }, + }); + const linked = await withFileFetch(() => linkSingleModuleWorker( + built.source, built.cache, [SEAL_MODULE_URL, ...Object.values(NOTEBOOK_BUILTINS)], + )); + expect(linked.startsWith("'use strict';\n")).toBe(true); + expect(linked).not.toContain(`import '${SEAL_MODULE_URL}'`); + expect(linked).not.toContain('import.meta'); + expect(linked).toContain('"./lib/value.js"'); + expect(linked).toMatch(/\/\*__peerd_module:[0-9a-f-]+:module:.%2Flib%2Fvalue\.js__\*\//); + expect(linked.indexOf('applyRealmSeal(globalThis)')) + .toBeLessThan(linked.indexOf('let value = 40')); + expect(linked).not.toContain('blob:peerd-test'); + expect(linked).toContain('value += n'); + expect(linked).toContain('await Promise.resolve()'); + }); +}); diff --git a/tests/peerd-runtime/tools/remote-import-policy.test.ts b/tests/peerd-runtime/tools/remote-import-policy.test.ts index dfa78bbc..b9643a61 100644 --- a/tests/peerd-runtime/tools/remote-import-policy.test.ts +++ b/tests/peerd-runtime/tools/remote-import-policy.test.ts @@ -56,6 +56,49 @@ describe('remote module package policy reaches the model as a tool failure', () if (!result.ok) expect(result.error).toBe(policyError); }); + test('Notebook Stop is structured and does not look like a code error to retry', async () => { + const controller = new AbortController(); + const result = await jsNotebookTool.execute({ code: 'while (true) {}' }, { + session: { sessionId: 'session-1', kind: 'chat' }, + abortSignal: controller.signal, + jsClient: { + eval: async (_code: string, options: { signal?: AbortSignal }) => { + expect(options.signal).toBe(controller.signal); + return { durationMs: 0, stopped: true }; + }, + }, + } as any); + expect(result).toEqual({ + ok: true, + content: '[STOPPED] Notebook run was stopped. Do not retry automatically.', + }); + expect((result as any).evalError).toBeUndefined(); + }); + + test('Notebook busy is a non-code result and does not invite an automatic retry', async () => { + const result = await jsNotebookTool.execute({ code: 'return 1;' }, { + session: { sessionId: 'session-1', kind: 'chat' }, + jsClient: { eval: async () => ({ errorCode: 'notebook_run_busy' }) }, + } as any); + expect(result.ok).toBe(true); + expect(result.content).toContain('[BUSY]'); + expect(result.content).toContain('was not run'); + expect(result.content).toContain('Do not retry automatically'); + expect((result as any).evalError).toBeUndefined(); + }); + + test('Notebook timeout is a non-code result with explicit retry guidance', async () => { + const result = await jsNotebookTool.execute({ code: 'while (true) {}' }, { + session: { sessionId: 'session-1', kind: 'chat' }, + jsClient: { eval: async () => ({ errorCode: 'notebook_run_timeout' }) }, + } as any); + expect(result.ok).toBe(true); + expect(result.content).toContain('[TIMEOUT]'); + expect(result.content).toContain('increase timeoutMs'); + expect(result.content).toContain('Do not retry the same request automatically'); + expect((result as any).evalError).toBeUndefined(); + }); + test.each([ ['script', scriptTool], ['Notebook', jsNotebookTool], diff --git a/tests/red-team/scenarios/06-sandbox-escape.ts b/tests/red-team/scenarios/06-sandbox-escape.ts index 049b44c0..b3cc8e56 100644 --- a/tests/red-team/scenarios/06-sandbox-escape.ts +++ b/tests/red-team/scenarios/06-sandbox-escape.ts @@ -271,7 +271,9 @@ export const scenario: Scenario = { 'tests/peerd-engine/module-resolver-toolbox.test.ts (remote-to-local toolbox refusal)', 'tests/engine-tabs/notebook-tab/worker-caps-profile.test.ts (remote whole-run profile)', 'tests/peerd-runtime/tools/remote-import-policy.test.ts (remote output fence)', + 'tests/peerd-engine/single-module-linker.test.ts (seal-first graph with no child loads)', 'extension/tests/unit/red-team/sandbox-escape.test.js (in-browser red-team framing)', + 'scripts/firefox/run-runtime-tests.mjs (opaque worker host, string-compilation refusal, cancellable compiler and fetch, local and remote graph parity)', 'scripts/cdp/states.mjs actor-command-sender-pin (live engine-tab forgery)', 'scripts/cdp/states.mjs notebook-remote-restricted (live visible-Notebook host wall)', ].join('; '); diff --git a/tests/store/store-posture.test.ts b/tests/store/store-posture.test.ts index 49cfedcf..a7116082 100644 --- a/tests/store/store-posture.test.ts +++ b/tests/store/store-posture.test.ts @@ -150,10 +150,10 @@ describe('store feature flags', () => { .toContain('export const REMOTE_MODULE_IMPORTS_ENABLED = true'); }); - test('Firefox preview disables unavailable browser facilities', () => { + test('Firefox preview disables unavailable dweb facilities and keeps remote modules', () => { const source = genChannelConfigSource('preview', 'firefox'); expect(source).toContain('export const DWEB_ENABLED = false'); - expect(source).toContain('export const REMOTE_MODULE_IMPORTS_ENABLED = false'); + expect(source).toContain('export const REMOTE_MODULE_IMPORTS_ENABLED = true'); expect(source).not.toContain('dwebEnabled:'); expect(source).not.toContain('dwebAgentEnabled:'); expect(genChannelConfigSource('preview', 'chrome'))