browser-sqlite 1.0.0-rc.3 → 1.0.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/NOTICE +56 -0
  2. package/README.md +112 -104
  3. package/dist/LICENSE +21 -0
  4. package/dist/NOTICE +56 -0
  5. package/dist/abandon.d.ts +77 -0
  6. package/dist/api.d.ts +426 -0
  7. package/dist/bulk.d.ts +57 -0
  8. package/dist/capabilities.d.ts +23 -0
  9. package/dist/client.d.ts +221 -0
  10. package/dist/credits.d.ts +31 -0
  11. package/dist/{esm/src/debug.d.ts → debug.d.ts} +21 -10
  12. package/dist/delete.d.ts +48 -0
  13. package/dist/epochs.d.ts +85 -0
  14. package/dist/errors.d.ts +76 -0
  15. package/dist/index.d.ts +8 -0
  16. package/dist/index.js +5 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/inspect.d.ts +96 -0
  19. package/dist/locks.d.ts +172 -0
  20. package/dist/logger.d.ts +24 -0
  21. package/dist/pool.d.ts +191 -0
  22. package/dist/queries.d.ts +65 -0
  23. package/dist/scheduler.d.ts +145 -0
  24. package/dist/sqlite-codes.d.ts +154 -0
  25. package/dist/supervisor.d.ts +17 -0
  26. package/dist/transaction.d.ts +61 -0
  27. package/dist/types.d.ts +642 -0
  28. package/dist/utils.d.ts +156 -0
  29. package/dist/worker/cloneable.d.ts +25 -0
  30. package/dist/worker/probes.d.ts +26 -0
  31. package/dist/worker/sqlite-code.d.ts +9 -0
  32. package/dist/worker/statement-cache.d.ts +36 -0
  33. package/dist/worker/wa-sqlite-async.wasm +0 -0
  34. package/dist/worker/wa-sqlite-jspi.wasm +0 -0
  35. package/dist/worker/wa-sqlite.wasm +0 -0
  36. package/dist/worker/worker.js +11 -0
  37. package/dist/worker/worker.js.map +1 -0
  38. package/package.json +46 -22
  39. package/dist/esm/index.js +0 -424
  40. package/dist/esm/rslib.config.d.ts +0 -2
  41. package/dist/esm/rstest.config.d.ts +0 -2
  42. package/dist/esm/src/client.d.ts +0 -332
  43. package/dist/esm/src/index.d.ts +0 -1
  44. package/dist/esm/src/orchestrator.d.ts +0 -87
  45. package/dist/esm/src/types.d.ts +0 -83
  46. package/dist/esm/src/utils.d.ts +0 -6
  47. /package/dist/{esm/src → worker}/worker.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sources":["../../src/worker/worker.ts","../../src/credits.ts","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/dist/wa-sqlite-jspi.mjs","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/dist/wa-sqlite-async.mjs","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/dist/wa-sqlite.mjs","webpack://webpack/runtime/define_property_getters","webpack://webpack/runtime/has_own_property","webpack://webpack/runtime/make_namespace_object","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/VFS.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/FacadeVFS.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/examples/MemoryVFS.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/examples/MemoryAsyncVFS.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/WebLocksMixin.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/examples/OPFSAnyContextVFS.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/examples/IDBMirrorVFS.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/examples/IDBBatchAtomicVFS.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/examples/AccessHandlePoolVFS.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/examples/OPFSCoopSyncVFS.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/examples/Lock.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/examples/LazyLock.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/examples/WriteAhead.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/examples/OPFSWriteAheadVFS.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/examples/OPFSAdaptiveVFS.js","../../node_modules/.pnpm/wa-sqlite@https+++codeload.github.com+rhashimoto+wa-sqlite+tar.gz+93b9230892a4c440ddbc0_5bf908129445888c0828d6fca38c2caf/node_modules/wa-sqlite/src/sqlite-api.js","../../src/types.ts","../../src/locks.ts","../../src/errors.ts","../../src/utils.ts","../../src/worker/cloneable.ts","../../src/worker/probes.ts","../../src/worker/sqlite-code.ts","../../src/worker/statement-cache.ts"],"sourcesContent":["/**\n * SQLite Web Worker entry point.\n *\n * Each worker in the pool runs this module. It handles two message types:\n * - `open` — loads the wa-sqlite WASM module, opens the database, and transitions to READY\n * - `query` — executes a SQL statement and streams results back as chunks\n *\n * Lifecycle labels (`NEW`, `READY`, `RUNNING`, `ABORTING`, `CLOSED`, `DEAD`) are\n * maintained by `src/pool.ts`, not by this module. From this worker's perspective:\n * the database open is serialised by `navigator.locks` (`initLockName(file)`);\n * readiness is reported via the `ready` message; an abort arrives as a `stop`\n * message and is observed through the credit gate's stopped flag; on the `sync` build only,\n * `interrupt()` also delivers the abort via a shared slot that the gate never sees.\n */\nimport * as SQLite from 'wa-sqlite/src/sqlite-api.js';\nimport {\n SQLITE_CANTOPEN,\n SQLITE_INTERRUPT,\n SQLITE_OPEN_READWRITE,\n SQLITE_PREPARE_PERSISTENT,\n SQLITE_ROW,\n} from 'wa-sqlite/src/sqlite-constants.js';\nimport {\n createCreditGate,\n createMessageChannelTick,\n DEFAULT_CREDIT_WINDOW,\n} from '../credits';\nimport type { SQLiteErrorCode } from '../errors';\nimport { createLocks, initLockName } from '../locks';\nimport {\n type ClientMessageData,\n defaultBuildFor,\n type PlatformFeature,\n type SQLiteBuild,\n type SQLiteVFS,\n VFS_CAPABILITIES,\n type WasmLocation,\n type WorkerMessageData,\n} from '../types';\nimport { renderPragmas } from '../utils';\nimport { cloneable } from './cloneable';\nimport { firstMissing } from './probes';\nimport { sqliteCodeOf } from './sqlite-code';\nimport { createStatementCache } from './statement-cache';\n\ntype SQLOptions = {\n chunkSize?: number;\n signal?: AbortSignal;\n abortable?: boolean;\n};\n\n/**\n * VM instructions between two progress-handler calls. Measured 2026-09-04 on\n * Chromium 151 and Firefox 153: at this value the handler is free within noise\n * on every shape, and an abort overshoots by 1-6 ms. 10x coarser saves 2-4\n * points on pure computation and costs up to 87 ms on Firefox/async — the wrong\n * side of the trade. See the design's §4.3.\n */\nconst PROGRESS_OPS = 100_000;\n\n/**\n * The DOMException name a second `createSyncAccessHandle` on a held file\n * throws. Specified by the File System API, and the same on both engines —\n * unlike the message, which is engine prose (\"Access Handles cannot be\n * created…\" on Chromium). Never match on that.\n */\nconst HELD_ELSEWHERE = 'NoModificationAllowedError';\n\n/** How long to keep waiting for a dying worker to let go, and how often. */\nconst ACQUIRE_RETRY_BUDGET_MS = 10_000;\nconst ACQUIRE_RETRY_INTERVAL_MS = 100;\n\n/**\n * Instantiates the VFS, waiting out a worker of this origin that has just died\n * and still holds the files.\n *\n * `AccessHandlePoolVFS` acquires EVERY file in its directory exclusively, and a\n * worker killed INSIDE a statement keeps its OPFS sync access handles far\n * longer than an idle one: ~2000 ms against ~65 ms, measured on Chromium\n * 2026-09-16. Both callers open squarely inside that window — a pool worker\n * restarted by `handleDeath`, which terminates and respawns in one synchronous\n * pass, and the delete worker a consumer reaches by calling `close()` and then\n * `deleteDatabase()`, which is the ordinary sequence.\n *\n * **Waiting here is waiting for a corpse, not hoping.** The caller already\n * holds the connection lock exclusively, so no other CLIENT can be in this\n * file; on a VFS that takes its whole directory the only possible holder is a\n * worker of ours on its way out. That is what makes a retry correct rather\n * than a papering-over.\n *\n * Bounded at 10 s although `openTimeout` and `DELETE_TIMEOUT` (30 s each)\n * already bound it from outside — deliberately, and below them: a holder that\n * is NOT ours (another application on this origin using the same VFS directly)\n * must still surface the engine's own error, which says what is wrong, rather\n * than the caller's timeout, which does not. The 10 s is one measurement plus\n * margin, not a ceiling: 2039 ms was one machine, one engine, one statement.\n */\nconst createVfsInstance = async (\n vfsClass: VFSClass,\n vfs: string,\n module: WASQLiteModule,\n): Promise<unknown> => {\n const deadline = Date.now() + ACQUIRE_RETRY_BUDGET_MS;\n for (;;) {\n try {\n return await vfsClass.create(vfs, module, { lockPolicy: 'shared' });\n } catch (error) {\n if (\n (error as { name?: string })?.name !== HELD_ELSEWHERE ||\n Date.now() >= deadline\n ) {\n throw error;\n }\n await new Promise((resolve) =>\n setTimeout(resolve, ACQUIRE_RETRY_INTERVAL_MS),\n );\n }\n }\n};\n\n/**\n * How long to keep retrying an open that a dead context's handle is blocking.\n * Sized on the window itself: a worker killed inside a `step()` holds its OPFS\n * handles for up to ~2 s on Chromium (HANDLE-CORPSE, `mem:measurements`), and\n * 65 ms at rest. In the failures this was written for the replacement worker's\n * boot had already spent most of that window — the file was free 1-12 ms after\n * the open gave up, and a replayed attempt succeeded in 4-14 ms, 4 times out\n * of 4 (measured 2026-09-18).\n */\nconst OPEN_RETRY_BUDGET_MS = 2_500;\n\n/**\n * `sqlite3_open_v2`, retried for a VFS that takes an exclusive OPFS access\n * handle inside `xOpen` — where `createVfsInstance`'s retry cannot reach,\n * because the handle is taken per file, long after the VFS instance exists.\n *\n * Retried blind, and that is not a shortcut: wa-sqlite's `jOpen` catches the\n * acquisition failure, logs it to the worker's console and returns\n * `SQLITE_CANTOPEN` with no `lastError`, so nothing here can tell a held file\n * from any other refusal (measured 2026-09-18). What narrows it instead is the\n * declaration: only a VFS holding an EXCLUSIVE handle can be blocked by a\n * context that answers nothing, and only those retry at all. The cost is borne\n * by a genuine open failure on those VFS alone, which waits out the budget\n * before reporting — an error path, and a bounded one.\n */\nconst openWithRetry = async (\n sqlite: { open_v2: (file: string) => Promise<number> },\n file: string,\n vfs: SQLiteVFS,\n): Promise<number> => {\n if (!VFS_CAPABILITIES[vfs].exclusiveFileHandle) {\n return sqlite.open_v2(file);\n }\n const deadline = Date.now() + OPEN_RETRY_BUDGET_MS;\n for (;;) {\n try {\n return await sqlite.open_v2(file);\n } catch (error) {\n if (Date.now() >= deadline) throw error;\n await new Promise((resolve) =>\n setTimeout(resolve, ACQUIRE_RETRY_INTERVAL_MS),\n );\n }\n }\n};\n\n/**\n * The one savepoint this library opens inside a transaction (spec 2026-09-11,\n * D7). One at a time — the next message concludes it before anything else —\n * so a fixed name suffices, and its three statements stay in the statement\n * cache. A consumer's own savepoints never sit above it.\n */\nconst LIBRARY_SAVEPOINT = '__bsq_sp';\n\nconst WA_SQLITE_BUILDS = {\n sync: () =>\n import(/* webpackChunkName: \"wa-sqlite\" */ 'wa-sqlite/dist/wa-sqlite.mjs'),\n async: () =>\n import(\n /* webpackChunkName: \"wa-sqlite-async\" */ 'wa-sqlite/dist/wa-sqlite-async.mjs'\n ),\n jspi: () =>\n import(\n /* webpackChunkName: \"wa-sqlite-jspi\" */ 'wa-sqlite/dist/wa-sqlite-jspi.mjs'\n ),\n} as const satisfies Record<SQLiteBuild, () => Promise<any>>;\n\n/**\n * VFS loaders only. Which build each VFS may run on lives in `VFS_CAPABILITIES`\n * (`src/types.ts`) and nowhere else — the client validates against it and sends\n * the chosen build in the `open` message, so there is no second copy to drift.\n */\nconst VFSConfigs = {\n OPFSAdaptiveVFS: {\n fs: () =>\n import(\n /* webpackChunkName: \"OPFSAdaptiveVFS\" */ 'wa-sqlite/src/examples/OPFSAdaptiveVFS.js'\n ),\n },\n OPFSWriteAheadVFS: {\n fs: () =>\n import(\n /* webpackChunkName: \"OPFSWriteAheadVFS\" */ 'wa-sqlite/src/examples/OPFSWriteAheadVFS.js'\n ),\n },\n OPFSCoopSyncVFS: {\n fs: () =>\n import(\n /* webpackChunkName: \"OPFSCoopSyncVFS\" */ 'wa-sqlite/src/examples/OPFSCoopSyncVFS.js'\n ),\n },\n AccessHandlePoolVFS: {\n fs: () =>\n import(\n /* webpackChunkName: \"AccessHandlePoolVFS\" */ 'wa-sqlite/src/examples/AccessHandlePoolVFS.js'\n ),\n },\n IDBBatchAtomicVFS: {\n fs: () =>\n import(\n /* webpackChunkName: \"IDBBatchAtomicVFS\" */ 'wa-sqlite/src/examples/IDBBatchAtomicVFS.js'\n ),\n },\n IDBMirrorVFS: {\n fs: () =>\n import(\n /* webpackChunkName: \"IDBMirrorVFS\" */ 'wa-sqlite/src/examples/IDBMirrorVFS.js'\n ),\n },\n OPFSAnyContextVFS: {\n fs: () =>\n import(\n /* webpackChunkName: \"OPFSAnyContextVFS\" */ 'wa-sqlite/src/examples/OPFSAnyContextVFS.js'\n ),\n },\n MemoryVFS: {\n fs: () =>\n import(\n /* webpackChunkName: \"MemoryVFS\" */ 'wa-sqlite/src/examples/MemoryVFS.js'\n ),\n },\n MemoryAsyncVFS: {\n fs: () =>\n import(\n /* webpackChunkName: \"MemoryAsyncVFS\" */ 'wa-sqlite/src/examples/MemoryAsyncVFS.js'\n ),\n },\n} as const satisfies Record<SQLiteVFS, { fs: () => Promise<any> }>;\n\n/**\n * `SQLITE_STMTSTATUS_MEMUSED`. Not in `sqlite-constants.js` — the façade does\n * not wrap the call that uses it.\n */\nconst SQLITE_STMTSTATUS_MEMUSED = 99;\n\n/**\n * The statement's retained footprint, for the cache's byte bound.\n *\n * Read in `settle` rather than after `prepare` because `settle` is the only\n * place `cache.set` is called, so no branch needs a special case and no state\n * is threaded through the generator. Measured 2026-09-02: the value does not\n * move over a statement's life — after prepare, after binding 32 765 values,\n * after step, after reset — so where it is read cannot change it. Synchronous\n * and not an I/O call, so it suspends nothing on the Asyncify build.\n */\nconst stmtWeight = (module: WASQLiteModule, stmt: number) =>\n module._sqlite3_stmt_status(stmt, SQLITE_STMTSTATUS_MEMUSED, 0);\n\nlet openedDB:\n | Promise<{ sqlite: SQLiteAPI; module: WASQLiteModule; db: number }>\n | undefined;\nconst gate = createCreditGate(createMessageChannelTick());\nconst locks = createLocks();\n\n/** Resolved while no query is running; `close` waits on it before closing. */\nlet queryRunning: PromiseWithResolvers<void> | undefined;\nconst idleUntilQueryEnds = () => queryRunning?.promise ?? Promise.resolve();\nlet closing = false;\n\n/**\n * Set while worker 0 waits for the client's connection lock (spec 2026-09-15,\n * §3.2). `proceed` resolves and clears it; a `close` arriving while it is set\n * is answered at once, since nothing was opened.\n */\nlet proceedGate: PromiseWithResolvers<void> | undefined;\n// Assigned in open() before any query can arrive: the worker posts `ready`\n// only after open() completes, and pool.ts does not dispatch a query until\n// the worker is READY. The default 'async' is never read.\nlet currentBuild: SQLiteBuild = 'async';\n\ntype OpenOptions = {\n vfs: SQLiteVFS;\n build?: SQLiteBuild | undefined;\n wasm?: WasmLocation | undefined;\n pragmas?: Record<string, string> | undefined;\n statementCacheSize?: number | undefined;\n statementCacheBytes?: number | undefined;\n abortSlots?: SharedArrayBuffer | undefined;\n abortIndex?: number | undefined;\n declineWithout?: readonly PlatformFeature[] | undefined;\n probeFirst?: readonly PlatformFeature[] | undefined;\n};\n\n/**\n * The Emscripten module argument carrying the consumer's `wasmUrl`, or\n * `undefined` when they gave none.\n *\n * `undefined` is not a detail. `findWasmBinary` reads\n * `if (Module[\"locateFile\"])` and otherwise takes its\n * `new URL('wa-sqlite.wasm', import.meta.url)` branch — the branch a bundler\n * rewrites to the hashed asset it emitted. Setting `locateFile`\n * unconditionally, even to a faithful pass-through, would leave that branch\n * for a path built from the worker's own directory, where no hashed asset\n * exists. Every bundled consumer would break to serve a hand-moved one.\n *\n * The two forms differ in who names the file: with a `base`, the glue passes\n * its own file name and each build finds its own `.wasm` from one directory;\n * with a `file`, the caller has named a specific build's asset, so the glue's\n * name is discarded.\n */\nconst wasmModuleArg = (wasm: WasmLocation | undefined) =>\n wasm === undefined\n ? undefined\n : {\n locateFile:\n 'base' in wasm ? (path: string) => wasm.base + path : () => wasm.file,\n };\n\n/**\n * Called once per worker thread when the client sends the `open` message.\n * Loads the wa-sqlite WASM module and VFS, acquires the initialization lock to\n * prevent parallel DB opens across the pool, opens the SQLite database, then\n * transitions this worker to READY and replaces the top-level message handler\n * with the query handler.\n *\n * Database open is serialised by a `navigator.locks` lock on `initLockName(file)`.\n * On success, posts a `ready` message; `src/pool.ts` then transitions the worker\n * label from `NEW` to `READY`.\n *\n * @param file - Normalized database file name passed from `createSQLiteClient`.\n * @param options - VFS selection and PRAGMA map.\n */\nconst open = (file: string, options: OpenOptions) => {\n if (openedDB) {\n throw new Error('DB already opened');\n }\n\n // Spec 2026-09-13: before anything is loaded. A surplus worker of a pool the\n // environment caps opens nothing — no wasm, no VFS, no file — and says so,\n // so nothing fails and wa-sqlite prints nothing. The client terminates it.\n const missing = firstMissing(options.declineWithout ?? []);\n if (missing !== null) {\n self.postMessage({\n type: 'declined',\n callId: 0,\n missing,\n } satisfies WorkerMessageData);\n return;\n }\n\n // Spec 2026-09-15, §3.2: where the VFS is exclusive without a feature the\n // page cannot probe, report it and open nothing until the client has decided\n // the connection lock. A worker that opened first would fail on a file\n // another client holds — or take it from under that client.\n if (options.probeFirst && options.probeFirst.length > 0) {\n proceedGate = Promise.withResolvers<void>();\n self.postMessage({\n type: 'probed',\n callId: 0,\n missing: firstMissing(options.probeFirst),\n } satisfies WorkerMessageData);\n }\n\n const { vfs, wasm, pragmas = {}, abortSlots, abortIndex } = options;\n const build = options.build ?? defaultBuildFor(vfs);\n currentBuild = build;\n\n const slot =\n abortSlots && abortIndex !== undefined\n ? new Int32Array(abortSlots)\n : undefined;\n\n const vfsConfig = VFSConfigs[vfs];\n\n // Hoisted for the final `catch`. A failed `sqlite3_open_v2` says nothing\n // useful on its own: it used to name only the function, and since wa-sqlite\n // #330 it carries the connection's message, which is SQLite's generic\n // `unable to open database file`. Either way the real cause is the VFS's,\n // kept in `lastError` (spec 2026-09-13, §3.4). A fresh instance per open()\n // means the value cannot be stale.\n let vfsInstanceSeen: { lastError?: unknown } | undefined;\n\n openedDB = (proceedGate?.promise ?? Promise.resolve())\n .then(() => WA_SQLITE_BUILDS[build]())\n .then(({ default: factory }) => factory(wasmModuleArg(wasm)))\n .then((module) => {\n const sqlite = SQLite.Factory(module);\n return vfsConfig.fs().then((vfsModule) => ({\n sqlite,\n module,\n vfsModule: (vfsModule as unknown as Record<string, VFSClass>)[vfs],\n }));\n })\n .then(({ sqlite, module, vfsModule }) => {\n return (createVfsInstance(vfsModule, vfs, module) as Promise<any>).then(\n (vfsInstance: any) => {\n vfsInstanceSeen = vfsInstance;\n sqlite.vfs_register(vfsInstance, true);\n // One lock for open + pragmas. withLock releases on throw too, which\n // is what the explicit unlock() in the old .catch existed to do.\n //\n // `file` arrives already normalized from `createSQLiteClient`, so\n // two clients spelling the same database differently (e.g. 'data' vs\n // './data') always compete on the same lock and open the same file.\n // The relative form is intentional: sqlite3_open_v2 checks\n // nPathname + 8 > mxPathname (64, wa-sqlite/src/VFS.js:10) before\n // xOpen, so an absolute name costs a character the budget cannot spare\n // (measured: broke all 96 browser tests on 56-char names). The VFS\n // normalizes internally, so 'data' and '/data' open the same OPFS file.\n return locks.withLock(initLockName(vfs, file), async () => {\n const db = await openWithRetry(sqlite, file, vfs);\n for (const statement of renderPragmas(pragmas)) {\n for await (const stmt of sqlite.statements(db, statement)) {\n while ((await sqlite.step(stmt)) === SQLITE_ROW) {}\n }\n }\n return { sqlite, module, db };\n });\n },\n );\n })\n .then((opened) => {\n self.postMessage({ type: 'ready', callId: 0 });\n return opened;\n })\n .catch((error: unknown) => {\n const base =\n error instanceof Error ? error.message : `Failed to open ${file}`;\n const vfsError = vfsInstanceSeen?.lastError;\n const detail =\n vfsError instanceof Error\n ? `${vfsError.name}: ${vfsError.message}`\n : undefined;\n // Carried across the postMessage boundary so pool.ts can mint\n // SQLiteError('BUSY') rather than SQLiteError('WORKER_CRASHED') — only\n // for wa-sqlite's own SQLiteError (sqliteCodeOf), never any numeric\n // `code`: the open chain awaits navigator.storage.getDirectory() and\n // AccessHandlePoolVFS's #acquireAccessHandles(), whose DOMExceptions\n // carry a numeric legacy `code` that is not SQLite's (e.g. 18 for\n // SecurityError, which reads as SQLITE_CODES.TOOBIG).\n const sqliteCode = sqliteCodeOf(error);\n self.postMessage({\n type: 'open-error',\n callId: 0,\n message: detail ? `${base}: ${detail}` : base,\n cause: cloneable(detail ? vfsError : error),\n ...(sqliteCode !== undefined ? { sqliteCode } : {}),\n });\n throw error;\n });\n\n // Nothing awaits openedDB until a query arrives; keep a failed open from\n // becoming an unhandled rejection in the worker.\n openedDB.catch(() => {});\n\n const reply = (data: WorkerMessageData) => {\n self.postMessage(data);\n };\n\n // One query at a time per worker (a worker holds one lease), so a single\n // counter cannot interleave. Reset by the `query` case, read by its reply.\n let prepared = 0;\n\n const cache = createStatementCache({\n maxEntries: options.statementCacheSize ?? 0,\n maxBytes: options.statementCacheBytes ?? 0,\n });\n\n const query = async function* (\n callId: number,\n sql: string,\n params: unknown[],\n options?: SQLOptions,\n ) {\n if (!openedDB) throw new Error('No DB opened');\n\n const { sqlite, db, module } = await openedDB;\n const { chunkSize = 1 } = options ?? {};\n\n const buffer: Record<string, unknown>[] = [];\n\n /**\n * Stamps SQLite's extended result code on a wa-sqlite error where the\n * statement failed (spec 2026-09-14, §5.1). The connection's code describes\n * its MOST RECENT call, so it is read before any cleanup can overwrite it:\n * `settle`'s reset or finalize, or the ROLLBACK the savepoint path issues\n * after a failed conclusion. `??=`: the first stamp wins.\n */\n const stamped = (e: unknown) => {\n if (sqliteCodeOf(e) !== undefined) {\n (e as { extendedCode?: number }).extendedCode ??=\n module._sqlite3_extended_errcode(db);\n }\n return e;\n };\n\n /** Binds and streams one statement. Never finalises: the caller owns it. */\n const run = async function* (stmt: number) {\n try {\n if (params?.length) {\n sqlite.bind_collection(stmt, params as any);\n }\n } catch (e) {\n throw stamped(e);\n }\n // Column names are read after the first SQLITE_ROW, not before: v2\n // re-preparation happens during step(), so names read beforehand would\n // describe the old schema on a cached statement after an ALTER TABLE.\n let cols: string[] | undefined;\n\n while (true) {\n if (gate.isStopped()) break;\n\n let result: number;\n try {\n result = await sqlite.step(stmt);\n } catch (e) {\n if ((e as { code?: number })?.code === SQLITE_INTERRUPT) {\n // Two triggers, and both mean the client has already rejected:\n // a `stop` message processed by gate.stop(), or the shared slot\n // written by interrupt() on the sync build, which never yields so\n // the message cannot reach it. Break, so settle() sees a clean\n // exit and keeps the statement cached.\n break;\n }\n throw stamped(e);\n }\n if (gate.isStopped()) break;\n\n if (result === SQLITE_ROW) {\n cols ??= sqlite.column_names(stmt) as string[];\n const row = sqlite.row(stmt);\n // Deliberately not `Object.fromEntries(cols.map(...))`: that shape\n // allocates one two-element array per column per row on the hottest\n // path in the library. Measured 2026-08-31 over 50 000 rows x 12\n // columns — 17.5 ms against 4.4 ms on Chromium, 23 ms against 14 ms\n // on Firefox (`mem:measurements`). Same output, so nothing but the\n // allocation is lost. Do not \"simplify\" it back.\n const out: Record<string, unknown> = {};\n for (let i = 0; i < cols.length; i++) {\n out[cols[i] as string] = row[i];\n }\n buffer.push(out);\n\n if (buffer.length >= chunkSize) {\n yield buffer.splice(0, chunkSize);\n }\n } else {\n while (buffer.length) {\n yield buffer.splice(0, chunkSize);\n }\n break;\n }\n }\n };\n\n /**\n * The exit discipline, on every path out of a retained statement:\n * `reset` ends the statement's implicit transaction, which is what keeps\n * a cached statement from holding a read transaction open and poisoning\n * the barrier; `clear_bindings` is the correctness condition of reuse.\n * A statement that truly errored is finalised — `sqlite3_reset` returns the\n * failed step's code, so resetting it throws. Exception: SQLITE_INTERRUPT\n * from the abort-via-signal path also makes reset throw, but the statement\n * is still reset to its initial state and can be cached.\n */\n const settle = async (stmt: number, failed: boolean) => {\n if (failed) {\n cache.delete(sql);\n await sqlite.finalize(stmt);\n return;\n }\n try {\n await sqlite.reset(stmt);\n sqlite.clear_bindings(stmt);\n } catch (e) {\n // sqlite3_reset returns SQLITE_INTERRUPT when the statement was stopped\n // mid-step by the progress handler (abort-via-signal path). Despite\n // the non-OK return code, sqlite3_reset DOES reset the statement to\n // its initial state and it is safe to cache. Any other error is a\n // genuine failure: finalize and evict.\n if ((e as { code?: number })?.code !== SQLITE_INTERRUPT) {\n cache.delete(sql);\n await sqlite.finalize(stmt);\n return;\n }\n sqlite.clear_bindings(stmt);\n }\n for (const handle of cache.set(sql, stmt, stmtWeight(module, stmt))) {\n await sqlite.finalize(handle);\n }\n };\n\n const { abortable } = options ?? {};\n const wantsSignal = abortable === true;\n const canYield = currentBuild !== 'sync';\n // A VFS that must yield gets the task turn on every statement; only an\n // abortable statement may be stopped by it (`yieldsDuringStatements`).\n const yields =\n canYield && (wantsSignal || VFS_CAPABILITIES[vfs].yieldsDuringStatements);\n const polls = !canYield && wantsSignal && slot !== undefined;\n const abortedHere = () =>\n slot !== undefined && Atomics.load(slot, abortIndex as number) === callId;\n if (yields || polls) {\n sqlite.progress_handler(\n db,\n PROGRESS_OPS,\n yields\n ? async () => {\n // The task turn is what lets a queued `stop` be delivered, and\n // what lets IDBBatchAtomicVFS's IndexedDB transaction commit.\n await gate.tick();\n return wantsSignal && gate.isStopped() ? 1 : 0;\n }\n : () => (abortedHere() ? 1 : 0),\n null,\n );\n }\n try {\n const cached = cache.get(sql);\n\n if (typeof cached === 'number') {\n let failed = false;\n try {\n yield* run(cached);\n } catch (e) {\n failed = true;\n throw e;\n } finally {\n await settle(cached, failed);\n }\n } else if (cached === 'uncacheable') {\n // Today's path, untouched: the generator finalises what it yields.\n for await (const stmt of sqlite.statements(db, sql)) {\n prepared++;\n yield* run(stmt);\n }\n } else {\n let keep: number | undefined;\n let live: number | undefined;\n let single: boolean | undefined;\n let failed = false;\n try {\n for await (const stmt of sqlite.statements(db, sql, {\n unscoped: true,\n flags: SQLITE_PREPARE_PERSISTENT,\n })) {\n prepared++;\n single ??= isSingleStatement(sql, sqlite.sql(stmt));\n // Assigned BEFORE the rows are streamed: first() breaks out of the\n // loop, and an assignment after `yield*` would never run.\n if (single) keep = stmt;\n else live = stmt;\n\n yield* run(stmt);\n\n if (!single) {\n await sqlite.finalize(stmt);\n live = undefined;\n }\n }\n } catch (e) {\n failed = true;\n throw stamped(e);\n } finally {\n if (keep !== undefined) {\n await settle(keep, failed);\n } else if (live !== undefined) {\n // An early exit from a multi-statement string.\n await sqlite.finalize(live);\n }\n if (single === false) {\n for (const handle of cache.markUncacheable(sql)) {\n await sqlite.finalize(handle);\n }\n }\n }\n }\n\n yield sqlite.changes(db);\n } catch (e) {\n // Only the uncacheable branch can still reach here unstamped: its\n // prepare failures come straight from wa-sqlite's own statements()\n // generator, with no catch of ours in between. Checked 2026-09-14 in\n // sqlite-api.js: between a failed prepare and the error leaving that\n // generator, it calls only sqlite3_errmsg (read-only) and sqlite3_free\n // (memory only) — neither touches sqlite3_extended_errcode(db). The\n // cached and fresh branches already stamp in `run` and their own inner\n // catch, so `??=` makes this a no-op for those.\n throw stamped(e);\n } finally {\n if (yields || polls) sqlite.progress_handler(db, 0, () => 0, null);\n }\n };\n\n self.onmessage = async (event: MessageEvent<ClientMessageData>) => {\n const { data } = event;\n switch (data.type) {\n case 'query': {\n const { callId, sql, params, options } = data;\n try {\n // Reset the credit gate for this call. pool.ts sets the worker's\n // status to RUNNING after posting the query.\n gate.reset(callId, options?.credits ?? DEFAULT_CREDIT_WINDOW);\n prepared = 0;\n queryRunning = Promise.withResolvers<void>();\n let affected = 0;\n\n // Spec 2026-09-11, D5: conclude the savepoint the previous\n // savepointed write left open, then open this statement's own —\n // before the statement, in that order. Through `query` itself so they\n // take the statement cache; `prepared` is reset after them so the\n // reply describes the caller's statement alone. A failure here is this\n // query's `error`, reported below like any other.\n const savepoint = options?.savepoint;\n if (savepoint) {\n const control = async (statement: string) => {\n for await (const _ of query(callId, statement, [])) {\n // Savepoint statements return no rows.\n }\n };\n try {\n if (savepoint.conclude === 'undo')\n await control(`ROLLBACK TO ${LIBRARY_SAVEPOINT}`);\n if (savepoint.conclude)\n await control(`RELEASE ${LIBRARY_SAVEPOINT}`);\n if (savepoint.open)\n await control(`SAVEPOINT ${LIBRARY_SAVEPOINT}`);\n } catch (e) {\n // Amended 2026-09-11 (final review): the worker makes that\n // death happen — on any failure in step 1 or 2 it issues a full\n // ROLLBACK before replying, so the reply reports\n // `inTransaction: false` and the transaction dies through D6\n // with that error as cause. A failure of the ROLLBACK itself is\n // swallowed: the reply below reports whatever `inTransaction`\n // actually reads, and the caller's error is this one, not that\n // one. Found by the final review: `tx.write('…; RELEASE u',\n // …)` abandoned pops `__bsq_sp` with `u`, and the next\n // conclusion fails.\n try {\n await control('ROLLBACK');\n } catch {\n // Best effort — see above.\n }\n throw e;\n } finally {\n prepared = 0;\n }\n }\n\n for await (const chunk of query(callId, sql, params, options)) {\n if (typeof chunk === 'number') {\n affected = chunk;\n break;\n }\n if ((await gate.take(callId)) === 'stopped') break;\n reply({ type: 'chunk', callId, data: chunk });\n }\n\n if (closing) {\n reply({\n type: 'error',\n callId,\n message: 'The SQLite client has been closed.',\n inTransaction: await connectionInTransaction(),\n });\n } else {\n reply({\n type: 'done',\n callId,\n affected,\n prepared,\n inTransaction: await connectionInTransaction(),\n });\n }\n } catch (e) {\n // Only for wa-sqlite's own SQLiteError (sqliteCodeOf), never any\n // numeric `code`. Without this the code dies at the postMessage\n // boundary and the client can only string-match the message.\n const sqliteCode = sqliteCodeOf(e);\n reply({\n type: 'error',\n callId,\n ...(typeof e === 'object'\n ? e instanceof Error\n ? { message: e.message, cause: cloneable(e.cause) }\n : { message: 'Unknown error', cause: e }\n : { message: `Unknown error (${e})` }),\n ...(sqliteCode !== undefined ? { sqliteCode } : {}),\n ...(typeof (e as { extendedCode?: unknown })?.extendedCode ===\n 'number'\n ? {\n sqliteExtendedCode: (e as { extendedCode: number })\n .extendedCode,\n }\n : {}),\n ...(typeof (e as { errorCode?: unknown })?.errorCode === 'string'\n ? { errorCode: (e as { errorCode: SQLiteErrorCode }).errorCode }\n : {}),\n inTransaction: await connectionInTransaction(),\n });\n } finally {\n queryRunning?.resolve();\n queryRunning = undefined;\n }\n break;\n }\n case 'proceed': {\n proceedGate?.resolve();\n proceedGate = undefined;\n break;\n }\n case 'close': {\n if (proceedGate) {\n // Still waiting for the connection lock: nothing was opened, so\n // there is nothing to drain or close (spec 2026-09-15, §3.2).\n closing = true;\n reply({ type: 'closed', callId: 0 });\n break;\n }\n // Spec §5.3: with the tick, `close` is deliverable mid-query for the\n // first time. Closing a database under a live statement returns\n // SQLITE_BUSY, which the catch below would swallow while the row loop\n // kept running. Stop first, let the query unwind, then close.\n closing = true;\n gate.stop();\n await idleUntilQueryEnds();\n try {\n const { sqlite, db } = await openedDB!;\n // SQLite refuses to close a connection carrying live statements,\n // and the catch below would swallow the SQLITE_BUSY. idleUntilQueryEnds\n // has already returned, so the in-flight query's statement is reset\n // and filed: nothing here is in use.\n for (const handle of cache.drain()) {\n await sqlite.finalize(handle);\n }\n await sqlite.close(db);\n } catch {\n // A database that never opened has nothing to close; the client is\n // shutting down either way and must still get its reply.\n }\n reply({ type: 'closed', callId: 0 });\n break;\n }\n case 'open': {\n // A second open is a protocol error; open() already guards against this.\n throw new Error('DB already opened');\n }\n case 'delete': {\n // A delete worker never opens a database, so this message cannot arrive\n // here: it is handled by the top-level onmessage before open() runs.\n throw new Error(\n 'delete message cannot arrive after a database is opened',\n );\n }\n case 'credit': {\n gate.grant(data.callId, data.n);\n break;\n }\n case 'stop': {\n gate.stop();\n break;\n }\n default: {\n const _unexpected: never = data;\n throw new Error(\n `Unhandled worker message: ${JSON.stringify(_unexpected)}`,\n );\n }\n }\n };\n};\n\n/**\n * Whether `sql` compiled to exactly one statement, decided from the text\n * `sqlite3_sql` returns for the first statement — its own span of the input,\n * not the whole input. Asked before the first `step`, because `first()` and an\n * aborted read both leave the generator early and would never learn a count.\n *\n * Normalisation is edge whitespace and one trailing semicolon, applied\n * identically to both sides, which are two views of the same text: nothing is\n * case-folded, and an interior newline sits in the same place on both sides.\n * A false negative costs a compilation; a false positive would replay only\n * the first statement of a multi-statement string, so the failure direction\n * is the safe one.\n */\nconst isSingleStatement = (sql: string, statementText: string) => {\n const normalize = (s: string) => s.trim().replace(/;+$/, '').trim();\n return normalize(sql) === normalize(statementText);\n};\n\n/**\n * The database and the two siblings SQLite may leave beside it. The set is\n * upstream's own (`OPFSCoopSyncVFS.js:8`), not a guess: a stale `-journal` next\n * to a deleted database is a hot journal, and recreating a database of that\n * name would have SQLite attempt a rollback from it. On `AccessHandlePoolVFS`\n * each sibling also occupies its own pool slot.\n */\nconst DB_RELATED_SUFFIXES = ['', '-journal', '-wal'] as const;\n\n/**\n * Removes one OPFS entry if it is there, walking the path's directories.\n * A missing entry is success — which is what makes this pass inert should\n * upstream's `jDelete` start removing the file itself.\n */\nconst removeOpfsEntry = async (path: string): Promise<void> => {\n const segments = path.split('/').filter(Boolean);\n const name = segments.pop();\n if (!name) return;\n try {\n let dir = await navigator.storage.getDirectory();\n for (const segment of segments) {\n dir = await dir.getDirectoryHandle(segment);\n }\n await dir.removeEntry(name);\n } catch (error) {\n if ((error as DOMException)?.name === 'NotFoundError') return;\n throw error;\n }\n};\n\n/**\n * Whether an OPFS entry exists at `path`. The presence test for the\n * `opfs-path` layout, where the database IS the file at that name — so the\n * file system answers directly, without going through a VFS whose open path\n * has conditions of its own.\n */\nconst opfsEntryExists = async (path: string): Promise<boolean> => {\n const segments = path.split('/').filter(Boolean);\n const name = segments.pop();\n if (!name) return false;\n try {\n let dir = await navigator.storage.getDirectory();\n for (const segment of segments) {\n dir = await dir.getDirectoryHandle(segment);\n }\n await dir.getFileHandle(name);\n return true;\n } catch (error) {\n if ((error as DOMException)?.name === 'NotFoundError') return false;\n throw error;\n }\n};\n\n/**\n * Deletes a database without opening it.\n *\n * The VFS is instantiated because `jDelete` is the only correct removal on\n * `AccessHandlePoolVFS` — it un-associates the SQLite path and returns the slot\n * to the pool, where deleting the OPFS file by name would match nothing.\n *\n * The second pass exists because two of the seven persistent `jDelete`\n * implementations do not delete: `OPFSCoopSyncVFS` truncates a file it never\n * removes, and is a silent no-op for a database that is not open — which is\n * every database here, since nothing is opened; `OPFSWriteAheadVFS` throws for\n * anything that is not a bound temporary file. Both keep the database at the\n * plain OPFS path, so the remedy is the `removeEntry` the other two OPFS VFS\n * already perform internally. It runs for all four `opfs-path` VFS rather than\n * for an exception list, because it is idempotent and a list would be a second\n * place to update when a VFS is added.\n */\nconst deleteDatabaseFiles = async (data: {\n file: string;\n vfs: SQLiteVFS;\n build?: SQLiteBuild;\n wasm?: WasmLocation;\n}): Promise<boolean> => {\n const { file, vfs, wasm } = data;\n const build = data.build ?? defaultBuildFor(vfs);\n\n const { default: factory } = await WA_SQLITE_BUILDS[build]();\n const module = await factory(wasmModuleArg(wasm));\n const vfsModule = (await VFSConfigs[vfs].fs()) as unknown as Record<\n string,\n VFSClass\n >;\n const vfsInstance = (await createVfsInstance(\n vfsModule[vfs],\n vfs,\n module,\n )) as any;\n\n const layout = VFS_CAPABILITIES[vfs].layout;\n\n // Presence, and it is decided differently per layout.\n //\n // On `opfs-path` the database IS the file at that name, so the entry answers\n // — and it has to, because an open probe cannot. SQLITE_CANTOPEN does NOT\n // mean \"not there\" on every VFS: OPFSCoopSyncVFS returns it for a file that\n // exists but is empty, because its jOpen only reaches a path recorded in\n // `accessiblePaths` and it records one only for a file with a size. A\n // database opened and never written was therefore reported absent (measured\n // 2026-09-18; `delete.test.ts` pins it). The same code comes back when the\n // file's exclusive handle is held by a context that has died, so reading it\n // as absence would also let a deletion silently skip a live database's files.\n //\n // Everywhere else the probe stands: open without SQLITE_OPEN_CREATE and read\n // SQLITE_CANTOPEN (14) as absence. Any other error is a genuine failure and\n // must not be swallowed as DATABASE_NOT_FOUND — a corrupt database returns\n // SQLITE_CORRUPT, and a WASM/VFS start-up failure throws before open_v2 is\n // reached at all.\n const sqlite = SQLite.Factory(module);\n sqlite.vfs_register(vfsInstance, true);\n if (layout === 'opfs-path') {\n if (!(await opfsEntryExists(file))) {\n // Nothing to delete. Close the VFS instance and report absence — no\n // jDelete and no opfs-path second pass, because those would operate on\n // files just confirmed to be absent.\n await vfsInstance.close?.();\n return false;\n }\n } else {\n try {\n const db = await sqlite.open_v2(file, SQLITE_OPEN_READWRITE);\n // Database exists; close the handle at once and proceed to deletion.\n // The same vfsInstance services both this probe and the jDelete calls\n // below, so no re-acquisition of OPFS access handles is needed.\n await sqlite.close(db);\n } catch (error: unknown) {\n if ((error as { code?: unknown })?.code === SQLITE_CANTOPEN) {\n await vfsInstance.close?.();\n return false;\n }\n throw error;\n }\n }\n\n try {\n // Not on the opfs-path layout: the OPFS pass below removes every file there,\n // after the VFS has closed, so jDelete adds nothing there — and OPFSWriteAheadVFS's\n // refuses anything but its own temporary files, logging an error per call\n // (three per deletion, on every engine; 2026-09-14). No test can see that\n // console: it belongs to the delete worker.\n if (layout !== 'opfs-path') {\n for (const suffix of DB_RELATED_SUFFIXES) {\n // Pass syncDir=1, not 0. IDBBatchAtomicVFS.jDelete (wa-sqlite\n // IDBBatchAtomicVFS.js:119-133) only awaits its IndexedDB transaction\n // when syncDir is truthy — with 0 the delete is queued on #chain but\n // the worker exits before it commits, leaving the data intact.\n // OPFSAdaptiveVFS, OPFSAnyContextVFS and IDBMirrorVFS honour the same\n // flag with `if (syncDir) await result`; the remaining VFS ignore it.\n await vfsInstance.jDelete(`${file}${suffix}`, 1);\n }\n }\n\n // Commit barrier for idb-store VFS. This call is a barrier, not a check —\n // its return value is deliberately discarded. Removing it silently\n // reintroduces the data-survives-deletion defect that invariant 7 caught.\n //\n // Why it works: IDBBatchAtomicVFS.jDelete with syncDir=1 calls sync(false),\n // which awaits #chain (IDB requests submitted) but NOT #txComplete\n // (transaction oncomplete). The rw delete transactions are still pending\n // when the worker would otherwise exit; worker termination closes the IDB\n // connection and aborts them. jAccess issues a ro transaction on the same\n // connection whose lambda returns the metadata.get promise, so #q awaits\n // the request result (IDBBatchAtomicVFS.js:146-157). Per the IndexedDB\n // specification, a ro transaction cannot acquire its object-store locks\n // until every rw transaction with overlapping scope on the same connection\n // has committed — that is a spec requirement, not engine behaviour. When\n // metadata.get's onsuccess fires, the rw deletes are durably committed.\n //\n // IDBMirrorVFS (also idb-store) is inert here: its jAccess is a pure\n // in-memory map lookup that issues no IDB transaction (IDBMirrorVFS.js:\n // 239-253), so no serialisation barrier is created. That is harmless\n // because IDBMirrorVFS.#deleteFile already awaits oncomplete before\n // returning (IDBMirrorVFS.js:738-751).\n //\n // The gate is by layout declaration, not by VFS name, keeping with this\n // project's convention that VFS behaviour is declared once in\n // VFS_CAPABILITIES and never special-cased by name. A future idb-store VFS\n // inherits the barrier, which is either needed (like IDBBatchAtomicVFS) or\n // inert (like IDBMirrorVFS).\n if (layout === 'idb-store') {\n const pResOut = new DataView(new ArrayBuffer(4));\n await vfsInstance.jAccess(`${file}`, 0, pResOut);\n }\n } finally {\n await vfsInstance.close?.();\n }\n\n if (layout === 'opfs-path') {\n // Sidecars first, the main file (suffix '') last. If a sidecar removal\n // then failed while the main file went first, the file this VFS opens to\n // probe existence would already be gone: the next deleteDatabase answers\n // DATABASE_NOT_FOUND and nothing public can remove the sidecar left\n // behind. Removing the main file last means a failure here always still\n // leaves it in place, so a retried deleteDatabase finds the database and\n // tries again. No test can inject the failed removal this guards against.\n for (const suffix of [\n ...DB_RELATED_SUFFIXES.filter((suffix) => suffix !== ''),\n ...VFS_CAPABILITIES[vfs].extraFileSuffixes,\n ]) {\n await removeOpfsEntry(`${file}${suffix}`);\n }\n await removeOpfsEntry(file);\n }\n\n return true;\n};\n\n/**\n * Whether the connection is inside a transaction right now. Read after every\n * query and sent with its reply, because SQLite can leave a transaction by\n * itself — an interrupted write rolls the whole transaction back\n * (https://www.sqlite.org/c3ref/interrupt.html) — and the client has no other\n * way to learn it. `undefined` when no connection is open.\n */\nconst connectionInTransaction = async (): Promise<boolean | undefined> => {\n if (!openedDB) return undefined;\n try {\n const { sqlite, db } = await openedDB;\n return sqlite.get_autocommit(db) === 0;\n } catch {\n return undefined;\n }\n};\n\n// Top-level message handler: processes only 'open' messages.\n// After open() completes, the query handler installed inside open() takes over\n// and this handler is no longer the active responder for incoming messages.\nself.onmessage = async (event: MessageEvent<ClientMessageData>) => {\n const { data } = event;\n switch (data.type) {\n case 'open': {\n const {\n file,\n vfs,\n build,\n pragmas,\n statementCacheSize,\n statementCacheBytes,\n abortSlots,\n abortIndex,\n declineWithout,\n probeFirst,\n } = data;\n open(file, {\n vfs,\n build,\n pragmas,\n statementCacheSize,\n statementCacheBytes,\n abortSlots,\n abortIndex,\n declineWithout,\n probeFirst,\n });\n break;\n }\n case 'delete': {\n deleteDatabaseFiles(data)\n .then((found) => {\n if (found) {\n self.postMessage({ type: 'deleted', callId: 0 });\n } else {\n self.postMessage({ type: 'not-found' });\n }\n })\n .catch((error: unknown) => {\n // Only for wa-sqlite's own SQLiteError (sqliteCodeOf), never any\n // numeric `code`: this path rethrows every DOMException but\n // NotFoundError, and a DOMException's legacy `code` is numeric\n // (e.g. 18 for SecurityError) but is not SQLite's.\n const sqliteCode = sqliteCodeOf(error);\n self.postMessage({\n type: 'error',\n callId: 0,\n message:\n error instanceof Error\n ? error.message\n : `Failed to delete ${data.file}`,\n cause: cloneable(error),\n ...(sqliteCode !== undefined ? { sqliteCode } : {}),\n });\n });\n break;\n }\n case 'query': {\n // queries arrive only after open() replaces self.onmessage; this case\n // is unreachable at runtime but satisfies the exhaustive check.\n break;\n }\n case 'close': {\n // close arrived before open completed — no database to close; reply immediately.\n self.postMessage({ type: 'closed', callId: 0 });\n break;\n }\n // No query can be running before open.\n case 'credit':\n case 'stop':\n // open() replaces this handler synchronously; proceed always arrives after.\n case 'proceed': {\n break;\n }\n default: {\n const _unexpected: never = data;\n throw new Error(\n `Unhandled worker message: ${JSON.stringify(_unexpected)}`,\n );\n }\n }\n};\n","/**\n * The credit gate: back-pressure for chunk production, and the task turn that\n * makes a worker reachable by `postMessage` while it is inside a query.\n *\n * Pure and Node-testable on purpose. B1 survived for months because the\n * scheduler was reachable only through slow browser tests; this module has the\n * same profile — subtle state transitions otherwise buried behind a worker, a\n * VFS and a real database.\n */\n\n/** One turn of the task queue. Injected so Node tests can drive it. */\nexport type Tick = () => Promise<void>;\n\n/** Chunks a worker may send before waiting for a credit. Spec §3.4. */\nexport const DEFAULT_CREDIT_WINDOW = 2;\n\nexport type CreditGate = {\n /** Begin a query: `window` credits, not stopped, credit counter cleared. */\n reset: (callId: number, window: number) => void;\n /** Add credits for `callId`. A stale `callId` is ignored (§5.4). */\n grant: (callId: number, n: number) => void;\n /** Stop the current query, waking any wait in progress (§5.1). */\n stop: () => void;\n /** Spend one credit. Always costs one task turn first. */\n take: (callId: number) => Promise<'go' | 'stopped'>;\n isStopped: () => boolean;\n tick: Tick;\n};\n\n/**\n * A task turn via MessageChannel. NOT setTimeout: nested setTimeout is clamped\n * to 4 ms, which would cost seconds over a few hundred chunks (spec §3.1).\n */\nexport const createMessageChannelTick = (): Tick => {\n const channel = new MessageChannel();\n const waiters: (() => void)[] = [];\n channel.port1.onmessage = () => {\n waiters.shift()?.();\n };\n return () =>\n new Promise<void>((resolve) => {\n waiters.push(resolve);\n channel.port2.postMessage(0);\n });\n};\n\nexport const createCreditGate = (tick: Tick): CreditGate => {\n let credits = 0;\n let currentCallId = -1;\n let stopped = false;\n let signal = Promise.withResolvers<void>();\n\n /** Settle whoever is waiting, and arm a fresh signal for the next wait. */\n const wake = () => {\n const previous = signal;\n signal = Promise.withResolvers<void>();\n previous.resolve();\n };\n\n return {\n reset: (callId, window) => {\n currentCallId = callId;\n credits = window;\n stopped = false;\n },\n\n grant: (callId, n) => {\n if (callId !== currentCallId) return;\n credits += n;\n wake();\n },\n\n stop: () => {\n stopped = true;\n wake();\n },\n\n take: async (callId) => {\n if (callId !== currentCallId) return 'stopped';\n // Unconditional, before the credit check: this is the task turn, and it\n // is the only reason a queued `stop` or `close` is ever delivered.\n await tick();\n while (credits <= 0 && !stopped) {\n await signal.promise;\n }\n if (stopped) return 'stopped';\n credits -= 1;\n return 'go';\n },\n\n isStopped: () => stopped,\n tick,\n };\n};\n","\nvar Module = (() => {\n var _scriptName = import.meta.url;\n \n return (\nfunction(moduleArg = {}) {\n var moduleRtn;\n\nvar Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith(\"blob:\")){scriptDirectory=\"\"}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{fetch(url,{credentials:\"same-origin\"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+\" : \"+response.url))}).then(onload,onerror)}}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module[\"HEAP8\"]=HEAP8=new Int8Array(b);Module[\"HEAP16\"]=HEAP16=new Int16Array(b);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(b);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(b);Module[\"HEAP32\"]=HEAP32=new Int32Array(b);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(b);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(b);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module[\"monitorRunDependencies\"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module[\"monitorRunDependencies\"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module[\"onAbort\"]?.(what);what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){if(Module[\"locateFile\"]){var f=\"wa-sqlite-jspi.wasm\";if(!isDataURI(f)){return locateFile(f)}return f}return new URL(\"wa-sqlite-jspi.wasm\",import.meta.url).href}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}function getBinaryPromise(binaryFile){if(!wasmBinary){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),error=>{try{resolve(getBinarySync(binaryFile))}catch(e){reject(e)}})})}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(binaryFile)&&typeof fetch==\"function\"){return fetch(binaryFile,{credentials:\"same-origin\"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){Asyncify.instrumentWasmImports(wasmImports);return{env:wasmImports,wasi_snapshot_preview1:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=Asyncify.instrumentWasmExports(wasmExports);wasmMemory=wasmExports[\"memory\"];updateMemoryViews();wasmTable=wasmExports[\"__indirect_function_table\"];addOnInit(wasmExports[\"__wasm_call_ctors\"]);removeRunDependency(\"wasm-instantiate\");return wasmExports}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){receiveInstance(result[\"instance\"])}if(Module[\"instantiateWasm\"]){try{return Module[\"instantiateWasm\"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name=\"ExitStatus\";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr,type=\"i8\"){if(type.endsWith(\"*\"))type=\"*\";switch(type){case\"i1\":return HEAP8[ptr];case\"i8\":return HEAP8[ptr];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":abort(\"to do getValue(i64) use WASM_BIGINT\");case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];case\"*\":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module[\"noExitRuntime\"]||true;function setValue(ptr,value,type=\"i8\"){if(type.endsWith(\"*\"))type=\"*\";switch(type){case\"i1\":HEAP8[ptr]=value;break;case\"i8\":HEAP8[ptr]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":abort(\"to do setValue(i64) use WASM_BIGINT\");case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;case\"*\":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\"\";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\";var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])};var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join(\"/\")),join2:(l,r)=>PATH.normalize(l+\"/\"+r)};var initRandomFill=()=>{if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){return view=>crypto.getRandomValues(view)}else abort(\"initRandomDevice\")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath=\"\",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!==\"\")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push(\"..\")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join(\"/\")}};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char(tty){return FS_stdin_getChar()},put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var zeroMemory=(address,size)=>{HEAPU8.fill(0,address,address+size);return address};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;return zeroMemory(ptr,size)};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[\".\",\"..\"];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var asyncLoad=(url,onload,onerror,noRunDep)=>{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):\"\";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file \"${url}\" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module[\"preloadPlugins\"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!=\"undefined\")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,\"r+\":2,w:512|64|1,\"w+\":512|64|2,a:1024|64|1,\"a+\":1024|64|2};var flags=flagModes[str];if(typeof flags==\"undefined\"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name=\"ErrnoError\";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split(\"/\").filter(p=>!!p);var current=FS.root;var current_path=\"/\";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count+1});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+=\"/\"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat(path){return FS.stat(path,true)},chmod(path,mode,dontFollow){var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.chmod(stream.node,mode)},chown(path,uid,gid,dontFollow){var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.chown(stream.node,uid,gid)},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open(path,flags,mode){if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS_modeStringToFlags(flags):flags;if(flags&64){mode=typeof mode==\"undefined\"?438:mode;mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error(`Invalid encoding type \"${opts.encoding}\"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice(\"/dev\",\"random\",randomByte);FS.createDevice(\"/dev\",\"urandom\",randomByte);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount(){var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams(){if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"<generic error, no stack>\"});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS}},init(input,output,error){FS.init.initialized=true;Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile(parent,name,url,canRead,canWrite){class LazyUint8Array{constructor(){this.lengthKnown=false;this.chunks=[]}get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||\"\",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size}stream_ops.read=(stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_fchown32(fd,owner,group){try{FS.fchown(fd,owner,group);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function syscallGetVarargI(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret}var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function ___syscall_ftruncate64(fd,length_low,length_high){var length=convertI32PairToI53Checked(length_low,length_high);try{if(isNaN(length))return 61;FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size<cwdLengthInBytes)return-68;stringToUTF8(cwd,buf,size);return cwdLengthInBytes}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_readlinkat(dirfd,path,buf,bufsize){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort(\"Invalid flags passed to unlinkat\")}return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var readI53FromI64=ptr=>HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296;function ___syscall_utimensat(dirfd,path,times,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path,true);if(!times){var atime=Date.now();var mtime=atime}else{var seconds=readI53FromI64(times);var nanoseconds=HEAP32[times+8>>2];atime=seconds*1e3+nanoseconds/(1e3*1e3);times+=16;seconds=readI53FromI64(times);nanoseconds=HEAP32[times+8>>2];mtime=seconds*1e3+nanoseconds/(1e3*1e3)}FS.utime(path,atime,mtime);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mmap_js(len,prot,flags,fd,offset_low,offset_high,allocated,addr){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,offset,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset_low,offset_high){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=date=>date.toLocaleTimeString(undefined,{hour12:false,timeZoneName:\"short\"}).split(\" \")[1];var winterName=extractZone(winter);var summerName=extractZone(summer);if(summerOffset<winterOffset){stringToUTF8(winterName,std_name,17);stringToUTF8(summerName,dst_name,17)}else{stringToUTF8(winterName,dst_name,17);stringToUTF8(summerName,std_name,17)}};var _emscripten_date_now=()=>Date.now();var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||\"./this.program\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i<str.length;++i){HEAP8[buffer++]=str.charCodeAt(i)}HEAP8[buffer]=0};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;tempI64=[rightsBase>>>0,(tempDouble=rightsBase,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+8>>2]=tempI64[0],HEAP32[pbuf+12>>2]=tempI64[1];tempI64=[rightsInheriting>>>0,(tempDouble=rightsInheriting,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+16>>2]=tempI64[0],HEAP32[pbuf+20>>2]=tempI64[1];return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break;if(typeof offset!=\"undefined\"){offset+=curr}}return ret};function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var _fd_sync=function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return Asyncify.handleSleep(wakeUp=>{var mount=stream.node.mount;if(!mount.type.syncfs){wakeUp(0);return}mount.type.syncfs(mount,false,err=>{if(err){wakeUp(29);return}wakeUp(0)})})}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}};_fd_sync.isAsync=true;var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=\"undefined\"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var adapters_support=function(){const handleAsync=typeof Asyncify===\"object\"?Asyncify.handleAsync.bind(Asyncify):null;Module[\"handleAsync\"]=handleAsync;const targets=new Map;Module[\"setCallback\"]=(key,target)=>targets.set(key,target);Module[\"getCallback\"]=key=>targets.get(key);Module[\"deleteCallback\"]=key=>targets.delete(key);adapters_support=function(isAsync,key,...args){const receiver=targets.get(key);let methodName=null;const f=typeof receiver===\"function\"?receiver:receiver[methodName=UTF8ToString(args.shift())];if(isAsync){if(handleAsync){return handleAsync(()=>f.apply(receiver,args))}throw new Error(\"Synchronous WebAssembly cannot call async function\")}const result=f.apply(receiver,args);if(typeof result?.then==\"function\"){console.error(\"unexpected Promise\",f);throw new Error(`${methodName} unexpectedly returned a Promise`)}return result}};function _ipp(...args){return adapters_support(false,...args)}function _ipp_async(...args){return adapters_support(true,...args)}_ipp_async.isAsync=true;function _ippipppp(...args){return adapters_support(false,...args)}function _ippipppp_async(...args){return adapters_support(true,...args)}_ippipppp_async.isAsync=true;function _ippp(...args){return adapters_support(false,...args)}function _ippp_async(...args){return adapters_support(true,...args)}_ippp_async.isAsync=true;function _ipppi(...args){return adapters_support(false,...args)}function _ipppi_async(...args){return adapters_support(true,...args)}_ipppi_async.isAsync=true;function _ipppiii(...args){return adapters_support(false,...args)}function _ipppiii_async(...args){return adapters_support(true,...args)}_ipppiii_async.isAsync=true;function _ipppiiip(...args){return adapters_support(false,...args)}function _ipppiiip_async(...args){return adapters_support(true,...args)}_ipppiiip_async.isAsync=true;function _ipppip(...args){return adapters_support(false,...args)}function _ipppip_async(...args){return adapters_support(true,...args)}_ipppip_async.isAsync=true;function _ipppj(...args){return adapters_support(false,...args)}function _ipppj_async(...args){return adapters_support(true,...args)}_ipppj_async.isAsync=true;function _ipppp(...args){return adapters_support(false,...args)}function _ipppp_async(...args){return adapters_support(true,...args)}_ipppp_async.isAsync=true;function _ippppi(...args){return adapters_support(false,...args)}function _ippppi_async(...args){return adapters_support(true,...args)}_ippppi_async.isAsync=true;function _ippppij(...args){return adapters_support(false,...args)}function _ippppij_async(...args){return adapters_support(true,...args)}_ippppij_async.isAsync=true;function _ippppip(...args){return adapters_support(false,...args)}function _ippppip_async(...args){return adapters_support(true,...args)}_ippppip_async.isAsync=true;function _ipppppip(...args){return adapters_support(false,...args)}function _ipppppip_async(...args){return adapters_support(true,...args)}_ipppppip_async.isAsync=true;function _vppippii(...args){return adapters_support(false,...args)}function _vppippii_async(...args){return adapters_support(true,...args)}_vppippii_async.isAsync=true;function _vppp(...args){return adapters_support(false,...args)}function _vppp_async(...args){return adapters_support(true,...args)}_vppp_async.isAsync=true;function _vpppip(...args){return adapters_support(false,...args)}function _vpppip_async(...args){return adapters_support(true,...args)}_vpppip_async.isAsync=true;var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module[\"onExit\"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var handleException=e=>{if(e instanceof ExitStatus||e==\"unwind\"){return EXITSTATUS}quit_(1,e)};var sigToWasmTypes=sig=>{var typeNames={i:\"i32\",j:\"i64\",f:\"f32\",d:\"f64\",e:\"externref\",p:\"i32\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;i<sig.length;++i){type.parameters.push(typeNames[sig[i]])}return type};var Asyncify={instrumentWasmImports(imports){var importPattern=/^(ipp|ipp_async|ippp|ippp_async|vppp|vppp_async|ipppj|ipppj_async|ipppi|ipppi_async|ipppp|ipppp_async|ipppip|ipppip_async|vpppip|vpppip_async|ippppi|ippppi_async|ippppij|ippppij_async|ipppiii|ipppiii_async|ippppip|ippppip_async|ippipppp|ippipppp_async|ipppppip|ipppppip_async|ipppiiip|ipppiiip_async|vppippii|vppippii_async|invoke_.*|__asyncjs__.*)$/;for(let[x,original]of Object.entries(imports)){if(typeof original==\"function\"){let isAsyncifyImport=original.isAsync||importPattern.test(x);if(isAsyncifyImport){imports[x]=original=new WebAssembly.Suspending(original)}}}},instrumentWasmExports(exports){var exportPattern=/^(sqlite3_close|sqlite3_finalize|sqlite3_open_v2|sqlite3_prepare|sqlite3_prepare16|sqlite3_prepare_v2|sqlite3_prepare16_v2|sqlite3_prepare_v3|sqlite3_prepare16_v3|sqlite3_reset|sqlite3_step|main|__main_argc_argv)$/;Asyncify.asyncExports=new Set;var ret={};for(let[x,original]of Object.entries(exports)){if(typeof original==\"function\"){let isAsyncifyExport=exportPattern.test(x);if(isAsyncifyExport){Asyncify.asyncExports.add(original);original=Asyncify.makeAsyncFunction(original)}ret[x]=(...args)=>original(...args)}else{ret[x]=original}}return ret},asyncExports:null,isAsyncExport(func){return Asyncify.asyncExports?.has(func)},handleAsync:async startAsync=>{try{return await startAsync()}finally{}},handleSleep(startAsync){return Asyncify.handleAsync(()=>new Promise(startAsync))},makeAsyncFunction(original){return WebAssembly.promising(original)}};var uleb128Encode=(n,target)=>{if(n<128){target.push(n)}else{target.push(n%128|128,n>>7)}};var generateFuncType=(sig,target)=>{var sigRet=sig.slice(0,1);var sigParam=sig.slice(1);var typeCodes={i:127,p:127,j:126,f:125,d:124,e:111};target.push(96);uleb128Encode(sigParam.length,target);for(var i=0;i<sigParam.length;++i){target.push(typeCodes[sigParam[i]])}if(sigRet==\"v\"){target.push(0)}else{target.push(1,typeCodes[sigRet])}};var convertJsFunctionToWasm=(func,sig)=>{if(typeof WebAssembly.Function==\"function\"){return new WebAssembly.Function(sigToWasmTypes(sig),func)}var typeSectionBody=[1];generateFuncType(sig,typeSectionBody);var bytes=[0,97,115,109,1,0,0,0,1];uleb128Encode(typeSectionBody.length,bytes);bytes.push(...typeSectionBody);bytes.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(new Uint8Array(bytes));var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports[\"f\"];return wrappedFunc};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr);if(Asyncify.isAsyncExport(func)){wasmTableMirror[funcPtr]=func=Asyncify.makeAsyncFunction(func)}}return func};var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i<offset+count;i++){var item=getWasmTableEntry(i);if(item){functionsInTableMap.set(item,i)}}}};var functionsInTableMap;var getFunctionAddress=func=>{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}try{wasmTable.grow(1)}catch(err){if(!(err instanceof RangeError)){throw err}throw\"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\"}return wasmTable.length-1};var setWasmTableEntry=(idx,func)=>{wasmTable.set(idx,func);wasmTableMirror[idx]=wasmTable.get(idx)};var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};var getCFunc=ident=>{var func=Module[\"_\"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\"){return UTF8ToString(ret)}if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func(...cArgs);function onDone(ret){if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}var asyncMode=opts?.async;if(asyncMode)return ret.then(onDone);ret=onDone(ret);return ret};var cwrap=(ident,returnType,argTypes,opts)=>{var numericArgs=!argTypes||argTypes.every(type=>type===\"number\"||type===\"boolean\");var numericRet=returnType!==\"string\";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};var getTempRet0=val=>__emscripten_tempret_get();var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var AsciiToString=ptr=>{var str=\"\";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;var UTF16ToString=(ptr,maxBytesToRead)=>{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();adapters_support();var wasmImports={__assert_fail:___assert_fail,__syscall_chmod:___syscall_chmod,__syscall_faccessat:___syscall_faccessat,__syscall_fchmod:___syscall_fchmod,__syscall_fchown32:___syscall_fchown32,__syscall_fcntl64:___syscall_fcntl64,__syscall_fstat64:___syscall_fstat64,__syscall_ftruncate64:___syscall_ftruncate64,__syscall_getcwd:___syscall_getcwd,__syscall_lstat64:___syscall_lstat64,__syscall_mkdirat:___syscall_mkdirat,__syscall_newfstatat:___syscall_newfstatat,__syscall_openat:___syscall_openat,__syscall_readlinkat:___syscall_readlinkat,__syscall_rmdir:___syscall_rmdir,__syscall_stat64:___syscall_stat64,__syscall_unlinkat:___syscall_unlinkat,__syscall_utimensat:___syscall_utimensat,_localtime_js:__localtime_js,_mmap_js:__mmap_js,_munmap_js:__munmap_js,_tzset_js:__tzset_js,emscripten_date_now:_emscripten_date_now,emscripten_get_now:_emscripten_get_now,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,fd_close:_fd_close,fd_fdstat_get:_fd_fdstat_get,fd_read:_fd_read,fd_seek:_fd_seek,fd_sync:_fd_sync,fd_write:_fd_write,ipp:_ipp,ipp_async:_ipp_async,ippipppp:_ippipppp,ippipppp_async:_ippipppp_async,ippp:_ippp,ippp_async:_ippp_async,ipppi:_ipppi,ipppi_async:_ipppi_async,ipppiii:_ipppiii,ipppiii_async:_ipppiii_async,ipppiiip:_ipppiiip,ipppiiip_async:_ipppiiip_async,ipppip:_ipppip,ipppip_async:_ipppip_async,ipppj:_ipppj,ipppj_async:_ipppj_async,ipppp:_ipppp,ipppp_async:_ipppp_async,ippppi:_ippppi,ippppi_async:_ippppi_async,ippppij:_ippppij,ippppij_async:_ippppij_async,ippppip:_ippppip,ippppip_async:_ippppip_async,ipppppip:_ipppppip,ipppppip_async:_ipppppip_async,vppippii:_vppippii,vppippii_async:_vppippii_async,vppp:_vppp,vppp_async:_vppp_async,vpppip:_vpppip,vpppip_async:_vpppip_async};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports[\"__wasm_call_ctors\"])();var _sqlite3_status64=Module[\"_sqlite3_status64\"]=(a0,a1,a2,a3)=>(_sqlite3_status64=Module[\"_sqlite3_status64\"]=wasmExports[\"sqlite3_status64\"])(a0,a1,a2,a3);var _sqlite3_status=Module[\"_sqlite3_status\"]=(a0,a1,a2,a3)=>(_sqlite3_status=Module[\"_sqlite3_status\"]=wasmExports[\"sqlite3_status\"])(a0,a1,a2,a3);var _sqlite3_msize=Module[\"_sqlite3_msize\"]=a0=>(_sqlite3_msize=Module[\"_sqlite3_msize\"]=wasmExports[\"sqlite3_msize\"])(a0);var _sqlite3_db_status=Module[\"_sqlite3_db_status\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_db_status=Module[\"_sqlite3_db_status\"]=wasmExports[\"sqlite3_db_status\"])(a0,a1,a2,a3,a4);var _sqlite3_vfs_find=Module[\"_sqlite3_vfs_find\"]=a0=>(_sqlite3_vfs_find=Module[\"_sqlite3_vfs_find\"]=wasmExports[\"sqlite3_vfs_find\"])(a0);var _sqlite3_vfs_register=Module[\"_sqlite3_vfs_register\"]=(a0,a1)=>(_sqlite3_vfs_register=Module[\"_sqlite3_vfs_register\"]=wasmExports[\"sqlite3_vfs_register\"])(a0,a1);var _sqlite3_vfs_unregister=Module[\"_sqlite3_vfs_unregister\"]=a0=>(_sqlite3_vfs_unregister=Module[\"_sqlite3_vfs_unregister\"]=wasmExports[\"sqlite3_vfs_unregister\"])(a0);var _sqlite3_release_memory=Module[\"_sqlite3_release_memory\"]=a0=>(_sqlite3_release_memory=Module[\"_sqlite3_release_memory\"]=wasmExports[\"sqlite3_release_memory\"])(a0);var _sqlite3_soft_heap_limit64=Module[\"_sqlite3_soft_heap_limit64\"]=(a0,a1)=>(_sqlite3_soft_heap_limit64=Module[\"_sqlite3_soft_heap_limit64\"]=wasmExports[\"sqlite3_soft_heap_limit64\"])(a0,a1);var _sqlite3_memory_used=Module[\"_sqlite3_memory_used\"]=()=>(_sqlite3_memory_used=Module[\"_sqlite3_memory_used\"]=wasmExports[\"sqlite3_memory_used\"])();var _sqlite3_hard_heap_limit64=Module[\"_sqlite3_hard_heap_limit64\"]=(a0,a1)=>(_sqlite3_hard_heap_limit64=Module[\"_sqlite3_hard_heap_limit64\"]=wasmExports[\"sqlite3_hard_heap_limit64\"])(a0,a1);var _sqlite3_memory_highwater=Module[\"_sqlite3_memory_highwater\"]=a0=>(_sqlite3_memory_highwater=Module[\"_sqlite3_memory_highwater\"]=wasmExports[\"sqlite3_memory_highwater\"])(a0);var _sqlite3_malloc=Module[\"_sqlite3_malloc\"]=a0=>(_sqlite3_malloc=Module[\"_sqlite3_malloc\"]=wasmExports[\"sqlite3_malloc\"])(a0);var _sqlite3_malloc64=Module[\"_sqlite3_malloc64\"]=(a0,a1)=>(_sqlite3_malloc64=Module[\"_sqlite3_malloc64\"]=wasmExports[\"sqlite3_malloc64\"])(a0,a1);var _sqlite3_free=Module[\"_sqlite3_free\"]=a0=>(_sqlite3_free=Module[\"_sqlite3_free\"]=wasmExports[\"sqlite3_free\"])(a0);var _sqlite3_realloc=Module[\"_sqlite3_realloc\"]=(a0,a1)=>(_sqlite3_realloc=Module[\"_sqlite3_realloc\"]=wasmExports[\"sqlite3_realloc\"])(a0,a1);var _sqlite3_realloc64=Module[\"_sqlite3_realloc64\"]=(a0,a1,a2)=>(_sqlite3_realloc64=Module[\"_sqlite3_realloc64\"]=wasmExports[\"sqlite3_realloc64\"])(a0,a1,a2);var _sqlite3_str_vappendf=Module[\"_sqlite3_str_vappendf\"]=(a0,a1,a2)=>(_sqlite3_str_vappendf=Module[\"_sqlite3_str_vappendf\"]=wasmExports[\"sqlite3_str_vappendf\"])(a0,a1,a2);var _sqlite3_str_append=Module[\"_sqlite3_str_append\"]=(a0,a1,a2)=>(_sqlite3_str_append=Module[\"_sqlite3_str_append\"]=wasmExports[\"sqlite3_str_append\"])(a0,a1,a2);var _sqlite3_str_appendchar=Module[\"_sqlite3_str_appendchar\"]=(a0,a1,a2)=>(_sqlite3_str_appendchar=Module[\"_sqlite3_str_appendchar\"]=wasmExports[\"sqlite3_str_appendchar\"])(a0,a1,a2);var _sqlite3_str_appendall=Module[\"_sqlite3_str_appendall\"]=(a0,a1)=>(_sqlite3_str_appendall=Module[\"_sqlite3_str_appendall\"]=wasmExports[\"sqlite3_str_appendall\"])(a0,a1);var _sqlite3_str_appendf=Module[\"_sqlite3_str_appendf\"]=(a0,a1,a2)=>(_sqlite3_str_appendf=Module[\"_sqlite3_str_appendf\"]=wasmExports[\"sqlite3_str_appendf\"])(a0,a1,a2);var _sqlite3_str_finish=Module[\"_sqlite3_str_finish\"]=a0=>(_sqlite3_str_finish=Module[\"_sqlite3_str_finish\"]=wasmExports[\"sqlite3_str_finish\"])(a0);var _sqlite3_str_errcode=Module[\"_sqlite3_str_errcode\"]=a0=>(_sqlite3_str_errcode=Module[\"_sqlite3_str_errcode\"]=wasmExports[\"sqlite3_str_errcode\"])(a0);var _sqlite3_str_length=Module[\"_sqlite3_str_length\"]=a0=>(_sqlite3_str_length=Module[\"_sqlite3_str_length\"]=wasmExports[\"sqlite3_str_length\"])(a0);var _sqlite3_str_value=Module[\"_sqlite3_str_value\"]=a0=>(_sqlite3_str_value=Module[\"_sqlite3_str_value\"]=wasmExports[\"sqlite3_str_value\"])(a0);var _sqlite3_str_reset=Module[\"_sqlite3_str_reset\"]=a0=>(_sqlite3_str_reset=Module[\"_sqlite3_str_reset\"]=wasmExports[\"sqlite3_str_reset\"])(a0);var _sqlite3_str_new=Module[\"_sqlite3_str_new\"]=a0=>(_sqlite3_str_new=Module[\"_sqlite3_str_new\"]=wasmExports[\"sqlite3_str_new\"])(a0);var _sqlite3_vmprintf=Module[\"_sqlite3_vmprintf\"]=(a0,a1)=>(_sqlite3_vmprintf=Module[\"_sqlite3_vmprintf\"]=wasmExports[\"sqlite3_vmprintf\"])(a0,a1);var _sqlite3_mprintf=Module[\"_sqlite3_mprintf\"]=(a0,a1)=>(_sqlite3_mprintf=Module[\"_sqlite3_mprintf\"]=wasmExports[\"sqlite3_mprintf\"])(a0,a1);var _sqlite3_vsnprintf=Module[\"_sqlite3_vsnprintf\"]=(a0,a1,a2,a3)=>(_sqlite3_vsnprintf=Module[\"_sqlite3_vsnprintf\"]=wasmExports[\"sqlite3_vsnprintf\"])(a0,a1,a2,a3);var _sqlite3_snprintf=Module[\"_sqlite3_snprintf\"]=(a0,a1,a2,a3)=>(_sqlite3_snprintf=Module[\"_sqlite3_snprintf\"]=wasmExports[\"sqlite3_snprintf\"])(a0,a1,a2,a3);var _sqlite3_log=Module[\"_sqlite3_log\"]=(a0,a1,a2)=>(_sqlite3_log=Module[\"_sqlite3_log\"]=wasmExports[\"sqlite3_log\"])(a0,a1,a2);var _sqlite3_randomness=Module[\"_sqlite3_randomness\"]=(a0,a1)=>(_sqlite3_randomness=Module[\"_sqlite3_randomness\"]=wasmExports[\"sqlite3_randomness\"])(a0,a1);var _sqlite3_stricmp=Module[\"_sqlite3_stricmp\"]=(a0,a1)=>(_sqlite3_stricmp=Module[\"_sqlite3_stricmp\"]=wasmExports[\"sqlite3_stricmp\"])(a0,a1);var _sqlite3_strnicmp=Module[\"_sqlite3_strnicmp\"]=(a0,a1,a2)=>(_sqlite3_strnicmp=Module[\"_sqlite3_strnicmp\"]=wasmExports[\"sqlite3_strnicmp\"])(a0,a1,a2);var _sqlite3_os_init=Module[\"_sqlite3_os_init\"]=()=>(_sqlite3_os_init=Module[\"_sqlite3_os_init\"]=wasmExports[\"sqlite3_os_init\"])();var _sqlite3_os_end=Module[\"_sqlite3_os_end\"]=()=>(_sqlite3_os_end=Module[\"_sqlite3_os_end\"]=wasmExports[\"sqlite3_os_end\"])();var _sqlite3_serialize=Module[\"_sqlite3_serialize\"]=(a0,a1,a2,a3)=>(_sqlite3_serialize=Module[\"_sqlite3_serialize\"]=wasmExports[\"sqlite3_serialize\"])(a0,a1,a2,a3);var _sqlite3_prepare_v2=Module[\"_sqlite3_prepare_v2\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare_v2=Module[\"_sqlite3_prepare_v2\"]=wasmExports[\"sqlite3_prepare_v2\"])(a0,a1,a2,a3,a4);var _sqlite3_step=Module[\"_sqlite3_step\"]=a0=>(_sqlite3_step=Module[\"_sqlite3_step\"]=wasmExports[\"sqlite3_step\"])(a0);var _sqlite3_column_int64=Module[\"_sqlite3_column_int64\"]=(a0,a1)=>(_sqlite3_column_int64=Module[\"_sqlite3_column_int64\"]=wasmExports[\"sqlite3_column_int64\"])(a0,a1);var _sqlite3_reset=Module[\"_sqlite3_reset\"]=a0=>(_sqlite3_reset=Module[\"_sqlite3_reset\"]=wasmExports[\"sqlite3_reset\"])(a0);var _sqlite3_exec=Module[\"_sqlite3_exec\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_exec=Module[\"_sqlite3_exec\"]=wasmExports[\"sqlite3_exec\"])(a0,a1,a2,a3,a4);var _sqlite3_column_int=Module[\"_sqlite3_column_int\"]=(a0,a1)=>(_sqlite3_column_int=Module[\"_sqlite3_column_int\"]=wasmExports[\"sqlite3_column_int\"])(a0,a1);var _sqlite3_finalize=Module[\"_sqlite3_finalize\"]=a0=>(_sqlite3_finalize=Module[\"_sqlite3_finalize\"]=wasmExports[\"sqlite3_finalize\"])(a0);var _sqlite3_deserialize=Module[\"_sqlite3_deserialize\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_deserialize=Module[\"_sqlite3_deserialize\"]=wasmExports[\"sqlite3_deserialize\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_database_file_object=Module[\"_sqlite3_database_file_object\"]=a0=>(_sqlite3_database_file_object=Module[\"_sqlite3_database_file_object\"]=wasmExports[\"sqlite3_database_file_object\"])(a0);var _sqlite3_backup_init=Module[\"_sqlite3_backup_init\"]=(a0,a1,a2,a3)=>(_sqlite3_backup_init=Module[\"_sqlite3_backup_init\"]=wasmExports[\"sqlite3_backup_init\"])(a0,a1,a2,a3);var _sqlite3_backup_step=Module[\"_sqlite3_backup_step\"]=(a0,a1)=>(_sqlite3_backup_step=Module[\"_sqlite3_backup_step\"]=wasmExports[\"sqlite3_backup_step\"])(a0,a1);var _sqlite3_backup_finish=Module[\"_sqlite3_backup_finish\"]=a0=>(_sqlite3_backup_finish=Module[\"_sqlite3_backup_finish\"]=wasmExports[\"sqlite3_backup_finish\"])(a0);var _sqlite3_backup_remaining=Module[\"_sqlite3_backup_remaining\"]=a0=>(_sqlite3_backup_remaining=Module[\"_sqlite3_backup_remaining\"]=wasmExports[\"sqlite3_backup_remaining\"])(a0);var _sqlite3_backup_pagecount=Module[\"_sqlite3_backup_pagecount\"]=a0=>(_sqlite3_backup_pagecount=Module[\"_sqlite3_backup_pagecount\"]=wasmExports[\"sqlite3_backup_pagecount\"])(a0);var _sqlite3_clear_bindings=Module[\"_sqlite3_clear_bindings\"]=a0=>(_sqlite3_clear_bindings=Module[\"_sqlite3_clear_bindings\"]=wasmExports[\"sqlite3_clear_bindings\"])(a0);var _sqlite3_value_blob=Module[\"_sqlite3_value_blob\"]=a0=>(_sqlite3_value_blob=Module[\"_sqlite3_value_blob\"]=wasmExports[\"sqlite3_value_blob\"])(a0);var _sqlite3_value_text=Module[\"_sqlite3_value_text\"]=a0=>(_sqlite3_value_text=Module[\"_sqlite3_value_text\"]=wasmExports[\"sqlite3_value_text\"])(a0);var _sqlite3_value_bytes=Module[\"_sqlite3_value_bytes\"]=a0=>(_sqlite3_value_bytes=Module[\"_sqlite3_value_bytes\"]=wasmExports[\"sqlite3_value_bytes\"])(a0);var _sqlite3_value_bytes16=Module[\"_sqlite3_value_bytes16\"]=a0=>(_sqlite3_value_bytes16=Module[\"_sqlite3_value_bytes16\"]=wasmExports[\"sqlite3_value_bytes16\"])(a0);var _sqlite3_value_double=Module[\"_sqlite3_value_double\"]=a0=>(_sqlite3_value_double=Module[\"_sqlite3_value_double\"]=wasmExports[\"sqlite3_value_double\"])(a0);var _sqlite3_value_int=Module[\"_sqlite3_value_int\"]=a0=>(_sqlite3_value_int=Module[\"_sqlite3_value_int\"]=wasmExports[\"sqlite3_value_int\"])(a0);var _sqlite3_value_int64=Module[\"_sqlite3_value_int64\"]=a0=>(_sqlite3_value_int64=Module[\"_sqlite3_value_int64\"]=wasmExports[\"sqlite3_value_int64\"])(a0);var _sqlite3_value_subtype=Module[\"_sqlite3_value_subtype\"]=a0=>(_sqlite3_value_subtype=Module[\"_sqlite3_value_subtype\"]=wasmExports[\"sqlite3_value_subtype\"])(a0);var _sqlite3_value_pointer=Module[\"_sqlite3_value_pointer\"]=(a0,a1)=>(_sqlite3_value_pointer=Module[\"_sqlite3_value_pointer\"]=wasmExports[\"sqlite3_value_pointer\"])(a0,a1);var _sqlite3_value_text16=Module[\"_sqlite3_value_text16\"]=a0=>(_sqlite3_value_text16=Module[\"_sqlite3_value_text16\"]=wasmExports[\"sqlite3_value_text16\"])(a0);var _sqlite3_value_text16be=Module[\"_sqlite3_value_text16be\"]=a0=>(_sqlite3_value_text16be=Module[\"_sqlite3_value_text16be\"]=wasmExports[\"sqlite3_value_text16be\"])(a0);var _sqlite3_value_text16le=Module[\"_sqlite3_value_text16le\"]=a0=>(_sqlite3_value_text16le=Module[\"_sqlite3_value_text16le\"]=wasmExports[\"sqlite3_value_text16le\"])(a0);var _sqlite3_value_type=Module[\"_sqlite3_value_type\"]=a0=>(_sqlite3_value_type=Module[\"_sqlite3_value_type\"]=wasmExports[\"sqlite3_value_type\"])(a0);var _sqlite3_value_encoding=Module[\"_sqlite3_value_encoding\"]=a0=>(_sqlite3_value_encoding=Module[\"_sqlite3_value_encoding\"]=wasmExports[\"sqlite3_value_encoding\"])(a0);var _sqlite3_value_nochange=Module[\"_sqlite3_value_nochange\"]=a0=>(_sqlite3_value_nochange=Module[\"_sqlite3_value_nochange\"]=wasmExports[\"sqlite3_value_nochange\"])(a0);var _sqlite3_value_frombind=Module[\"_sqlite3_value_frombind\"]=a0=>(_sqlite3_value_frombind=Module[\"_sqlite3_value_frombind\"]=wasmExports[\"sqlite3_value_frombind\"])(a0);var _sqlite3_value_dup=Module[\"_sqlite3_value_dup\"]=a0=>(_sqlite3_value_dup=Module[\"_sqlite3_value_dup\"]=wasmExports[\"sqlite3_value_dup\"])(a0);var _sqlite3_value_free=Module[\"_sqlite3_value_free\"]=a0=>(_sqlite3_value_free=Module[\"_sqlite3_value_free\"]=wasmExports[\"sqlite3_value_free\"])(a0);var _sqlite3_result_blob=Module[\"_sqlite3_result_blob\"]=(a0,a1,a2,a3)=>(_sqlite3_result_blob=Module[\"_sqlite3_result_blob\"]=wasmExports[\"sqlite3_result_blob\"])(a0,a1,a2,a3);var _sqlite3_result_blob64=Module[\"_sqlite3_result_blob64\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_result_blob64=Module[\"_sqlite3_result_blob64\"]=wasmExports[\"sqlite3_result_blob64\"])(a0,a1,a2,a3,a4);var _sqlite3_result_double=Module[\"_sqlite3_result_double\"]=(a0,a1)=>(_sqlite3_result_double=Module[\"_sqlite3_result_double\"]=wasmExports[\"sqlite3_result_double\"])(a0,a1);var _sqlite3_result_error=Module[\"_sqlite3_result_error\"]=(a0,a1,a2)=>(_sqlite3_result_error=Module[\"_sqlite3_result_error\"]=wasmExports[\"sqlite3_result_error\"])(a0,a1,a2);var _sqlite3_result_error16=Module[\"_sqlite3_result_error16\"]=(a0,a1,a2)=>(_sqlite3_result_error16=Module[\"_sqlite3_result_error16\"]=wasmExports[\"sqlite3_result_error16\"])(a0,a1,a2);var _sqlite3_result_int=Module[\"_sqlite3_result_int\"]=(a0,a1)=>(_sqlite3_result_int=Module[\"_sqlite3_result_int\"]=wasmExports[\"sqlite3_result_int\"])(a0,a1);var _sqlite3_result_int64=Module[\"_sqlite3_result_int64\"]=(a0,a1,a2)=>(_sqlite3_result_int64=Module[\"_sqlite3_result_int64\"]=wasmExports[\"sqlite3_result_int64\"])(a0,a1,a2);var _sqlite3_result_null=Module[\"_sqlite3_result_null\"]=a0=>(_sqlite3_result_null=Module[\"_sqlite3_result_null\"]=wasmExports[\"sqlite3_result_null\"])(a0);var _sqlite3_result_pointer=Module[\"_sqlite3_result_pointer\"]=(a0,a1,a2,a3)=>(_sqlite3_result_pointer=Module[\"_sqlite3_result_pointer\"]=wasmExports[\"sqlite3_result_pointer\"])(a0,a1,a2,a3);var _sqlite3_result_subtype=Module[\"_sqlite3_result_subtype\"]=(a0,a1)=>(_sqlite3_result_subtype=Module[\"_sqlite3_result_subtype\"]=wasmExports[\"sqlite3_result_subtype\"])(a0,a1);var _sqlite3_result_text=Module[\"_sqlite3_result_text\"]=(a0,a1,a2,a3)=>(_sqlite3_result_text=Module[\"_sqlite3_result_text\"]=wasmExports[\"sqlite3_result_text\"])(a0,a1,a2,a3);var _sqlite3_result_text64=Module[\"_sqlite3_result_text64\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_result_text64=Module[\"_sqlite3_result_text64\"]=wasmExports[\"sqlite3_result_text64\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_result_text16=Module[\"_sqlite3_result_text16\"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16=Module[\"_sqlite3_result_text16\"]=wasmExports[\"sqlite3_result_text16\"])(a0,a1,a2,a3);var _sqlite3_result_text16be=Module[\"_sqlite3_result_text16be\"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16be=Module[\"_sqlite3_result_text16be\"]=wasmExports[\"sqlite3_result_text16be\"])(a0,a1,a2,a3);var _sqlite3_result_text16le=Module[\"_sqlite3_result_text16le\"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16le=Module[\"_sqlite3_result_text16le\"]=wasmExports[\"sqlite3_result_text16le\"])(a0,a1,a2,a3);var _sqlite3_result_value=Module[\"_sqlite3_result_value\"]=(a0,a1)=>(_sqlite3_result_value=Module[\"_sqlite3_result_value\"]=wasmExports[\"sqlite3_result_value\"])(a0,a1);var _sqlite3_result_error_toobig=Module[\"_sqlite3_result_error_toobig\"]=a0=>(_sqlite3_result_error_toobig=Module[\"_sqlite3_result_error_toobig\"]=wasmExports[\"sqlite3_result_error_toobig\"])(a0);var _sqlite3_result_zeroblob=Module[\"_sqlite3_result_zeroblob\"]=(a0,a1)=>(_sqlite3_result_zeroblob=Module[\"_sqlite3_result_zeroblob\"]=wasmExports[\"sqlite3_result_zeroblob\"])(a0,a1);var _sqlite3_result_zeroblob64=Module[\"_sqlite3_result_zeroblob64\"]=(a0,a1,a2)=>(_sqlite3_result_zeroblob64=Module[\"_sqlite3_result_zeroblob64\"]=wasmExports[\"sqlite3_result_zeroblob64\"])(a0,a1,a2);var _sqlite3_result_error_code=Module[\"_sqlite3_result_error_code\"]=(a0,a1)=>(_sqlite3_result_error_code=Module[\"_sqlite3_result_error_code\"]=wasmExports[\"sqlite3_result_error_code\"])(a0,a1);var _sqlite3_result_error_nomem=Module[\"_sqlite3_result_error_nomem\"]=a0=>(_sqlite3_result_error_nomem=Module[\"_sqlite3_result_error_nomem\"]=wasmExports[\"sqlite3_result_error_nomem\"])(a0);var _sqlite3_user_data=Module[\"_sqlite3_user_data\"]=a0=>(_sqlite3_user_data=Module[\"_sqlite3_user_data\"]=wasmExports[\"sqlite3_user_data\"])(a0);var _sqlite3_context_db_handle=Module[\"_sqlite3_context_db_handle\"]=a0=>(_sqlite3_context_db_handle=Module[\"_sqlite3_context_db_handle\"]=wasmExports[\"sqlite3_context_db_handle\"])(a0);var _sqlite3_vtab_nochange=Module[\"_sqlite3_vtab_nochange\"]=a0=>(_sqlite3_vtab_nochange=Module[\"_sqlite3_vtab_nochange\"]=wasmExports[\"sqlite3_vtab_nochange\"])(a0);var _sqlite3_vtab_in_first=Module[\"_sqlite3_vtab_in_first\"]=(a0,a1)=>(_sqlite3_vtab_in_first=Module[\"_sqlite3_vtab_in_first\"]=wasmExports[\"sqlite3_vtab_in_first\"])(a0,a1);var _sqlite3_vtab_in_next=Module[\"_sqlite3_vtab_in_next\"]=(a0,a1)=>(_sqlite3_vtab_in_next=Module[\"_sqlite3_vtab_in_next\"]=wasmExports[\"sqlite3_vtab_in_next\"])(a0,a1);var _sqlite3_aggregate_context=Module[\"_sqlite3_aggregate_context\"]=(a0,a1)=>(_sqlite3_aggregate_context=Module[\"_sqlite3_aggregate_context\"]=wasmExports[\"sqlite3_aggregate_context\"])(a0,a1);var _sqlite3_get_auxdata=Module[\"_sqlite3_get_auxdata\"]=(a0,a1)=>(_sqlite3_get_auxdata=Module[\"_sqlite3_get_auxdata\"]=wasmExports[\"sqlite3_get_auxdata\"])(a0,a1);var _sqlite3_set_auxdata=Module[\"_sqlite3_set_auxdata\"]=(a0,a1,a2,a3)=>(_sqlite3_set_auxdata=Module[\"_sqlite3_set_auxdata\"]=wasmExports[\"sqlite3_set_auxdata\"])(a0,a1,a2,a3);var _sqlite3_column_count=Module[\"_sqlite3_column_count\"]=a0=>(_sqlite3_column_count=Module[\"_sqlite3_column_count\"]=wasmExports[\"sqlite3_column_count\"])(a0);var _sqlite3_data_count=Module[\"_sqlite3_data_count\"]=a0=>(_sqlite3_data_count=Module[\"_sqlite3_data_count\"]=wasmExports[\"sqlite3_data_count\"])(a0);var _sqlite3_column_blob=Module[\"_sqlite3_column_blob\"]=(a0,a1)=>(_sqlite3_column_blob=Module[\"_sqlite3_column_blob\"]=wasmExports[\"sqlite3_column_blob\"])(a0,a1);var _sqlite3_column_bytes=Module[\"_sqlite3_column_bytes\"]=(a0,a1)=>(_sqlite3_column_bytes=Module[\"_sqlite3_column_bytes\"]=wasmExports[\"sqlite3_column_bytes\"])(a0,a1);var _sqlite3_column_bytes16=Module[\"_sqlite3_column_bytes16\"]=(a0,a1)=>(_sqlite3_column_bytes16=Module[\"_sqlite3_column_bytes16\"]=wasmExports[\"sqlite3_column_bytes16\"])(a0,a1);var _sqlite3_column_double=Module[\"_sqlite3_column_double\"]=(a0,a1)=>(_sqlite3_column_double=Module[\"_sqlite3_column_double\"]=wasmExports[\"sqlite3_column_double\"])(a0,a1);var _sqlite3_column_text=Module[\"_sqlite3_column_text\"]=(a0,a1)=>(_sqlite3_column_text=Module[\"_sqlite3_column_text\"]=wasmExports[\"sqlite3_column_text\"])(a0,a1);var _sqlite3_column_value=Module[\"_sqlite3_column_value\"]=(a0,a1)=>(_sqlite3_column_value=Module[\"_sqlite3_column_value\"]=wasmExports[\"sqlite3_column_value\"])(a0,a1);var _sqlite3_column_text16=Module[\"_sqlite3_column_text16\"]=(a0,a1)=>(_sqlite3_column_text16=Module[\"_sqlite3_column_text16\"]=wasmExports[\"sqlite3_column_text16\"])(a0,a1);var _sqlite3_column_type=Module[\"_sqlite3_column_type\"]=(a0,a1)=>(_sqlite3_column_type=Module[\"_sqlite3_column_type\"]=wasmExports[\"sqlite3_column_type\"])(a0,a1);var _sqlite3_column_name=Module[\"_sqlite3_column_name\"]=(a0,a1)=>(_sqlite3_column_name=Module[\"_sqlite3_column_name\"]=wasmExports[\"sqlite3_column_name\"])(a0,a1);var _sqlite3_column_name16=Module[\"_sqlite3_column_name16\"]=(a0,a1)=>(_sqlite3_column_name16=Module[\"_sqlite3_column_name16\"]=wasmExports[\"sqlite3_column_name16\"])(a0,a1);var _sqlite3_bind_blob=Module[\"_sqlite3_bind_blob\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_blob=Module[\"_sqlite3_bind_blob\"]=wasmExports[\"sqlite3_bind_blob\"])(a0,a1,a2,a3,a4);var _sqlite3_bind_blob64=Module[\"_sqlite3_bind_blob64\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_bind_blob64=Module[\"_sqlite3_bind_blob64\"]=wasmExports[\"sqlite3_bind_blob64\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_bind_double=Module[\"_sqlite3_bind_double\"]=(a0,a1,a2)=>(_sqlite3_bind_double=Module[\"_sqlite3_bind_double\"]=wasmExports[\"sqlite3_bind_double\"])(a0,a1,a2);var _sqlite3_bind_int=Module[\"_sqlite3_bind_int\"]=(a0,a1,a2)=>(_sqlite3_bind_int=Module[\"_sqlite3_bind_int\"]=wasmExports[\"sqlite3_bind_int\"])(a0,a1,a2);var _sqlite3_bind_int64=Module[\"_sqlite3_bind_int64\"]=(a0,a1,a2,a3)=>(_sqlite3_bind_int64=Module[\"_sqlite3_bind_int64\"]=wasmExports[\"sqlite3_bind_int64\"])(a0,a1,a2,a3);var _sqlite3_bind_null=Module[\"_sqlite3_bind_null\"]=(a0,a1)=>(_sqlite3_bind_null=Module[\"_sqlite3_bind_null\"]=wasmExports[\"sqlite3_bind_null\"])(a0,a1);var _sqlite3_bind_pointer=Module[\"_sqlite3_bind_pointer\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_pointer=Module[\"_sqlite3_bind_pointer\"]=wasmExports[\"sqlite3_bind_pointer\"])(a0,a1,a2,a3,a4);var _sqlite3_bind_text=Module[\"_sqlite3_bind_text\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_text=Module[\"_sqlite3_bind_text\"]=wasmExports[\"sqlite3_bind_text\"])(a0,a1,a2,a3,a4);var _sqlite3_bind_text64=Module[\"_sqlite3_bind_text64\"]=(a0,a1,a2,a3,a4,a5,a6)=>(_sqlite3_bind_text64=Module[\"_sqlite3_bind_text64\"]=wasmExports[\"sqlite3_bind_text64\"])(a0,a1,a2,a3,a4,a5,a6);var _sqlite3_bind_text16=Module[\"_sqlite3_bind_text16\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_text16=Module[\"_sqlite3_bind_text16\"]=wasmExports[\"sqlite3_bind_text16\"])(a0,a1,a2,a3,a4);var _sqlite3_bind_value=Module[\"_sqlite3_bind_value\"]=(a0,a1,a2)=>(_sqlite3_bind_value=Module[\"_sqlite3_bind_value\"]=wasmExports[\"sqlite3_bind_value\"])(a0,a1,a2);var _sqlite3_bind_zeroblob=Module[\"_sqlite3_bind_zeroblob\"]=(a0,a1,a2)=>(_sqlite3_bind_zeroblob=Module[\"_sqlite3_bind_zeroblob\"]=wasmExports[\"sqlite3_bind_zeroblob\"])(a0,a1,a2);var _sqlite3_bind_zeroblob64=Module[\"_sqlite3_bind_zeroblob64\"]=(a0,a1,a2,a3)=>(_sqlite3_bind_zeroblob64=Module[\"_sqlite3_bind_zeroblob64\"]=wasmExports[\"sqlite3_bind_zeroblob64\"])(a0,a1,a2,a3);var _sqlite3_bind_parameter_count=Module[\"_sqlite3_bind_parameter_count\"]=a0=>(_sqlite3_bind_parameter_count=Module[\"_sqlite3_bind_parameter_count\"]=wasmExports[\"sqlite3_bind_parameter_count\"])(a0);var _sqlite3_bind_parameter_name=Module[\"_sqlite3_bind_parameter_name\"]=(a0,a1)=>(_sqlite3_bind_parameter_name=Module[\"_sqlite3_bind_parameter_name\"]=wasmExports[\"sqlite3_bind_parameter_name\"])(a0,a1);var _sqlite3_bind_parameter_index=Module[\"_sqlite3_bind_parameter_index\"]=(a0,a1)=>(_sqlite3_bind_parameter_index=Module[\"_sqlite3_bind_parameter_index\"]=wasmExports[\"sqlite3_bind_parameter_index\"])(a0,a1);var _sqlite3_db_handle=Module[\"_sqlite3_db_handle\"]=a0=>(_sqlite3_db_handle=Module[\"_sqlite3_db_handle\"]=wasmExports[\"sqlite3_db_handle\"])(a0);var _sqlite3_stmt_readonly=Module[\"_sqlite3_stmt_readonly\"]=a0=>(_sqlite3_stmt_readonly=Module[\"_sqlite3_stmt_readonly\"]=wasmExports[\"sqlite3_stmt_readonly\"])(a0);var _sqlite3_stmt_isexplain=Module[\"_sqlite3_stmt_isexplain\"]=a0=>(_sqlite3_stmt_isexplain=Module[\"_sqlite3_stmt_isexplain\"]=wasmExports[\"sqlite3_stmt_isexplain\"])(a0);var _sqlite3_stmt_explain=Module[\"_sqlite3_stmt_explain\"]=(a0,a1)=>(_sqlite3_stmt_explain=Module[\"_sqlite3_stmt_explain\"]=wasmExports[\"sqlite3_stmt_explain\"])(a0,a1);var _sqlite3_stmt_busy=Module[\"_sqlite3_stmt_busy\"]=a0=>(_sqlite3_stmt_busy=Module[\"_sqlite3_stmt_busy\"]=wasmExports[\"sqlite3_stmt_busy\"])(a0);var _sqlite3_next_stmt=Module[\"_sqlite3_next_stmt\"]=(a0,a1)=>(_sqlite3_next_stmt=Module[\"_sqlite3_next_stmt\"]=wasmExports[\"sqlite3_next_stmt\"])(a0,a1);var _sqlite3_stmt_status=Module[\"_sqlite3_stmt_status\"]=(a0,a1,a2)=>(_sqlite3_stmt_status=Module[\"_sqlite3_stmt_status\"]=wasmExports[\"sqlite3_stmt_status\"])(a0,a1,a2);var _sqlite3_sql=Module[\"_sqlite3_sql\"]=a0=>(_sqlite3_sql=Module[\"_sqlite3_sql\"]=wasmExports[\"sqlite3_sql\"])(a0);var _sqlite3_expanded_sql=Module[\"_sqlite3_expanded_sql\"]=a0=>(_sqlite3_expanded_sql=Module[\"_sqlite3_expanded_sql\"]=wasmExports[\"sqlite3_expanded_sql\"])(a0);var _sqlite3_value_numeric_type=Module[\"_sqlite3_value_numeric_type\"]=a0=>(_sqlite3_value_numeric_type=Module[\"_sqlite3_value_numeric_type\"]=wasmExports[\"sqlite3_value_numeric_type\"])(a0);var _sqlite3_blob_open=Module[\"_sqlite3_blob_open\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_blob_open=Module[\"_sqlite3_blob_open\"]=wasmExports[\"sqlite3_blob_open\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_blob_close=Module[\"_sqlite3_blob_close\"]=a0=>(_sqlite3_blob_close=Module[\"_sqlite3_blob_close\"]=wasmExports[\"sqlite3_blob_close\"])(a0);var _sqlite3_blob_read=Module[\"_sqlite3_blob_read\"]=(a0,a1,a2,a3)=>(_sqlite3_blob_read=Module[\"_sqlite3_blob_read\"]=wasmExports[\"sqlite3_blob_read\"])(a0,a1,a2,a3);var _sqlite3_blob_write=Module[\"_sqlite3_blob_write\"]=(a0,a1,a2,a3)=>(_sqlite3_blob_write=Module[\"_sqlite3_blob_write\"]=wasmExports[\"sqlite3_blob_write\"])(a0,a1,a2,a3);var _sqlite3_blob_bytes=Module[\"_sqlite3_blob_bytes\"]=a0=>(_sqlite3_blob_bytes=Module[\"_sqlite3_blob_bytes\"]=wasmExports[\"sqlite3_blob_bytes\"])(a0);var _sqlite3_blob_reopen=Module[\"_sqlite3_blob_reopen\"]=(a0,a1,a2)=>(_sqlite3_blob_reopen=Module[\"_sqlite3_blob_reopen\"]=wasmExports[\"sqlite3_blob_reopen\"])(a0,a1,a2);var _sqlite3_set_authorizer=Module[\"_sqlite3_set_authorizer\"]=(a0,a1,a2)=>(_sqlite3_set_authorizer=Module[\"_sqlite3_set_authorizer\"]=wasmExports[\"sqlite3_set_authorizer\"])(a0,a1,a2);var _sqlite3_strglob=Module[\"_sqlite3_strglob\"]=(a0,a1)=>(_sqlite3_strglob=Module[\"_sqlite3_strglob\"]=wasmExports[\"sqlite3_strglob\"])(a0,a1);var _sqlite3_strlike=Module[\"_sqlite3_strlike\"]=(a0,a1,a2)=>(_sqlite3_strlike=Module[\"_sqlite3_strlike\"]=wasmExports[\"sqlite3_strlike\"])(a0,a1,a2);var _sqlite3_errmsg=Module[\"_sqlite3_errmsg\"]=a0=>(_sqlite3_errmsg=Module[\"_sqlite3_errmsg\"]=wasmExports[\"sqlite3_errmsg\"])(a0);var _sqlite3_auto_extension=Module[\"_sqlite3_auto_extension\"]=a0=>(_sqlite3_auto_extension=Module[\"_sqlite3_auto_extension\"]=wasmExports[\"sqlite3_auto_extension\"])(a0);var _sqlite3_cancel_auto_extension=Module[\"_sqlite3_cancel_auto_extension\"]=a0=>(_sqlite3_cancel_auto_extension=Module[\"_sqlite3_cancel_auto_extension\"]=wasmExports[\"sqlite3_cancel_auto_extension\"])(a0);var _sqlite3_reset_auto_extension=Module[\"_sqlite3_reset_auto_extension\"]=()=>(_sqlite3_reset_auto_extension=Module[\"_sqlite3_reset_auto_extension\"]=wasmExports[\"sqlite3_reset_auto_extension\"])();var _sqlite3_prepare=Module[\"_sqlite3_prepare\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare=Module[\"_sqlite3_prepare\"]=wasmExports[\"sqlite3_prepare\"])(a0,a1,a2,a3,a4);var _sqlite3_prepare_v3=Module[\"_sqlite3_prepare_v3\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_prepare_v3=Module[\"_sqlite3_prepare_v3\"]=wasmExports[\"sqlite3_prepare_v3\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_prepare16=Module[\"_sqlite3_prepare16\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare16=Module[\"_sqlite3_prepare16\"]=wasmExports[\"sqlite3_prepare16\"])(a0,a1,a2,a3,a4);var _sqlite3_prepare16_v2=Module[\"_sqlite3_prepare16_v2\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare16_v2=Module[\"_sqlite3_prepare16_v2\"]=wasmExports[\"sqlite3_prepare16_v2\"])(a0,a1,a2,a3,a4);var _sqlite3_prepare16_v3=Module[\"_sqlite3_prepare16_v3\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_prepare16_v3=Module[\"_sqlite3_prepare16_v3\"]=wasmExports[\"sqlite3_prepare16_v3\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_get_table=Module[\"_sqlite3_get_table\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_get_table=Module[\"_sqlite3_get_table\"]=wasmExports[\"sqlite3_get_table\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_free_table=Module[\"_sqlite3_free_table\"]=a0=>(_sqlite3_free_table=Module[\"_sqlite3_free_table\"]=wasmExports[\"sqlite3_free_table\"])(a0);var _sqlite3_create_module=Module[\"_sqlite3_create_module\"]=(a0,a1,a2,a3)=>(_sqlite3_create_module=Module[\"_sqlite3_create_module\"]=wasmExports[\"sqlite3_create_module\"])(a0,a1,a2,a3);var _sqlite3_create_module_v2=Module[\"_sqlite3_create_module_v2\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_module_v2=Module[\"_sqlite3_create_module_v2\"]=wasmExports[\"sqlite3_create_module_v2\"])(a0,a1,a2,a3,a4);var _sqlite3_drop_modules=Module[\"_sqlite3_drop_modules\"]=(a0,a1)=>(_sqlite3_drop_modules=Module[\"_sqlite3_drop_modules\"]=wasmExports[\"sqlite3_drop_modules\"])(a0,a1);var _sqlite3_declare_vtab=Module[\"_sqlite3_declare_vtab\"]=(a0,a1)=>(_sqlite3_declare_vtab=Module[\"_sqlite3_declare_vtab\"]=wasmExports[\"sqlite3_declare_vtab\"])(a0,a1);var _sqlite3_vtab_on_conflict=Module[\"_sqlite3_vtab_on_conflict\"]=a0=>(_sqlite3_vtab_on_conflict=Module[\"_sqlite3_vtab_on_conflict\"]=wasmExports[\"sqlite3_vtab_on_conflict\"])(a0);var _sqlite3_vtab_config=Module[\"_sqlite3_vtab_config\"]=(a0,a1,a2)=>(_sqlite3_vtab_config=Module[\"_sqlite3_vtab_config\"]=wasmExports[\"sqlite3_vtab_config\"])(a0,a1,a2);var _sqlite3_vtab_collation=Module[\"_sqlite3_vtab_collation\"]=(a0,a1)=>(_sqlite3_vtab_collation=Module[\"_sqlite3_vtab_collation\"]=wasmExports[\"sqlite3_vtab_collation\"])(a0,a1);var _sqlite3_vtab_in=Module[\"_sqlite3_vtab_in\"]=(a0,a1,a2)=>(_sqlite3_vtab_in=Module[\"_sqlite3_vtab_in\"]=wasmExports[\"sqlite3_vtab_in\"])(a0,a1,a2);var _sqlite3_vtab_rhs_value=Module[\"_sqlite3_vtab_rhs_value\"]=(a0,a1,a2)=>(_sqlite3_vtab_rhs_value=Module[\"_sqlite3_vtab_rhs_value\"]=wasmExports[\"sqlite3_vtab_rhs_value\"])(a0,a1,a2);var _sqlite3_vtab_distinct=Module[\"_sqlite3_vtab_distinct\"]=a0=>(_sqlite3_vtab_distinct=Module[\"_sqlite3_vtab_distinct\"]=wasmExports[\"sqlite3_vtab_distinct\"])(a0);var _sqlite3_keyword_name=Module[\"_sqlite3_keyword_name\"]=(a0,a1,a2)=>(_sqlite3_keyword_name=Module[\"_sqlite3_keyword_name\"]=wasmExports[\"sqlite3_keyword_name\"])(a0,a1,a2);var _sqlite3_keyword_count=Module[\"_sqlite3_keyword_count\"]=()=>(_sqlite3_keyword_count=Module[\"_sqlite3_keyword_count\"]=wasmExports[\"sqlite3_keyword_count\"])();var _sqlite3_keyword_check=Module[\"_sqlite3_keyword_check\"]=(a0,a1)=>(_sqlite3_keyword_check=Module[\"_sqlite3_keyword_check\"]=wasmExports[\"sqlite3_keyword_check\"])(a0,a1);var _sqlite3_complete=Module[\"_sqlite3_complete\"]=a0=>(_sqlite3_complete=Module[\"_sqlite3_complete\"]=wasmExports[\"sqlite3_complete\"])(a0);var _sqlite3_complete16=Module[\"_sqlite3_complete16\"]=a0=>(_sqlite3_complete16=Module[\"_sqlite3_complete16\"]=wasmExports[\"sqlite3_complete16\"])(a0);var _sqlite3_libversion=Module[\"_sqlite3_libversion\"]=()=>(_sqlite3_libversion=Module[\"_sqlite3_libversion\"]=wasmExports[\"sqlite3_libversion\"])();var _sqlite3_libversion_number=Module[\"_sqlite3_libversion_number\"]=()=>(_sqlite3_libversion_number=Module[\"_sqlite3_libversion_number\"]=wasmExports[\"sqlite3_libversion_number\"])();var _sqlite3_threadsafe=Module[\"_sqlite3_threadsafe\"]=()=>(_sqlite3_threadsafe=Module[\"_sqlite3_threadsafe\"]=wasmExports[\"sqlite3_threadsafe\"])();var _sqlite3_initialize=Module[\"_sqlite3_initialize\"]=()=>(_sqlite3_initialize=Module[\"_sqlite3_initialize\"]=wasmExports[\"sqlite3_initialize\"])();var _sqlite3_shutdown=Module[\"_sqlite3_shutdown\"]=()=>(_sqlite3_shutdown=Module[\"_sqlite3_shutdown\"]=wasmExports[\"sqlite3_shutdown\"])();var _sqlite3_config=Module[\"_sqlite3_config\"]=(a0,a1)=>(_sqlite3_config=Module[\"_sqlite3_config\"]=wasmExports[\"sqlite3_config\"])(a0,a1);var _sqlite3_db_mutex=Module[\"_sqlite3_db_mutex\"]=a0=>(_sqlite3_db_mutex=Module[\"_sqlite3_db_mutex\"]=wasmExports[\"sqlite3_db_mutex\"])(a0);var _sqlite3_db_release_memory=Module[\"_sqlite3_db_release_memory\"]=a0=>(_sqlite3_db_release_memory=Module[\"_sqlite3_db_release_memory\"]=wasmExports[\"sqlite3_db_release_memory\"])(a0);var _sqlite3_db_cacheflush=Module[\"_sqlite3_db_cacheflush\"]=a0=>(_sqlite3_db_cacheflush=Module[\"_sqlite3_db_cacheflush\"]=wasmExports[\"sqlite3_db_cacheflush\"])(a0);var _sqlite3_db_config=Module[\"_sqlite3_db_config\"]=(a0,a1,a2)=>(_sqlite3_db_config=Module[\"_sqlite3_db_config\"]=wasmExports[\"sqlite3_db_config\"])(a0,a1,a2);var _sqlite3_last_insert_rowid=Module[\"_sqlite3_last_insert_rowid\"]=a0=>(_sqlite3_last_insert_rowid=Module[\"_sqlite3_last_insert_rowid\"]=wasmExports[\"sqlite3_last_insert_rowid\"])(a0);var _sqlite3_set_last_insert_rowid=Module[\"_sqlite3_set_last_insert_rowid\"]=(a0,a1,a2)=>(_sqlite3_set_last_insert_rowid=Module[\"_sqlite3_set_last_insert_rowid\"]=wasmExports[\"sqlite3_set_last_insert_rowid\"])(a0,a1,a2);var _sqlite3_changes64=Module[\"_sqlite3_changes64\"]=a0=>(_sqlite3_changes64=Module[\"_sqlite3_changes64\"]=wasmExports[\"sqlite3_changes64\"])(a0);var _sqlite3_changes=Module[\"_sqlite3_changes\"]=a0=>(_sqlite3_changes=Module[\"_sqlite3_changes\"]=wasmExports[\"sqlite3_changes\"])(a0);var _sqlite3_total_changes64=Module[\"_sqlite3_total_changes64\"]=a0=>(_sqlite3_total_changes64=Module[\"_sqlite3_total_changes64\"]=wasmExports[\"sqlite3_total_changes64\"])(a0);var _sqlite3_total_changes=Module[\"_sqlite3_total_changes\"]=a0=>(_sqlite3_total_changes=Module[\"_sqlite3_total_changes\"]=wasmExports[\"sqlite3_total_changes\"])(a0);var _sqlite3_txn_state=Module[\"_sqlite3_txn_state\"]=(a0,a1)=>(_sqlite3_txn_state=Module[\"_sqlite3_txn_state\"]=wasmExports[\"sqlite3_txn_state\"])(a0,a1);var _sqlite3_close=Module[\"_sqlite3_close\"]=a0=>(_sqlite3_close=Module[\"_sqlite3_close\"]=wasmExports[\"sqlite3_close\"])(a0);var _sqlite3_close_v2=Module[\"_sqlite3_close_v2\"]=a0=>(_sqlite3_close_v2=Module[\"_sqlite3_close_v2\"]=wasmExports[\"sqlite3_close_v2\"])(a0);var _sqlite3_busy_handler=Module[\"_sqlite3_busy_handler\"]=(a0,a1,a2)=>(_sqlite3_busy_handler=Module[\"_sqlite3_busy_handler\"]=wasmExports[\"sqlite3_busy_handler\"])(a0,a1,a2);var _sqlite3_progress_handler=Module[\"_sqlite3_progress_handler\"]=(a0,a1,a2,a3)=>(_sqlite3_progress_handler=Module[\"_sqlite3_progress_handler\"]=wasmExports[\"sqlite3_progress_handler\"])(a0,a1,a2,a3);var _sqlite3_busy_timeout=Module[\"_sqlite3_busy_timeout\"]=(a0,a1)=>(_sqlite3_busy_timeout=Module[\"_sqlite3_busy_timeout\"]=wasmExports[\"sqlite3_busy_timeout\"])(a0,a1);var _sqlite3_interrupt=Module[\"_sqlite3_interrupt\"]=a0=>(_sqlite3_interrupt=Module[\"_sqlite3_interrupt\"]=wasmExports[\"sqlite3_interrupt\"])(a0);var _sqlite3_is_interrupted=Module[\"_sqlite3_is_interrupted\"]=a0=>(_sqlite3_is_interrupted=Module[\"_sqlite3_is_interrupted\"]=wasmExports[\"sqlite3_is_interrupted\"])(a0);var _sqlite3_create_function=Module[\"_sqlite3_create_function\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_create_function=Module[\"_sqlite3_create_function\"]=wasmExports[\"sqlite3_create_function\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_create_function_v2=Module[\"_sqlite3_create_function_v2\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(_sqlite3_create_function_v2=Module[\"_sqlite3_create_function_v2\"]=wasmExports[\"sqlite3_create_function_v2\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var _sqlite3_create_window_function=Module[\"_sqlite3_create_window_function\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(_sqlite3_create_window_function=Module[\"_sqlite3_create_window_function\"]=wasmExports[\"sqlite3_create_window_function\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var _sqlite3_create_function16=Module[\"_sqlite3_create_function16\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_create_function16=Module[\"_sqlite3_create_function16\"]=wasmExports[\"sqlite3_create_function16\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_overload_function=Module[\"_sqlite3_overload_function\"]=(a0,a1,a2)=>(_sqlite3_overload_function=Module[\"_sqlite3_overload_function\"]=wasmExports[\"sqlite3_overload_function\"])(a0,a1,a2);var _sqlite3_trace_v2=Module[\"_sqlite3_trace_v2\"]=(a0,a1,a2,a3)=>(_sqlite3_trace_v2=Module[\"_sqlite3_trace_v2\"]=wasmExports[\"sqlite3_trace_v2\"])(a0,a1,a2,a3);var _sqlite3_commit_hook=Module[\"_sqlite3_commit_hook\"]=(a0,a1,a2)=>(_sqlite3_commit_hook=Module[\"_sqlite3_commit_hook\"]=wasmExports[\"sqlite3_commit_hook\"])(a0,a1,a2);var _sqlite3_update_hook=Module[\"_sqlite3_update_hook\"]=(a0,a1,a2)=>(_sqlite3_update_hook=Module[\"_sqlite3_update_hook\"]=wasmExports[\"sqlite3_update_hook\"])(a0,a1,a2);var _sqlite3_rollback_hook=Module[\"_sqlite3_rollback_hook\"]=(a0,a1,a2)=>(_sqlite3_rollback_hook=Module[\"_sqlite3_rollback_hook\"]=wasmExports[\"sqlite3_rollback_hook\"])(a0,a1,a2);var _sqlite3_autovacuum_pages=Module[\"_sqlite3_autovacuum_pages\"]=(a0,a1,a2,a3)=>(_sqlite3_autovacuum_pages=Module[\"_sqlite3_autovacuum_pages\"]=wasmExports[\"sqlite3_autovacuum_pages\"])(a0,a1,a2,a3);var _sqlite3_wal_autocheckpoint=Module[\"_sqlite3_wal_autocheckpoint\"]=(a0,a1)=>(_sqlite3_wal_autocheckpoint=Module[\"_sqlite3_wal_autocheckpoint\"]=wasmExports[\"sqlite3_wal_autocheckpoint\"])(a0,a1);var _sqlite3_wal_hook=Module[\"_sqlite3_wal_hook\"]=(a0,a1,a2)=>(_sqlite3_wal_hook=Module[\"_sqlite3_wal_hook\"]=wasmExports[\"sqlite3_wal_hook\"])(a0,a1,a2);var _sqlite3_wal_checkpoint_v2=Module[\"_sqlite3_wal_checkpoint_v2\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_wal_checkpoint_v2=Module[\"_sqlite3_wal_checkpoint_v2\"]=wasmExports[\"sqlite3_wal_checkpoint_v2\"])(a0,a1,a2,a3,a4);var _sqlite3_wal_checkpoint=Module[\"_sqlite3_wal_checkpoint\"]=(a0,a1)=>(_sqlite3_wal_checkpoint=Module[\"_sqlite3_wal_checkpoint\"]=wasmExports[\"sqlite3_wal_checkpoint\"])(a0,a1);var _sqlite3_error_offset=Module[\"_sqlite3_error_offset\"]=a0=>(_sqlite3_error_offset=Module[\"_sqlite3_error_offset\"]=wasmExports[\"sqlite3_error_offset\"])(a0);var _sqlite3_errmsg16=Module[\"_sqlite3_errmsg16\"]=a0=>(_sqlite3_errmsg16=Module[\"_sqlite3_errmsg16\"]=wasmExports[\"sqlite3_errmsg16\"])(a0);var _sqlite3_errcode=Module[\"_sqlite3_errcode\"]=a0=>(_sqlite3_errcode=Module[\"_sqlite3_errcode\"]=wasmExports[\"sqlite3_errcode\"])(a0);var _sqlite3_extended_errcode=Module[\"_sqlite3_extended_errcode\"]=a0=>(_sqlite3_extended_errcode=Module[\"_sqlite3_extended_errcode\"]=wasmExports[\"sqlite3_extended_errcode\"])(a0);var _sqlite3_system_errno=Module[\"_sqlite3_system_errno\"]=a0=>(_sqlite3_system_errno=Module[\"_sqlite3_system_errno\"]=wasmExports[\"sqlite3_system_errno\"])(a0);var _sqlite3_errstr=Module[\"_sqlite3_errstr\"]=a0=>(_sqlite3_errstr=Module[\"_sqlite3_errstr\"]=wasmExports[\"sqlite3_errstr\"])(a0);var _sqlite3_limit=Module[\"_sqlite3_limit\"]=(a0,a1,a2)=>(_sqlite3_limit=Module[\"_sqlite3_limit\"]=wasmExports[\"sqlite3_limit\"])(a0,a1,a2);var _sqlite3_open=Module[\"_sqlite3_open\"]=(a0,a1)=>(_sqlite3_open=Module[\"_sqlite3_open\"]=wasmExports[\"sqlite3_open\"])(a0,a1);var _sqlite3_open_v2=Module[\"_sqlite3_open_v2\"]=(a0,a1,a2,a3)=>(_sqlite3_open_v2=Module[\"_sqlite3_open_v2\"]=wasmExports[\"sqlite3_open_v2\"])(a0,a1,a2,a3);var _sqlite3_open16=Module[\"_sqlite3_open16\"]=(a0,a1)=>(_sqlite3_open16=Module[\"_sqlite3_open16\"]=wasmExports[\"sqlite3_open16\"])(a0,a1);var _sqlite3_create_collation=Module[\"_sqlite3_create_collation\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_collation=Module[\"_sqlite3_create_collation\"]=wasmExports[\"sqlite3_create_collation\"])(a0,a1,a2,a3,a4);var _sqlite3_create_collation_v2=Module[\"_sqlite3_create_collation_v2\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_create_collation_v2=Module[\"_sqlite3_create_collation_v2\"]=wasmExports[\"sqlite3_create_collation_v2\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_create_collation16=Module[\"_sqlite3_create_collation16\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_collation16=Module[\"_sqlite3_create_collation16\"]=wasmExports[\"sqlite3_create_collation16\"])(a0,a1,a2,a3,a4);var _sqlite3_collation_needed=Module[\"_sqlite3_collation_needed\"]=(a0,a1,a2)=>(_sqlite3_collation_needed=Module[\"_sqlite3_collation_needed\"]=wasmExports[\"sqlite3_collation_needed\"])(a0,a1,a2);var _sqlite3_collation_needed16=Module[\"_sqlite3_collation_needed16\"]=(a0,a1,a2)=>(_sqlite3_collation_needed16=Module[\"_sqlite3_collation_needed16\"]=wasmExports[\"sqlite3_collation_needed16\"])(a0,a1,a2);var _sqlite3_get_clientdata=Module[\"_sqlite3_get_clientdata\"]=(a0,a1)=>(_sqlite3_get_clientdata=Module[\"_sqlite3_get_clientdata\"]=wasmExports[\"sqlite3_get_clientdata\"])(a0,a1);var _sqlite3_set_clientdata=Module[\"_sqlite3_set_clientdata\"]=(a0,a1,a2,a3)=>(_sqlite3_set_clientdata=Module[\"_sqlite3_set_clientdata\"]=wasmExports[\"sqlite3_set_clientdata\"])(a0,a1,a2,a3);var _sqlite3_get_autocommit=Module[\"_sqlite3_get_autocommit\"]=a0=>(_sqlite3_get_autocommit=Module[\"_sqlite3_get_autocommit\"]=wasmExports[\"sqlite3_get_autocommit\"])(a0);var _sqlite3_table_column_metadata=Module[\"_sqlite3_table_column_metadata\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(_sqlite3_table_column_metadata=Module[\"_sqlite3_table_column_metadata\"]=wasmExports[\"sqlite3_table_column_metadata\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var _sqlite3_sleep=Module[\"_sqlite3_sleep\"]=a0=>(_sqlite3_sleep=Module[\"_sqlite3_sleep\"]=wasmExports[\"sqlite3_sleep\"])(a0);var _sqlite3_extended_result_codes=Module[\"_sqlite3_extended_result_codes\"]=(a0,a1)=>(_sqlite3_extended_result_codes=Module[\"_sqlite3_extended_result_codes\"]=wasmExports[\"sqlite3_extended_result_codes\"])(a0,a1);var _sqlite3_file_control=Module[\"_sqlite3_file_control\"]=(a0,a1,a2,a3)=>(_sqlite3_file_control=Module[\"_sqlite3_file_control\"]=wasmExports[\"sqlite3_file_control\"])(a0,a1,a2,a3);var _sqlite3_test_control=Module[\"_sqlite3_test_control\"]=(a0,a1)=>(_sqlite3_test_control=Module[\"_sqlite3_test_control\"]=wasmExports[\"sqlite3_test_control\"])(a0,a1);var _sqlite3_create_filename=Module[\"_sqlite3_create_filename\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_filename=Module[\"_sqlite3_create_filename\"]=wasmExports[\"sqlite3_create_filename\"])(a0,a1,a2,a3,a4);var _sqlite3_free_filename=Module[\"_sqlite3_free_filename\"]=a0=>(_sqlite3_free_filename=Module[\"_sqlite3_free_filename\"]=wasmExports[\"sqlite3_free_filename\"])(a0);var _sqlite3_uri_parameter=Module[\"_sqlite3_uri_parameter\"]=(a0,a1)=>(_sqlite3_uri_parameter=Module[\"_sqlite3_uri_parameter\"]=wasmExports[\"sqlite3_uri_parameter\"])(a0,a1);var _sqlite3_uri_key=Module[\"_sqlite3_uri_key\"]=(a0,a1)=>(_sqlite3_uri_key=Module[\"_sqlite3_uri_key\"]=wasmExports[\"sqlite3_uri_key\"])(a0,a1);var _sqlite3_uri_boolean=Module[\"_sqlite3_uri_boolean\"]=(a0,a1,a2)=>(_sqlite3_uri_boolean=Module[\"_sqlite3_uri_boolean\"]=wasmExports[\"sqlite3_uri_boolean\"])(a0,a1,a2);var _sqlite3_uri_int64=Module[\"_sqlite3_uri_int64\"]=(a0,a1,a2,a3)=>(_sqlite3_uri_int64=Module[\"_sqlite3_uri_int64\"]=wasmExports[\"sqlite3_uri_int64\"])(a0,a1,a2,a3);var _sqlite3_filename_database=Module[\"_sqlite3_filename_database\"]=a0=>(_sqlite3_filename_database=Module[\"_sqlite3_filename_database\"]=wasmExports[\"sqlite3_filename_database\"])(a0);var _sqlite3_filename_journal=Module[\"_sqlite3_filename_journal\"]=a0=>(_sqlite3_filename_journal=Module[\"_sqlite3_filename_journal\"]=wasmExports[\"sqlite3_filename_journal\"])(a0);var _sqlite3_filename_wal=Module[\"_sqlite3_filename_wal\"]=a0=>(_sqlite3_filename_wal=Module[\"_sqlite3_filename_wal\"]=wasmExports[\"sqlite3_filename_wal\"])(a0);var _sqlite3_db_name=Module[\"_sqlite3_db_name\"]=(a0,a1)=>(_sqlite3_db_name=Module[\"_sqlite3_db_name\"]=wasmExports[\"sqlite3_db_name\"])(a0,a1);var _sqlite3_db_filename=Module[\"_sqlite3_db_filename\"]=(a0,a1)=>(_sqlite3_db_filename=Module[\"_sqlite3_db_filename\"]=wasmExports[\"sqlite3_db_filename\"])(a0,a1);var _sqlite3_db_readonly=Module[\"_sqlite3_db_readonly\"]=(a0,a1)=>(_sqlite3_db_readonly=Module[\"_sqlite3_db_readonly\"]=wasmExports[\"sqlite3_db_readonly\"])(a0,a1);var _sqlite3_compileoption_used=Module[\"_sqlite3_compileoption_used\"]=a0=>(_sqlite3_compileoption_used=Module[\"_sqlite3_compileoption_used\"]=wasmExports[\"sqlite3_compileoption_used\"])(a0);var _sqlite3_compileoption_get=Module[\"_sqlite3_compileoption_get\"]=a0=>(_sqlite3_compileoption_get=Module[\"_sqlite3_compileoption_get\"]=wasmExports[\"sqlite3_compileoption_get\"])(a0);var _sqlite3_sourceid=Module[\"_sqlite3_sourceid\"]=()=>(_sqlite3_sourceid=Module[\"_sqlite3_sourceid\"]=wasmExports[\"sqlite3_sourceid\"])();var _malloc=Module[\"_malloc\"]=a0=>(_malloc=Module[\"_malloc\"]=wasmExports[\"malloc\"])(a0);var _free=Module[\"_free\"]=a0=>(_free=Module[\"_free\"]=wasmExports[\"free\"])(a0);var _RegisterExtensionFunctions=Module[\"_RegisterExtensionFunctions\"]=a0=>(_RegisterExtensionFunctions=Module[\"_RegisterExtensionFunctions\"]=wasmExports[\"RegisterExtensionFunctions\"])(a0);var _getSqliteFree=Module[\"_getSqliteFree\"]=()=>(_getSqliteFree=Module[\"_getSqliteFree\"]=wasmExports[\"getSqliteFree\"])();var _main=Module[\"_main\"]=(a0,a1)=>(_main=Module[\"_main\"]=wasmExports[\"main\"])(a0,a1);var _libauthorizer_set_authorizer=Module[\"_libauthorizer_set_authorizer\"]=(a0,a1,a2)=>(_libauthorizer_set_authorizer=Module[\"_libauthorizer_set_authorizer\"]=wasmExports[\"libauthorizer_set_authorizer\"])(a0,a1,a2);var _libfunction_create_function=Module[\"_libfunction_create_function\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_libfunction_create_function=Module[\"_libfunction_create_function\"]=wasmExports[\"libfunction_create_function\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _libhook_commit_hook=Module[\"_libhook_commit_hook\"]=(a0,a1,a2)=>(_libhook_commit_hook=Module[\"_libhook_commit_hook\"]=wasmExports[\"libhook_commit_hook\"])(a0,a1,a2);var _libhook_update_hook=Module[\"_libhook_update_hook\"]=(a0,a1,a2)=>(_libhook_update_hook=Module[\"_libhook_update_hook\"]=wasmExports[\"libhook_update_hook\"])(a0,a1,a2);var _libprogress_progress_handler=Module[\"_libprogress_progress_handler\"]=(a0,a1,a2,a3)=>(_libprogress_progress_handler=Module[\"_libprogress_progress_handler\"]=wasmExports[\"libprogress_progress_handler\"])(a0,a1,a2,a3);var _libvfs_vfs_register=Module[\"_libvfs_vfs_register\"]=(a0,a1,a2,a3,a4,a5)=>(_libvfs_vfs_register=Module[\"_libvfs_vfs_register\"]=wasmExports[\"libvfs_vfs_register\"])(a0,a1,a2,a3,a4,a5);var _emscripten_builtin_memalign=(a0,a1)=>(_emscripten_builtin_memalign=wasmExports[\"emscripten_builtin_memalign\"])(a0,a1);var __emscripten_tempret_get=()=>(__emscripten_tempret_get=wasmExports[\"_emscripten_tempret_get\"])();var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports[\"_emscripten_stack_restore\"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports[\"_emscripten_stack_alloc\"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports[\"emscripten_stack_get_current\"])();var _sqlite3_version=Module[\"_sqlite3_version\"]=3232;Module[\"getTempRet0\"]=getTempRet0;Module[\"ccall\"]=ccall;Module[\"cwrap\"]=cwrap;Module[\"addFunction\"]=addFunction;Module[\"setValue\"]=setValue;Module[\"getValue\"]=getValue;Module[\"UTF8ToString\"]=UTF8ToString;Module[\"stringToUTF8\"]=stringToUTF8;Module[\"lengthBytesUTF8\"]=lengthBytesUTF8;Module[\"intArrayFromString\"]=intArrayFromString;Module[\"intArrayToString\"]=intArrayToString;Module[\"AsciiToString\"]=AsciiToString;Module[\"UTF16ToString\"]=UTF16ToString;Module[\"stringToUTF16\"]=stringToUTF16;Module[\"UTF32ToString\"]=UTF32ToString;Module[\"stringToUTF32\"]=stringToUTF32;Module[\"writeArrayToMemory\"]=writeArrayToMemory;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);Promise.resolve(ret).then(result=>{exitJS(result,true)}).catch(e=>{handleException(e)});return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;run();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module[\"set_authorizer\"]=function(db,xAuthorizer,pApp){if(pAsyncFlags){Module[\"deleteCallback\"](pAsyncFlags);Module[\"_sqlite3_free\"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module[\"_sqlite3_malloc\"](4);setValue(pAsyncFlags,xAuthorizer instanceof AsyncFunction?1:0,\"i32\");const result=ccall(\"libauthorizer_set_authorizer\",\"number\",[\"number\",\"number\",\"number\"],[db,xAuthorizer?1:0,pAsyncFlags]);if(!result&&xAuthorizer){Module[\"setCallback\"](pAsyncFlags,(_,iAction,p3,p4,p5,p6)=>xAuthorizer(pApp,iAction,p3,p4,p5,p6))}return result}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;const FUNC_METHODS=[\"xFunc\",\"xStep\",\"xFinal\"];const mapFunctionNameToKey=new Map;Module[\"create_function\"]=function(db,zFunctionName,nArg,eTextRep,pApp,xFunc,xStep,xFinal){const pAsyncFlags=Module[\"_sqlite3_malloc\"](4);const target={xFunc:xFunc,xStep:xStep,xFinal:xFinal};setValue(pAsyncFlags,FUNC_METHODS.reduce((mask,method,i)=>{if(target[method]instanceof AsyncFunction){return mask|1<<i}return mask},0),\"i32\");const result=ccall(\"libfunction_create_function\",\"number\",[\"number\",\"string\",\"number\",\"number\",\"number\",\"number\",\"number\",\"number\"],[db,zFunctionName,nArg,eTextRep,pAsyncFlags,xFunc?1:0,xStep?1:0,xFinal?1:0]);if(!result){if(mapFunctionNameToKey.has(zFunctionName)){const oldKey=mapFunctionNameToKey.get(zFunctionName);Module[\"deleteCallback\"](oldKey)}mapFunctionNameToKey.set(zFunctionName,pAsyncFlags);Module[\"setCallback\"](pAsyncFlags,{xFunc:xFunc,xStep:xStep,xFinal:xFinal})}return result}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module[\"update_hook\"]=function(db,xUpdateHook){if(pAsyncFlags){Module[\"deleteCallback\"](pAsyncFlags);Module[\"_sqlite3_free\"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module[\"_sqlite3_malloc\"](4);setValue(pAsyncFlags,xUpdateHook instanceof AsyncFunction?1:0,\"i32\");ccall(\"libhook_update_hook\",\"void\",[\"number\",\"number\",\"number\"],[db,xUpdateHook?1:0,pAsyncFlags]);if(xUpdateHook){Module[\"setCallback\"](pAsyncFlags,(_,iUpdateType,dbName,tblName,lo32,hi32)=>xUpdateHook(iUpdateType,dbName,tblName,lo32,hi32))}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module[\"commit_hook\"]=function(db,xCommitHook){if(pAsyncFlags){Module[\"deleteCallback\"](pAsyncFlags);Module[\"_sqlite3_free\"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module[\"_sqlite3_malloc\"](4);setValue(pAsyncFlags,xCommitHook instanceof AsyncFunction?1:0,\"i32\");ccall(\"libhook_commit_hook\",\"void\",[\"number\",\"number\",\"number\"],[db,xCommitHook?1:0,pAsyncFlags]);if(xCommitHook){Module[\"setCallback\"](pAsyncFlags,_=>xCommitHook())}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module[\"progress_handler\"]=function(db,nOps,xProgress,pApp){if(pAsyncFlags){Module[\"deleteCallback\"](pAsyncFlags);Module[\"_sqlite3_free\"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module[\"_sqlite3_malloc\"](4);setValue(pAsyncFlags,xProgress instanceof AsyncFunction?1:0,\"i32\");ccall(\"libprogress_progress_handler\",\"number\",[\"number\",\"number\",\"number\",\"number\"],[db,nOps,xProgress?1:0,pAsyncFlags]);if(xProgress){Module[\"setCallback\"](pAsyncFlags,_=>xProgress(pApp))}}})();(function(){const VFS_METHODS=[\"xOpen\",\"xDelete\",\"xAccess\",\"xFullPathname\",\"xRandomness\",\"xSleep\",\"xCurrentTime\",\"xGetLastError\",\"xCurrentTimeInt64\",\"xClose\",\"xRead\",\"xWrite\",\"xTruncate\",\"xSync\",\"xFileSize\",\"xLock\",\"xUnlock\",\"xCheckReservedLock\",\"xFileControl\",\"xSectorSize\",\"xDeviceCharacteristics\",\"xShmMap\",\"xShmLock\",\"xShmBarrier\",\"xShmUnmap\"];const mapVFSNameToKey=new Map;Module[\"vfs_register\"]=function(vfs,makeDefault){let methodMask=0;let asyncMask=0;VFS_METHODS.forEach((method,i)=>{if(vfs[method]){methodMask|=1<<i;if(vfs[\"hasAsyncMethod\"](method)){asyncMask|=1<<i}}});const vfsReturn=Module[\"_sqlite3_malloc\"](4);try{const result=ccall(\"libvfs_vfs_register\",\"number\",[\"string\",\"number\",\"number\",\"number\",\"number\",\"number\"],[vfs.name,vfs.mxPathname,methodMask,asyncMask,makeDefault?1:0,vfsReturn]);if(!result){if(mapVFSNameToKey.has(vfs.name)){const oldKey=mapVFSNameToKey.get(vfs.name);Module[\"deleteCallback\"](oldKey)}const key=getValue(vfsReturn,\"*\");mapVFSNameToKey.set(vfs.name,key);Module[\"setCallback\"](key,vfs)}return result}finally{Module[\"_sqlite3_free\"](vfsReturn)}}})();moduleRtn=readyPromise;\n\n\n return moduleRtn;\n}\n);\n})();\nexport default Module;\n","\nvar Module = (() => {\n var _scriptName = import.meta.url;\n \n return (\nfunction(moduleArg = {}) {\n var moduleRtn;\n\nvar Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith(\"blob:\")){scriptDirectory=\"\"}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{fetch(url,{credentials:\"same-origin\"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+\" : \"+response.url))}).then(onload,onerror)}}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module[\"HEAP8\"]=HEAP8=new Int8Array(b);Module[\"HEAP16\"]=HEAP16=new Int16Array(b);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(b);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(b);Module[\"HEAP32\"]=HEAP32=new Int32Array(b);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(b);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(b);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module[\"monitorRunDependencies\"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module[\"monitorRunDependencies\"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module[\"onAbort\"]?.(what);what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){if(Module[\"locateFile\"]){var f=\"wa-sqlite-async.wasm\";if(!isDataURI(f)){return locateFile(f)}return f}return new URL(\"wa-sqlite-async.wasm\",import.meta.url).href}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}function getBinaryPromise(binaryFile){if(!wasmBinary){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),error=>{try{resolve(getBinarySync(binaryFile))}catch(e){reject(e)}})})}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(binaryFile)&&typeof fetch==\"function\"){return fetch(binaryFile,{credentials:\"same-origin\"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=Asyncify.instrumentWasmExports(wasmExports);wasmMemory=wasmExports[\"la\"];updateMemoryViews();wasmTable=wasmExports[\"ef\"];addOnInit(wasmExports[\"ma\"]);removeRunDependency(\"wasm-instantiate\");return wasmExports}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){receiveInstance(result[\"instance\"])}if(Module[\"instantiateWasm\"]){try{return Module[\"instantiateWasm\"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name=\"ExitStatus\";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr,type=\"i8\"){if(type.endsWith(\"*\"))type=\"*\";switch(type){case\"i1\":return HEAP8[ptr];case\"i8\":return HEAP8[ptr];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":abort(\"to do getValue(i64) use WASM_BIGINT\");case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];case\"*\":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module[\"noExitRuntime\"]||true;function setValue(ptr,value,type=\"i8\"){if(type.endsWith(\"*\"))type=\"*\";switch(type){case\"i1\":HEAP8[ptr]=value;break;case\"i8\":HEAP8[ptr]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":abort(\"to do setValue(i64) use WASM_BIGINT\");case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;case\"*\":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\"\";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\";var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])};var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join(\"/\")),join2:(l,r)=>PATH.normalize(l+\"/\"+r)};var initRandomFill=()=>{if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){return view=>crypto.getRandomValues(view)}else abort(\"initRandomDevice\")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath=\"\",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!==\"\")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push(\"..\")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join(\"/\")}};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char(tty){return FS_stdin_getChar()},put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var zeroMemory=(address,size)=>{HEAPU8.fill(0,address,address+size);return address};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;return zeroMemory(ptr,size)};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[\".\",\"..\"];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var asyncLoad=(url,onload,onerror,noRunDep)=>{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):\"\";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file \"${url}\" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module[\"preloadPlugins\"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!=\"undefined\")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,\"r+\":2,w:512|64|1,\"w+\":512|64|2,a:1024|64|1,\"a+\":1024|64|2};var flags=flagModes[str];if(typeof flags==\"undefined\"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name=\"ErrnoError\";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split(\"/\").filter(p=>!!p);var current=FS.root;var current_path=\"/\";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count+1});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+=\"/\"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat(path){return FS.stat(path,true)},chmod(path,mode,dontFollow){var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.chmod(stream.node,mode)},chown(path,uid,gid,dontFollow){var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.chown(stream.node,uid,gid)},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open(path,flags,mode){if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS_modeStringToFlags(flags):flags;if(flags&64){mode=typeof mode==\"undefined\"?438:mode;mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error(`Invalid encoding type \"${opts.encoding}\"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice(\"/dev\",\"random\",randomByte);FS.createDevice(\"/dev\",\"urandom\",randomByte);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount(){var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams(){if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"<generic error, no stack>\"});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS}},init(input,output,error){FS.init.initialized=true;Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile(parent,name,url,canRead,canWrite){class LazyUint8Array{constructor(){this.lengthKnown=false;this.chunks=[]}get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||\"\",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size}stream_ops.read=(stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_fchown32(fd,owner,group){try{FS.fchown(fd,owner,group);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function syscallGetVarargI(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret}var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function ___syscall_ftruncate64(fd,length_low,length_high){var length=convertI32PairToI53Checked(length_low,length_high);try{if(isNaN(length))return 61;FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size<cwdLengthInBytes)return-68;stringToUTF8(cwd,buf,size);return cwdLengthInBytes}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_readlinkat(dirfd,path,buf,bufsize){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort(\"Invalid flags passed to unlinkat\")}return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var readI53FromI64=ptr=>HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296;function ___syscall_utimensat(dirfd,path,times,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path,true);if(!times){var atime=Date.now();var mtime=atime}else{var seconds=readI53FromI64(times);var nanoseconds=HEAP32[times+8>>2];atime=seconds*1e3+nanoseconds/(1e3*1e3);times+=16;seconds=readI53FromI64(times);nanoseconds=HEAP32[times+8>>2];mtime=seconds*1e3+nanoseconds/(1e3*1e3)}FS.utime(path,atime,mtime);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mmap_js(len,prot,flags,fd,offset_low,offset_high,allocated,addr){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,offset,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset_low,offset_high){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=date=>date.toLocaleTimeString(undefined,{hour12:false,timeZoneName:\"short\"}).split(\" \")[1];var winterName=extractZone(winter);var summerName=extractZone(summer);if(summerOffset<winterOffset){stringToUTF8(winterName,std_name,17);stringToUTF8(summerName,dst_name,17)}else{stringToUTF8(winterName,dst_name,17);stringToUTF8(summerName,std_name,17)}};var _emscripten_date_now=()=>Date.now();var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||\"./this.program\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i<str.length;++i){HEAP8[buffer++]=str.charCodeAt(i)}HEAP8[buffer]=0};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;tempI64=[rightsBase>>>0,(tempDouble=rightsBase,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+8>>2]=tempI64[0],HEAP32[pbuf+12>>2]=tempI64[1];tempI64=[rightsInheriting>>>0,(tempDouble=rightsInheriting,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+16>>2]=tempI64[0],HEAP32[pbuf+20>>2]=tempI64[1];return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break;if(typeof offset!=\"undefined\"){offset+=curr}}return ret};function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var _fd_sync=function(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);return Asyncify.handleSleep(wakeUp=>{var mount=stream.node.mount;if(!mount.type.syncfs){wakeUp(0);return}mount.type.syncfs(mount,false,err=>{if(err){wakeUp(29);return}wakeUp(0)})})}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}};_fd_sync.isAsync=true;var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=\"undefined\"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var adapters_support=function(){const handleAsync=typeof Asyncify===\"object\"?Asyncify.handleAsync.bind(Asyncify):null;Module[\"handleAsync\"]=handleAsync;const targets=new Map;Module[\"setCallback\"]=(key,target)=>targets.set(key,target);Module[\"getCallback\"]=key=>targets.get(key);Module[\"deleteCallback\"]=key=>targets.delete(key);adapters_support=function(isAsync,key,...args){const receiver=targets.get(key);let methodName=null;const f=typeof receiver===\"function\"?receiver:receiver[methodName=UTF8ToString(args.shift())];if(isAsync){if(handleAsync){return handleAsync(()=>f.apply(receiver,args))}throw new Error(\"Synchronous WebAssembly cannot call async function\")}const result=f.apply(receiver,args);if(typeof result?.then==\"function\"){console.error(\"unexpected Promise\",f);throw new Error(`${methodName} unexpectedly returned a Promise`)}return result}};function _ipp(...args){return adapters_support(false,...args)}function _ipp_async(...args){return adapters_support(true,...args)}_ipp_async.isAsync=true;function _ippipppp(...args){return adapters_support(false,...args)}function _ippipppp_async(...args){return adapters_support(true,...args)}_ippipppp_async.isAsync=true;function _ippp(...args){return adapters_support(false,...args)}function _ippp_async(...args){return adapters_support(true,...args)}_ippp_async.isAsync=true;function _ipppi(...args){return adapters_support(false,...args)}function _ipppi_async(...args){return adapters_support(true,...args)}_ipppi_async.isAsync=true;function _ipppiii(...args){return adapters_support(false,...args)}function _ipppiii_async(...args){return adapters_support(true,...args)}_ipppiii_async.isAsync=true;function _ipppiiip(...args){return adapters_support(false,...args)}function _ipppiiip_async(...args){return adapters_support(true,...args)}_ipppiiip_async.isAsync=true;function _ipppip(...args){return adapters_support(false,...args)}function _ipppip_async(...args){return adapters_support(true,...args)}_ipppip_async.isAsync=true;function _ipppj(...args){return adapters_support(false,...args)}function _ipppj_async(...args){return adapters_support(true,...args)}_ipppj_async.isAsync=true;function _ipppp(...args){return adapters_support(false,...args)}function _ipppp_async(...args){return adapters_support(true,...args)}_ipppp_async.isAsync=true;function _ippppi(...args){return adapters_support(false,...args)}function _ippppi_async(...args){return adapters_support(true,...args)}_ippppi_async.isAsync=true;function _ippppij(...args){return adapters_support(false,...args)}function _ippppij_async(...args){return adapters_support(true,...args)}_ippppij_async.isAsync=true;function _ippppip(...args){return adapters_support(false,...args)}function _ippppip_async(...args){return adapters_support(true,...args)}_ippppip_async.isAsync=true;function _ipppppip(...args){return adapters_support(false,...args)}function _ipppppip_async(...args){return adapters_support(true,...args)}_ipppppip_async.isAsync=true;function _vppippii(...args){return adapters_support(false,...args)}function _vppippii_async(...args){return adapters_support(true,...args)}_vppippii_async.isAsync=true;function _vppp(...args){return adapters_support(false,...args)}function _vppp_async(...args){return adapters_support(true,...args)}_vppp_async.isAsync=true;function _vpppip(...args){return adapters_support(false,...args)}function _vpppip_async(...args){return adapters_support(true,...args)}_vpppip_async.isAsync=true;var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module[\"onExit\"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var handleException=e=>{if(e instanceof ExitStatus||e==\"unwind\"){return EXITSTATUS}quit_(1,e)};var runAndAbortIfError=func=>{try{return func()}catch(e){abort(e)}};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var sigToWasmTypes=sig=>{var typeNames={i:\"i32\",j:\"i64\",f:\"f32\",d:\"f64\",e:\"externref\",p:\"i32\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;i<sig.length;++i){type.parameters.push(typeNames[sig[i]])}return type};var runtimeKeepalivePush=()=>{runtimeKeepaliveCounter+=1};var runtimeKeepalivePop=()=>{runtimeKeepaliveCounter-=1};var Asyncify={instrumentWasmImports(imports){var importPattern=/^(ipp|ipp_async|ippp|ippp_async|vppp|vppp_async|ipppj|ipppj_async|ipppi|ipppi_async|ipppp|ipppp_async|ipppip|ipppip_async|vpppip|vpppip_async|ippppi|ippppi_async|ippppij|ippppij_async|ipppiii|ipppiii_async|ippppip|ippppip_async|ippipppp|ippipppp_async|ipppppip|ipppppip_async|ipppiiip|ipppiiip_async|vppippii|vppippii_async|invoke_.*|__asyncjs__.*)$/;for(let[x,original]of Object.entries(imports)){if(typeof original==\"function\"){let isAsyncifyImport=original.isAsync||importPattern.test(x)}}},instrumentWasmExports(exports){var ret={};for(let[x,original]of Object.entries(exports)){if(typeof original==\"function\"){ret[x]=(...args)=>{Asyncify.exportCallStack.push(x);try{return original(...args)}finally{if(!ABORT){var y=Asyncify.exportCallStack.pop();Asyncify.maybeStopUnwind()}}}}else{ret[x]=original}}return ret},State:{Normal:0,Unwinding:1,Rewinding:2,Disabled:3},state:0,StackSize:16384,currData:null,handleSleepReturnValue:0,exportCallStack:[],callStackNameToId:{},callStackIdToName:{},callStackId:0,asyncPromiseHandlers:null,sleepCallbacks:[],getCallStackId(funcName){var id=Asyncify.callStackNameToId[funcName];if(id===undefined){id=Asyncify.callStackId++;Asyncify.callStackNameToId[funcName]=id;Asyncify.callStackIdToName[id]=funcName}return id},maybeStopUnwind(){if(Asyncify.currData&&Asyncify.state===Asyncify.State.Unwinding&&Asyncify.exportCallStack.length===0){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(_asyncify_stop_unwind);if(typeof Fibers!=\"undefined\"){Fibers.trampoline()}}},whenDone(){return new Promise((resolve,reject)=>{Asyncify.asyncPromiseHandlers={resolve:resolve,reject:reject}})},allocateData(){var ptr=_malloc(12+Asyncify.StackSize);Asyncify.setDataHeader(ptr,ptr+12,Asyncify.StackSize);Asyncify.setDataRewindFunc(ptr);return ptr},setDataHeader(ptr,stack,stackSize){HEAPU32[ptr>>2]=stack;HEAPU32[ptr+4>>2]=stack+stackSize},setDataRewindFunc(ptr){var bottomOfCallStack=Asyncify.exportCallStack[0];var rewindId=Asyncify.getCallStackId(bottomOfCallStack);HEAP32[ptr+8>>2]=rewindId},getDataRewindFuncName(ptr){var id=HEAP32[ptr+8>>2];var name=Asyncify.callStackIdToName[id];return name},getDataRewindFunc(name){var func=wasmExports[name];return func},doRewind(ptr){var name=Asyncify.getDataRewindFuncName(ptr);var func=Asyncify.getDataRewindFunc(name);return func()},handleSleep(startAsync){if(ABORT)return;if(Asyncify.state===Asyncify.State.Normal){var reachedCallback=false;var reachedAfterCallback=false;startAsync((handleSleepReturnValue=0)=>{if(ABORT)return;Asyncify.handleSleepReturnValue=handleSleepReturnValue;reachedCallback=true;if(!reachedAfterCallback){return}Asyncify.state=Asyncify.State.Rewinding;runAndAbortIfError(()=>_asyncify_start_rewind(Asyncify.currData));if(typeof Browser!=\"undefined\"&&Browser.mainLoop.func){Browser.mainLoop.resume()}var asyncWasmReturnValue,isError=false;try{asyncWasmReturnValue=Asyncify.doRewind(Asyncify.currData)}catch(err){asyncWasmReturnValue=err;isError=true}var handled=false;if(!Asyncify.currData){var asyncPromiseHandlers=Asyncify.asyncPromiseHandlers;if(asyncPromiseHandlers){Asyncify.asyncPromiseHandlers=null;(isError?asyncPromiseHandlers.reject:asyncPromiseHandlers.resolve)(asyncWasmReturnValue);handled=true}}if(isError&&!handled){throw asyncWasmReturnValue}});reachedAfterCallback=true;if(!reachedCallback){Asyncify.state=Asyncify.State.Unwinding;Asyncify.currData=Asyncify.allocateData();if(typeof Browser!=\"undefined\"&&Browser.mainLoop.func){Browser.mainLoop.pause()}runAndAbortIfError(()=>_asyncify_start_unwind(Asyncify.currData))}}else if(Asyncify.state===Asyncify.State.Rewinding){Asyncify.state=Asyncify.State.Normal;runAndAbortIfError(_asyncify_stop_rewind);_free(Asyncify.currData);Asyncify.currData=null;Asyncify.sleepCallbacks.forEach(callUserCallback)}else{abort(`invalid state: ${Asyncify.state}`)}return Asyncify.handleSleepReturnValue},handleAsync(startAsync){return Asyncify.handleSleep(wakeUp=>{startAsync().then(wakeUp)})}};var uleb128Encode=(n,target)=>{if(n<128){target.push(n)}else{target.push(n%128|128,n>>7)}};var generateFuncType=(sig,target)=>{var sigRet=sig.slice(0,1);var sigParam=sig.slice(1);var typeCodes={i:127,p:127,j:126,f:125,d:124,e:111};target.push(96);uleb128Encode(sigParam.length,target);for(var i=0;i<sigParam.length;++i){target.push(typeCodes[sigParam[i]])}if(sigRet==\"v\"){target.push(0)}else{target.push(1,typeCodes[sigRet])}};var convertJsFunctionToWasm=(func,sig)=>{if(typeof WebAssembly.Function==\"function\"){return new WebAssembly.Function(sigToWasmTypes(sig),func)}var typeSectionBody=[1];generateFuncType(sig,typeSectionBody);var bytes=[0,97,115,109,1,0,0,0,1];uleb128Encode(typeSectionBody.length,bytes);bytes.push(...typeSectionBody);bytes.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(new Uint8Array(bytes));var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports[\"f\"];return wrappedFunc};var wasmTable;var getWasmTableEntry=funcPtr=>wasmTable.get(funcPtr);var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i<offset+count;i++){var item=getWasmTableEntry(i);if(item){functionsInTableMap.set(item,i)}}}};var functionsInTableMap;var getFunctionAddress=func=>{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}try{wasmTable.grow(1)}catch(err){if(!(err instanceof RangeError)){throw err}throw\"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\"}return wasmTable.length-1};var setWasmTableEntry=(idx,func)=>wasmTable.set(idx,func);var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};var getCFunc=ident=>{var func=Module[\"_\"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\"){return UTF8ToString(ret)}if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var previousAsync=Asyncify.currData;var ret=func(...cArgs);function onDone(ret){runtimeKeepalivePop();if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}var asyncMode=opts?.async;runtimeKeepalivePush();if(Asyncify.currData!=previousAsync){return Asyncify.whenDone().then(onDone)}ret=onDone(ret);if(asyncMode)return Promise.resolve(ret);return ret};var cwrap=(ident,returnType,argTypes,opts)=>{var numericArgs=!argTypes||argTypes.every(type=>type===\"number\"||type===\"boolean\");var numericRet=returnType!==\"string\";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};var getTempRet0=val=>__emscripten_tempret_get();var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var AsciiToString=ptr=>{var str=\"\";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;var UTF16ToString=(ptr,maxBytesToRead)=>{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();adapters_support();var wasmImports={a:___assert_fail,Y:___syscall_chmod,$:___syscall_faccessat,Z:___syscall_fchmod,X:___syscall_fchown32,b:___syscall_fcntl64,W:___syscall_fstat64,y:___syscall_ftruncate64,Q:___syscall_getcwd,U:___syscall_lstat64,N:___syscall_mkdirat,S:___syscall_newfstatat,M:___syscall_openat,K:___syscall_readlinkat,J:___syscall_rmdir,V:___syscall_stat64,G:___syscall_unlinkat,F:___syscall_utimensat,w:__localtime_js,u:__mmap_js,v:__munmap_js,H:__tzset_js,n:_emscripten_date_now,m:_emscripten_get_now,D:_emscripten_resize_heap,O:_environ_get,P:_environ_sizes_get,o:_fd_close,E:_fd_fdstat_get,L:_fd_read,x:_fd_seek,R:_fd_sync,I:_fd_write,s:_ipp,t:_ipp_async,ga:_ippipppp,ka:_ippipppp_async,i:_ippp,j:_ippp_async,c:_ipppi,d:_ipppi_async,ca:_ipppiii,da:_ipppiii_async,ea:_ipppiiip,fa:_ipppiiip_async,g:_ipppip,h:_ipppip_async,z:_ipppj,A:_ipppj_async,e:_ipppp,f:_ipppp_async,aa:_ippppi,ba:_ippppi_async,B:_ippppij,C:_ippppij_async,p:_ippppip,q:_ippppip_async,ha:_ipppppip,ia:_ipppppip_async,ja:_vppippii,r:_vppippii_async,k:_vppp,l:_vppp_async,T:_vpppip,_:_vpppip_async};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports[\"ma\"])();var _sqlite3_status64=Module[\"_sqlite3_status64\"]=(a0,a1,a2,a3)=>(_sqlite3_status64=Module[\"_sqlite3_status64\"]=wasmExports[\"na\"])(a0,a1,a2,a3);var _sqlite3_status=Module[\"_sqlite3_status\"]=(a0,a1,a2,a3)=>(_sqlite3_status=Module[\"_sqlite3_status\"]=wasmExports[\"oa\"])(a0,a1,a2,a3);var _sqlite3_msize=Module[\"_sqlite3_msize\"]=a0=>(_sqlite3_msize=Module[\"_sqlite3_msize\"]=wasmExports[\"pa\"])(a0);var _sqlite3_db_status=Module[\"_sqlite3_db_status\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_db_status=Module[\"_sqlite3_db_status\"]=wasmExports[\"qa\"])(a0,a1,a2,a3,a4);var _sqlite3_vfs_find=Module[\"_sqlite3_vfs_find\"]=a0=>(_sqlite3_vfs_find=Module[\"_sqlite3_vfs_find\"]=wasmExports[\"ra\"])(a0);var _sqlite3_vfs_register=Module[\"_sqlite3_vfs_register\"]=(a0,a1)=>(_sqlite3_vfs_register=Module[\"_sqlite3_vfs_register\"]=wasmExports[\"sa\"])(a0,a1);var _sqlite3_vfs_unregister=Module[\"_sqlite3_vfs_unregister\"]=a0=>(_sqlite3_vfs_unregister=Module[\"_sqlite3_vfs_unregister\"]=wasmExports[\"ta\"])(a0);var _sqlite3_release_memory=Module[\"_sqlite3_release_memory\"]=a0=>(_sqlite3_release_memory=Module[\"_sqlite3_release_memory\"]=wasmExports[\"ua\"])(a0);var _sqlite3_soft_heap_limit64=Module[\"_sqlite3_soft_heap_limit64\"]=(a0,a1)=>(_sqlite3_soft_heap_limit64=Module[\"_sqlite3_soft_heap_limit64\"]=wasmExports[\"va\"])(a0,a1);var _sqlite3_memory_used=Module[\"_sqlite3_memory_used\"]=()=>(_sqlite3_memory_used=Module[\"_sqlite3_memory_used\"]=wasmExports[\"wa\"])();var _sqlite3_hard_heap_limit64=Module[\"_sqlite3_hard_heap_limit64\"]=(a0,a1)=>(_sqlite3_hard_heap_limit64=Module[\"_sqlite3_hard_heap_limit64\"]=wasmExports[\"xa\"])(a0,a1);var _sqlite3_memory_highwater=Module[\"_sqlite3_memory_highwater\"]=a0=>(_sqlite3_memory_highwater=Module[\"_sqlite3_memory_highwater\"]=wasmExports[\"ya\"])(a0);var _sqlite3_malloc=Module[\"_sqlite3_malloc\"]=a0=>(_sqlite3_malloc=Module[\"_sqlite3_malloc\"]=wasmExports[\"za\"])(a0);var _sqlite3_malloc64=Module[\"_sqlite3_malloc64\"]=(a0,a1)=>(_sqlite3_malloc64=Module[\"_sqlite3_malloc64\"]=wasmExports[\"Aa\"])(a0,a1);var _sqlite3_free=Module[\"_sqlite3_free\"]=a0=>(_sqlite3_free=Module[\"_sqlite3_free\"]=wasmExports[\"Ba\"])(a0);var _sqlite3_realloc=Module[\"_sqlite3_realloc\"]=(a0,a1)=>(_sqlite3_realloc=Module[\"_sqlite3_realloc\"]=wasmExports[\"Ca\"])(a0,a1);var _sqlite3_realloc64=Module[\"_sqlite3_realloc64\"]=(a0,a1,a2)=>(_sqlite3_realloc64=Module[\"_sqlite3_realloc64\"]=wasmExports[\"Da\"])(a0,a1,a2);var _sqlite3_str_vappendf=Module[\"_sqlite3_str_vappendf\"]=(a0,a1,a2)=>(_sqlite3_str_vappendf=Module[\"_sqlite3_str_vappendf\"]=wasmExports[\"Ea\"])(a0,a1,a2);var _sqlite3_str_append=Module[\"_sqlite3_str_append\"]=(a0,a1,a2)=>(_sqlite3_str_append=Module[\"_sqlite3_str_append\"]=wasmExports[\"Fa\"])(a0,a1,a2);var _sqlite3_str_appendchar=Module[\"_sqlite3_str_appendchar\"]=(a0,a1,a2)=>(_sqlite3_str_appendchar=Module[\"_sqlite3_str_appendchar\"]=wasmExports[\"Ga\"])(a0,a1,a2);var _sqlite3_str_appendall=Module[\"_sqlite3_str_appendall\"]=(a0,a1)=>(_sqlite3_str_appendall=Module[\"_sqlite3_str_appendall\"]=wasmExports[\"Ha\"])(a0,a1);var _sqlite3_str_appendf=Module[\"_sqlite3_str_appendf\"]=(a0,a1,a2)=>(_sqlite3_str_appendf=Module[\"_sqlite3_str_appendf\"]=wasmExports[\"Ia\"])(a0,a1,a2);var _sqlite3_str_finish=Module[\"_sqlite3_str_finish\"]=a0=>(_sqlite3_str_finish=Module[\"_sqlite3_str_finish\"]=wasmExports[\"Ja\"])(a0);var _sqlite3_str_errcode=Module[\"_sqlite3_str_errcode\"]=a0=>(_sqlite3_str_errcode=Module[\"_sqlite3_str_errcode\"]=wasmExports[\"Ka\"])(a0);var _sqlite3_str_length=Module[\"_sqlite3_str_length\"]=a0=>(_sqlite3_str_length=Module[\"_sqlite3_str_length\"]=wasmExports[\"La\"])(a0);var _sqlite3_str_value=Module[\"_sqlite3_str_value\"]=a0=>(_sqlite3_str_value=Module[\"_sqlite3_str_value\"]=wasmExports[\"Ma\"])(a0);var _sqlite3_str_reset=Module[\"_sqlite3_str_reset\"]=a0=>(_sqlite3_str_reset=Module[\"_sqlite3_str_reset\"]=wasmExports[\"Na\"])(a0);var _sqlite3_str_new=Module[\"_sqlite3_str_new\"]=a0=>(_sqlite3_str_new=Module[\"_sqlite3_str_new\"]=wasmExports[\"Oa\"])(a0);var _sqlite3_vmprintf=Module[\"_sqlite3_vmprintf\"]=(a0,a1)=>(_sqlite3_vmprintf=Module[\"_sqlite3_vmprintf\"]=wasmExports[\"Pa\"])(a0,a1);var _sqlite3_mprintf=Module[\"_sqlite3_mprintf\"]=(a0,a1)=>(_sqlite3_mprintf=Module[\"_sqlite3_mprintf\"]=wasmExports[\"Qa\"])(a0,a1);var _sqlite3_vsnprintf=Module[\"_sqlite3_vsnprintf\"]=(a0,a1,a2,a3)=>(_sqlite3_vsnprintf=Module[\"_sqlite3_vsnprintf\"]=wasmExports[\"Ra\"])(a0,a1,a2,a3);var _sqlite3_snprintf=Module[\"_sqlite3_snprintf\"]=(a0,a1,a2,a3)=>(_sqlite3_snprintf=Module[\"_sqlite3_snprintf\"]=wasmExports[\"Sa\"])(a0,a1,a2,a3);var _sqlite3_log=Module[\"_sqlite3_log\"]=(a0,a1,a2)=>(_sqlite3_log=Module[\"_sqlite3_log\"]=wasmExports[\"Ta\"])(a0,a1,a2);var _sqlite3_randomness=Module[\"_sqlite3_randomness\"]=(a0,a1)=>(_sqlite3_randomness=Module[\"_sqlite3_randomness\"]=wasmExports[\"Ua\"])(a0,a1);var _sqlite3_stricmp=Module[\"_sqlite3_stricmp\"]=(a0,a1)=>(_sqlite3_stricmp=Module[\"_sqlite3_stricmp\"]=wasmExports[\"Va\"])(a0,a1);var _sqlite3_strnicmp=Module[\"_sqlite3_strnicmp\"]=(a0,a1,a2)=>(_sqlite3_strnicmp=Module[\"_sqlite3_strnicmp\"]=wasmExports[\"Wa\"])(a0,a1,a2);var _sqlite3_os_init=Module[\"_sqlite3_os_init\"]=()=>(_sqlite3_os_init=Module[\"_sqlite3_os_init\"]=wasmExports[\"Xa\"])();var _sqlite3_os_end=Module[\"_sqlite3_os_end\"]=()=>(_sqlite3_os_end=Module[\"_sqlite3_os_end\"]=wasmExports[\"Ya\"])();var _sqlite3_serialize=Module[\"_sqlite3_serialize\"]=(a0,a1,a2,a3)=>(_sqlite3_serialize=Module[\"_sqlite3_serialize\"]=wasmExports[\"Za\"])(a0,a1,a2,a3);var _sqlite3_prepare_v2=Module[\"_sqlite3_prepare_v2\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare_v2=Module[\"_sqlite3_prepare_v2\"]=wasmExports[\"_a\"])(a0,a1,a2,a3,a4);var _sqlite3_step=Module[\"_sqlite3_step\"]=a0=>(_sqlite3_step=Module[\"_sqlite3_step\"]=wasmExports[\"$a\"])(a0);var _sqlite3_column_int64=Module[\"_sqlite3_column_int64\"]=(a0,a1)=>(_sqlite3_column_int64=Module[\"_sqlite3_column_int64\"]=wasmExports[\"ab\"])(a0,a1);var _sqlite3_reset=Module[\"_sqlite3_reset\"]=a0=>(_sqlite3_reset=Module[\"_sqlite3_reset\"]=wasmExports[\"bb\"])(a0);var _sqlite3_exec=Module[\"_sqlite3_exec\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_exec=Module[\"_sqlite3_exec\"]=wasmExports[\"cb\"])(a0,a1,a2,a3,a4);var _sqlite3_column_int=Module[\"_sqlite3_column_int\"]=(a0,a1)=>(_sqlite3_column_int=Module[\"_sqlite3_column_int\"]=wasmExports[\"db\"])(a0,a1);var _sqlite3_finalize=Module[\"_sqlite3_finalize\"]=a0=>(_sqlite3_finalize=Module[\"_sqlite3_finalize\"]=wasmExports[\"eb\"])(a0);var _sqlite3_deserialize=Module[\"_sqlite3_deserialize\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_deserialize=Module[\"_sqlite3_deserialize\"]=wasmExports[\"fb\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_database_file_object=Module[\"_sqlite3_database_file_object\"]=a0=>(_sqlite3_database_file_object=Module[\"_sqlite3_database_file_object\"]=wasmExports[\"gb\"])(a0);var _sqlite3_backup_init=Module[\"_sqlite3_backup_init\"]=(a0,a1,a2,a3)=>(_sqlite3_backup_init=Module[\"_sqlite3_backup_init\"]=wasmExports[\"hb\"])(a0,a1,a2,a3);var _sqlite3_backup_step=Module[\"_sqlite3_backup_step\"]=(a0,a1)=>(_sqlite3_backup_step=Module[\"_sqlite3_backup_step\"]=wasmExports[\"ib\"])(a0,a1);var _sqlite3_backup_finish=Module[\"_sqlite3_backup_finish\"]=a0=>(_sqlite3_backup_finish=Module[\"_sqlite3_backup_finish\"]=wasmExports[\"jb\"])(a0);var _sqlite3_backup_remaining=Module[\"_sqlite3_backup_remaining\"]=a0=>(_sqlite3_backup_remaining=Module[\"_sqlite3_backup_remaining\"]=wasmExports[\"kb\"])(a0);var _sqlite3_backup_pagecount=Module[\"_sqlite3_backup_pagecount\"]=a0=>(_sqlite3_backup_pagecount=Module[\"_sqlite3_backup_pagecount\"]=wasmExports[\"lb\"])(a0);var _sqlite3_clear_bindings=Module[\"_sqlite3_clear_bindings\"]=a0=>(_sqlite3_clear_bindings=Module[\"_sqlite3_clear_bindings\"]=wasmExports[\"mb\"])(a0);var _sqlite3_value_blob=Module[\"_sqlite3_value_blob\"]=a0=>(_sqlite3_value_blob=Module[\"_sqlite3_value_blob\"]=wasmExports[\"nb\"])(a0);var _sqlite3_value_text=Module[\"_sqlite3_value_text\"]=a0=>(_sqlite3_value_text=Module[\"_sqlite3_value_text\"]=wasmExports[\"ob\"])(a0);var _sqlite3_value_bytes=Module[\"_sqlite3_value_bytes\"]=a0=>(_sqlite3_value_bytes=Module[\"_sqlite3_value_bytes\"]=wasmExports[\"pb\"])(a0);var _sqlite3_value_bytes16=Module[\"_sqlite3_value_bytes16\"]=a0=>(_sqlite3_value_bytes16=Module[\"_sqlite3_value_bytes16\"]=wasmExports[\"qb\"])(a0);var _sqlite3_value_double=Module[\"_sqlite3_value_double\"]=a0=>(_sqlite3_value_double=Module[\"_sqlite3_value_double\"]=wasmExports[\"rb\"])(a0);var _sqlite3_value_int=Module[\"_sqlite3_value_int\"]=a0=>(_sqlite3_value_int=Module[\"_sqlite3_value_int\"]=wasmExports[\"sb\"])(a0);var _sqlite3_value_int64=Module[\"_sqlite3_value_int64\"]=a0=>(_sqlite3_value_int64=Module[\"_sqlite3_value_int64\"]=wasmExports[\"tb\"])(a0);var _sqlite3_value_subtype=Module[\"_sqlite3_value_subtype\"]=a0=>(_sqlite3_value_subtype=Module[\"_sqlite3_value_subtype\"]=wasmExports[\"ub\"])(a0);var _sqlite3_value_pointer=Module[\"_sqlite3_value_pointer\"]=(a0,a1)=>(_sqlite3_value_pointer=Module[\"_sqlite3_value_pointer\"]=wasmExports[\"vb\"])(a0,a1);var _sqlite3_value_text16=Module[\"_sqlite3_value_text16\"]=a0=>(_sqlite3_value_text16=Module[\"_sqlite3_value_text16\"]=wasmExports[\"wb\"])(a0);var _sqlite3_value_text16be=Module[\"_sqlite3_value_text16be\"]=a0=>(_sqlite3_value_text16be=Module[\"_sqlite3_value_text16be\"]=wasmExports[\"xb\"])(a0);var _sqlite3_value_text16le=Module[\"_sqlite3_value_text16le\"]=a0=>(_sqlite3_value_text16le=Module[\"_sqlite3_value_text16le\"]=wasmExports[\"yb\"])(a0);var _sqlite3_value_type=Module[\"_sqlite3_value_type\"]=a0=>(_sqlite3_value_type=Module[\"_sqlite3_value_type\"]=wasmExports[\"zb\"])(a0);var _sqlite3_value_encoding=Module[\"_sqlite3_value_encoding\"]=a0=>(_sqlite3_value_encoding=Module[\"_sqlite3_value_encoding\"]=wasmExports[\"Ab\"])(a0);var _sqlite3_value_nochange=Module[\"_sqlite3_value_nochange\"]=a0=>(_sqlite3_value_nochange=Module[\"_sqlite3_value_nochange\"]=wasmExports[\"Bb\"])(a0);var _sqlite3_value_frombind=Module[\"_sqlite3_value_frombind\"]=a0=>(_sqlite3_value_frombind=Module[\"_sqlite3_value_frombind\"]=wasmExports[\"Cb\"])(a0);var _sqlite3_value_dup=Module[\"_sqlite3_value_dup\"]=a0=>(_sqlite3_value_dup=Module[\"_sqlite3_value_dup\"]=wasmExports[\"Db\"])(a0);var _sqlite3_value_free=Module[\"_sqlite3_value_free\"]=a0=>(_sqlite3_value_free=Module[\"_sqlite3_value_free\"]=wasmExports[\"Eb\"])(a0);var _sqlite3_result_blob=Module[\"_sqlite3_result_blob\"]=(a0,a1,a2,a3)=>(_sqlite3_result_blob=Module[\"_sqlite3_result_blob\"]=wasmExports[\"Fb\"])(a0,a1,a2,a3);var _sqlite3_result_blob64=Module[\"_sqlite3_result_blob64\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_result_blob64=Module[\"_sqlite3_result_blob64\"]=wasmExports[\"Gb\"])(a0,a1,a2,a3,a4);var _sqlite3_result_double=Module[\"_sqlite3_result_double\"]=(a0,a1)=>(_sqlite3_result_double=Module[\"_sqlite3_result_double\"]=wasmExports[\"Hb\"])(a0,a1);var _sqlite3_result_error=Module[\"_sqlite3_result_error\"]=(a0,a1,a2)=>(_sqlite3_result_error=Module[\"_sqlite3_result_error\"]=wasmExports[\"Ib\"])(a0,a1,a2);var _sqlite3_result_error16=Module[\"_sqlite3_result_error16\"]=(a0,a1,a2)=>(_sqlite3_result_error16=Module[\"_sqlite3_result_error16\"]=wasmExports[\"Jb\"])(a0,a1,a2);var _sqlite3_result_int=Module[\"_sqlite3_result_int\"]=(a0,a1)=>(_sqlite3_result_int=Module[\"_sqlite3_result_int\"]=wasmExports[\"Kb\"])(a0,a1);var _sqlite3_result_int64=Module[\"_sqlite3_result_int64\"]=(a0,a1,a2)=>(_sqlite3_result_int64=Module[\"_sqlite3_result_int64\"]=wasmExports[\"Lb\"])(a0,a1,a2);var _sqlite3_result_null=Module[\"_sqlite3_result_null\"]=a0=>(_sqlite3_result_null=Module[\"_sqlite3_result_null\"]=wasmExports[\"Mb\"])(a0);var _sqlite3_result_pointer=Module[\"_sqlite3_result_pointer\"]=(a0,a1,a2,a3)=>(_sqlite3_result_pointer=Module[\"_sqlite3_result_pointer\"]=wasmExports[\"Nb\"])(a0,a1,a2,a3);var _sqlite3_result_subtype=Module[\"_sqlite3_result_subtype\"]=(a0,a1)=>(_sqlite3_result_subtype=Module[\"_sqlite3_result_subtype\"]=wasmExports[\"Ob\"])(a0,a1);var _sqlite3_result_text=Module[\"_sqlite3_result_text\"]=(a0,a1,a2,a3)=>(_sqlite3_result_text=Module[\"_sqlite3_result_text\"]=wasmExports[\"Pb\"])(a0,a1,a2,a3);var _sqlite3_result_text64=Module[\"_sqlite3_result_text64\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_result_text64=Module[\"_sqlite3_result_text64\"]=wasmExports[\"Qb\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_result_text16=Module[\"_sqlite3_result_text16\"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16=Module[\"_sqlite3_result_text16\"]=wasmExports[\"Rb\"])(a0,a1,a2,a3);var _sqlite3_result_text16be=Module[\"_sqlite3_result_text16be\"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16be=Module[\"_sqlite3_result_text16be\"]=wasmExports[\"Sb\"])(a0,a1,a2,a3);var _sqlite3_result_text16le=Module[\"_sqlite3_result_text16le\"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16le=Module[\"_sqlite3_result_text16le\"]=wasmExports[\"Tb\"])(a0,a1,a2,a3);var _sqlite3_result_value=Module[\"_sqlite3_result_value\"]=(a0,a1)=>(_sqlite3_result_value=Module[\"_sqlite3_result_value\"]=wasmExports[\"Ub\"])(a0,a1);var _sqlite3_result_error_toobig=Module[\"_sqlite3_result_error_toobig\"]=a0=>(_sqlite3_result_error_toobig=Module[\"_sqlite3_result_error_toobig\"]=wasmExports[\"Vb\"])(a0);var _sqlite3_result_zeroblob=Module[\"_sqlite3_result_zeroblob\"]=(a0,a1)=>(_sqlite3_result_zeroblob=Module[\"_sqlite3_result_zeroblob\"]=wasmExports[\"Wb\"])(a0,a1);var _sqlite3_result_zeroblob64=Module[\"_sqlite3_result_zeroblob64\"]=(a0,a1,a2)=>(_sqlite3_result_zeroblob64=Module[\"_sqlite3_result_zeroblob64\"]=wasmExports[\"Xb\"])(a0,a1,a2);var _sqlite3_result_error_code=Module[\"_sqlite3_result_error_code\"]=(a0,a1)=>(_sqlite3_result_error_code=Module[\"_sqlite3_result_error_code\"]=wasmExports[\"Yb\"])(a0,a1);var _sqlite3_result_error_nomem=Module[\"_sqlite3_result_error_nomem\"]=a0=>(_sqlite3_result_error_nomem=Module[\"_sqlite3_result_error_nomem\"]=wasmExports[\"Zb\"])(a0);var _sqlite3_user_data=Module[\"_sqlite3_user_data\"]=a0=>(_sqlite3_user_data=Module[\"_sqlite3_user_data\"]=wasmExports[\"_b\"])(a0);var _sqlite3_context_db_handle=Module[\"_sqlite3_context_db_handle\"]=a0=>(_sqlite3_context_db_handle=Module[\"_sqlite3_context_db_handle\"]=wasmExports[\"$b\"])(a0);var _sqlite3_vtab_nochange=Module[\"_sqlite3_vtab_nochange\"]=a0=>(_sqlite3_vtab_nochange=Module[\"_sqlite3_vtab_nochange\"]=wasmExports[\"ac\"])(a0);var _sqlite3_vtab_in_first=Module[\"_sqlite3_vtab_in_first\"]=(a0,a1)=>(_sqlite3_vtab_in_first=Module[\"_sqlite3_vtab_in_first\"]=wasmExports[\"bc\"])(a0,a1);var _sqlite3_vtab_in_next=Module[\"_sqlite3_vtab_in_next\"]=(a0,a1)=>(_sqlite3_vtab_in_next=Module[\"_sqlite3_vtab_in_next\"]=wasmExports[\"cc\"])(a0,a1);var _sqlite3_aggregate_context=Module[\"_sqlite3_aggregate_context\"]=(a0,a1)=>(_sqlite3_aggregate_context=Module[\"_sqlite3_aggregate_context\"]=wasmExports[\"dc\"])(a0,a1);var _sqlite3_get_auxdata=Module[\"_sqlite3_get_auxdata\"]=(a0,a1)=>(_sqlite3_get_auxdata=Module[\"_sqlite3_get_auxdata\"]=wasmExports[\"ec\"])(a0,a1);var _sqlite3_set_auxdata=Module[\"_sqlite3_set_auxdata\"]=(a0,a1,a2,a3)=>(_sqlite3_set_auxdata=Module[\"_sqlite3_set_auxdata\"]=wasmExports[\"fc\"])(a0,a1,a2,a3);var _sqlite3_column_count=Module[\"_sqlite3_column_count\"]=a0=>(_sqlite3_column_count=Module[\"_sqlite3_column_count\"]=wasmExports[\"gc\"])(a0);var _sqlite3_data_count=Module[\"_sqlite3_data_count\"]=a0=>(_sqlite3_data_count=Module[\"_sqlite3_data_count\"]=wasmExports[\"hc\"])(a0);var _sqlite3_column_blob=Module[\"_sqlite3_column_blob\"]=(a0,a1)=>(_sqlite3_column_blob=Module[\"_sqlite3_column_blob\"]=wasmExports[\"ic\"])(a0,a1);var _sqlite3_column_bytes=Module[\"_sqlite3_column_bytes\"]=(a0,a1)=>(_sqlite3_column_bytes=Module[\"_sqlite3_column_bytes\"]=wasmExports[\"jc\"])(a0,a1);var _sqlite3_column_bytes16=Module[\"_sqlite3_column_bytes16\"]=(a0,a1)=>(_sqlite3_column_bytes16=Module[\"_sqlite3_column_bytes16\"]=wasmExports[\"kc\"])(a0,a1);var _sqlite3_column_double=Module[\"_sqlite3_column_double\"]=(a0,a1)=>(_sqlite3_column_double=Module[\"_sqlite3_column_double\"]=wasmExports[\"lc\"])(a0,a1);var _sqlite3_column_text=Module[\"_sqlite3_column_text\"]=(a0,a1)=>(_sqlite3_column_text=Module[\"_sqlite3_column_text\"]=wasmExports[\"mc\"])(a0,a1);var _sqlite3_column_value=Module[\"_sqlite3_column_value\"]=(a0,a1)=>(_sqlite3_column_value=Module[\"_sqlite3_column_value\"]=wasmExports[\"nc\"])(a0,a1);var _sqlite3_column_text16=Module[\"_sqlite3_column_text16\"]=(a0,a1)=>(_sqlite3_column_text16=Module[\"_sqlite3_column_text16\"]=wasmExports[\"oc\"])(a0,a1);var _sqlite3_column_type=Module[\"_sqlite3_column_type\"]=(a0,a1)=>(_sqlite3_column_type=Module[\"_sqlite3_column_type\"]=wasmExports[\"pc\"])(a0,a1);var _sqlite3_column_name=Module[\"_sqlite3_column_name\"]=(a0,a1)=>(_sqlite3_column_name=Module[\"_sqlite3_column_name\"]=wasmExports[\"qc\"])(a0,a1);var _sqlite3_column_name16=Module[\"_sqlite3_column_name16\"]=(a0,a1)=>(_sqlite3_column_name16=Module[\"_sqlite3_column_name16\"]=wasmExports[\"rc\"])(a0,a1);var _sqlite3_bind_blob=Module[\"_sqlite3_bind_blob\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_blob=Module[\"_sqlite3_bind_blob\"]=wasmExports[\"sc\"])(a0,a1,a2,a3,a4);var _sqlite3_bind_blob64=Module[\"_sqlite3_bind_blob64\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_bind_blob64=Module[\"_sqlite3_bind_blob64\"]=wasmExports[\"tc\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_bind_double=Module[\"_sqlite3_bind_double\"]=(a0,a1,a2)=>(_sqlite3_bind_double=Module[\"_sqlite3_bind_double\"]=wasmExports[\"uc\"])(a0,a1,a2);var _sqlite3_bind_int=Module[\"_sqlite3_bind_int\"]=(a0,a1,a2)=>(_sqlite3_bind_int=Module[\"_sqlite3_bind_int\"]=wasmExports[\"vc\"])(a0,a1,a2);var _sqlite3_bind_int64=Module[\"_sqlite3_bind_int64\"]=(a0,a1,a2,a3)=>(_sqlite3_bind_int64=Module[\"_sqlite3_bind_int64\"]=wasmExports[\"wc\"])(a0,a1,a2,a3);var _sqlite3_bind_null=Module[\"_sqlite3_bind_null\"]=(a0,a1)=>(_sqlite3_bind_null=Module[\"_sqlite3_bind_null\"]=wasmExports[\"xc\"])(a0,a1);var _sqlite3_bind_pointer=Module[\"_sqlite3_bind_pointer\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_pointer=Module[\"_sqlite3_bind_pointer\"]=wasmExports[\"yc\"])(a0,a1,a2,a3,a4);var _sqlite3_bind_text=Module[\"_sqlite3_bind_text\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_text=Module[\"_sqlite3_bind_text\"]=wasmExports[\"zc\"])(a0,a1,a2,a3,a4);var _sqlite3_bind_text64=Module[\"_sqlite3_bind_text64\"]=(a0,a1,a2,a3,a4,a5,a6)=>(_sqlite3_bind_text64=Module[\"_sqlite3_bind_text64\"]=wasmExports[\"Ac\"])(a0,a1,a2,a3,a4,a5,a6);var _sqlite3_bind_text16=Module[\"_sqlite3_bind_text16\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_text16=Module[\"_sqlite3_bind_text16\"]=wasmExports[\"Bc\"])(a0,a1,a2,a3,a4);var _sqlite3_bind_value=Module[\"_sqlite3_bind_value\"]=(a0,a1,a2)=>(_sqlite3_bind_value=Module[\"_sqlite3_bind_value\"]=wasmExports[\"Cc\"])(a0,a1,a2);var _sqlite3_bind_zeroblob=Module[\"_sqlite3_bind_zeroblob\"]=(a0,a1,a2)=>(_sqlite3_bind_zeroblob=Module[\"_sqlite3_bind_zeroblob\"]=wasmExports[\"Dc\"])(a0,a1,a2);var _sqlite3_bind_zeroblob64=Module[\"_sqlite3_bind_zeroblob64\"]=(a0,a1,a2,a3)=>(_sqlite3_bind_zeroblob64=Module[\"_sqlite3_bind_zeroblob64\"]=wasmExports[\"Ec\"])(a0,a1,a2,a3);var _sqlite3_bind_parameter_count=Module[\"_sqlite3_bind_parameter_count\"]=a0=>(_sqlite3_bind_parameter_count=Module[\"_sqlite3_bind_parameter_count\"]=wasmExports[\"Fc\"])(a0);var _sqlite3_bind_parameter_name=Module[\"_sqlite3_bind_parameter_name\"]=(a0,a1)=>(_sqlite3_bind_parameter_name=Module[\"_sqlite3_bind_parameter_name\"]=wasmExports[\"Gc\"])(a0,a1);var _sqlite3_bind_parameter_index=Module[\"_sqlite3_bind_parameter_index\"]=(a0,a1)=>(_sqlite3_bind_parameter_index=Module[\"_sqlite3_bind_parameter_index\"]=wasmExports[\"Hc\"])(a0,a1);var _sqlite3_db_handle=Module[\"_sqlite3_db_handle\"]=a0=>(_sqlite3_db_handle=Module[\"_sqlite3_db_handle\"]=wasmExports[\"Ic\"])(a0);var _sqlite3_stmt_readonly=Module[\"_sqlite3_stmt_readonly\"]=a0=>(_sqlite3_stmt_readonly=Module[\"_sqlite3_stmt_readonly\"]=wasmExports[\"Jc\"])(a0);var _sqlite3_stmt_isexplain=Module[\"_sqlite3_stmt_isexplain\"]=a0=>(_sqlite3_stmt_isexplain=Module[\"_sqlite3_stmt_isexplain\"]=wasmExports[\"Kc\"])(a0);var _sqlite3_stmt_explain=Module[\"_sqlite3_stmt_explain\"]=(a0,a1)=>(_sqlite3_stmt_explain=Module[\"_sqlite3_stmt_explain\"]=wasmExports[\"Lc\"])(a0,a1);var _sqlite3_stmt_busy=Module[\"_sqlite3_stmt_busy\"]=a0=>(_sqlite3_stmt_busy=Module[\"_sqlite3_stmt_busy\"]=wasmExports[\"Mc\"])(a0);var _sqlite3_next_stmt=Module[\"_sqlite3_next_stmt\"]=(a0,a1)=>(_sqlite3_next_stmt=Module[\"_sqlite3_next_stmt\"]=wasmExports[\"Nc\"])(a0,a1);var _sqlite3_stmt_status=Module[\"_sqlite3_stmt_status\"]=(a0,a1,a2)=>(_sqlite3_stmt_status=Module[\"_sqlite3_stmt_status\"]=wasmExports[\"Oc\"])(a0,a1,a2);var _sqlite3_sql=Module[\"_sqlite3_sql\"]=a0=>(_sqlite3_sql=Module[\"_sqlite3_sql\"]=wasmExports[\"Pc\"])(a0);var _sqlite3_expanded_sql=Module[\"_sqlite3_expanded_sql\"]=a0=>(_sqlite3_expanded_sql=Module[\"_sqlite3_expanded_sql\"]=wasmExports[\"Qc\"])(a0);var _sqlite3_value_numeric_type=Module[\"_sqlite3_value_numeric_type\"]=a0=>(_sqlite3_value_numeric_type=Module[\"_sqlite3_value_numeric_type\"]=wasmExports[\"Rc\"])(a0);var _sqlite3_blob_open=Module[\"_sqlite3_blob_open\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_blob_open=Module[\"_sqlite3_blob_open\"]=wasmExports[\"Sc\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_blob_close=Module[\"_sqlite3_blob_close\"]=a0=>(_sqlite3_blob_close=Module[\"_sqlite3_blob_close\"]=wasmExports[\"Tc\"])(a0);var _sqlite3_blob_read=Module[\"_sqlite3_blob_read\"]=(a0,a1,a2,a3)=>(_sqlite3_blob_read=Module[\"_sqlite3_blob_read\"]=wasmExports[\"Uc\"])(a0,a1,a2,a3);var _sqlite3_blob_write=Module[\"_sqlite3_blob_write\"]=(a0,a1,a2,a3)=>(_sqlite3_blob_write=Module[\"_sqlite3_blob_write\"]=wasmExports[\"Vc\"])(a0,a1,a2,a3);var _sqlite3_blob_bytes=Module[\"_sqlite3_blob_bytes\"]=a0=>(_sqlite3_blob_bytes=Module[\"_sqlite3_blob_bytes\"]=wasmExports[\"Wc\"])(a0);var _sqlite3_blob_reopen=Module[\"_sqlite3_blob_reopen\"]=(a0,a1,a2)=>(_sqlite3_blob_reopen=Module[\"_sqlite3_blob_reopen\"]=wasmExports[\"Xc\"])(a0,a1,a2);var _sqlite3_set_authorizer=Module[\"_sqlite3_set_authorizer\"]=(a0,a1,a2)=>(_sqlite3_set_authorizer=Module[\"_sqlite3_set_authorizer\"]=wasmExports[\"Yc\"])(a0,a1,a2);var _sqlite3_strglob=Module[\"_sqlite3_strglob\"]=(a0,a1)=>(_sqlite3_strglob=Module[\"_sqlite3_strglob\"]=wasmExports[\"Zc\"])(a0,a1);var _sqlite3_strlike=Module[\"_sqlite3_strlike\"]=(a0,a1,a2)=>(_sqlite3_strlike=Module[\"_sqlite3_strlike\"]=wasmExports[\"_c\"])(a0,a1,a2);var _sqlite3_errmsg=Module[\"_sqlite3_errmsg\"]=a0=>(_sqlite3_errmsg=Module[\"_sqlite3_errmsg\"]=wasmExports[\"$c\"])(a0);var _sqlite3_auto_extension=Module[\"_sqlite3_auto_extension\"]=a0=>(_sqlite3_auto_extension=Module[\"_sqlite3_auto_extension\"]=wasmExports[\"ad\"])(a0);var _sqlite3_cancel_auto_extension=Module[\"_sqlite3_cancel_auto_extension\"]=a0=>(_sqlite3_cancel_auto_extension=Module[\"_sqlite3_cancel_auto_extension\"]=wasmExports[\"bd\"])(a0);var _sqlite3_reset_auto_extension=Module[\"_sqlite3_reset_auto_extension\"]=()=>(_sqlite3_reset_auto_extension=Module[\"_sqlite3_reset_auto_extension\"]=wasmExports[\"cd\"])();var _sqlite3_prepare=Module[\"_sqlite3_prepare\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare=Module[\"_sqlite3_prepare\"]=wasmExports[\"dd\"])(a0,a1,a2,a3,a4);var _sqlite3_prepare_v3=Module[\"_sqlite3_prepare_v3\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_prepare_v3=Module[\"_sqlite3_prepare_v3\"]=wasmExports[\"ed\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_prepare16=Module[\"_sqlite3_prepare16\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare16=Module[\"_sqlite3_prepare16\"]=wasmExports[\"fd\"])(a0,a1,a2,a3,a4);var _sqlite3_prepare16_v2=Module[\"_sqlite3_prepare16_v2\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare16_v2=Module[\"_sqlite3_prepare16_v2\"]=wasmExports[\"gd\"])(a0,a1,a2,a3,a4);var _sqlite3_prepare16_v3=Module[\"_sqlite3_prepare16_v3\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_prepare16_v3=Module[\"_sqlite3_prepare16_v3\"]=wasmExports[\"hd\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_get_table=Module[\"_sqlite3_get_table\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_get_table=Module[\"_sqlite3_get_table\"]=wasmExports[\"id\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_free_table=Module[\"_sqlite3_free_table\"]=a0=>(_sqlite3_free_table=Module[\"_sqlite3_free_table\"]=wasmExports[\"jd\"])(a0);var _sqlite3_create_module=Module[\"_sqlite3_create_module\"]=(a0,a1,a2,a3)=>(_sqlite3_create_module=Module[\"_sqlite3_create_module\"]=wasmExports[\"kd\"])(a0,a1,a2,a3);var _sqlite3_create_module_v2=Module[\"_sqlite3_create_module_v2\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_module_v2=Module[\"_sqlite3_create_module_v2\"]=wasmExports[\"ld\"])(a0,a1,a2,a3,a4);var _sqlite3_drop_modules=Module[\"_sqlite3_drop_modules\"]=(a0,a1)=>(_sqlite3_drop_modules=Module[\"_sqlite3_drop_modules\"]=wasmExports[\"md\"])(a0,a1);var _sqlite3_declare_vtab=Module[\"_sqlite3_declare_vtab\"]=(a0,a1)=>(_sqlite3_declare_vtab=Module[\"_sqlite3_declare_vtab\"]=wasmExports[\"nd\"])(a0,a1);var _sqlite3_vtab_on_conflict=Module[\"_sqlite3_vtab_on_conflict\"]=a0=>(_sqlite3_vtab_on_conflict=Module[\"_sqlite3_vtab_on_conflict\"]=wasmExports[\"od\"])(a0);var _sqlite3_vtab_config=Module[\"_sqlite3_vtab_config\"]=(a0,a1,a2)=>(_sqlite3_vtab_config=Module[\"_sqlite3_vtab_config\"]=wasmExports[\"pd\"])(a0,a1,a2);var _sqlite3_vtab_collation=Module[\"_sqlite3_vtab_collation\"]=(a0,a1)=>(_sqlite3_vtab_collation=Module[\"_sqlite3_vtab_collation\"]=wasmExports[\"qd\"])(a0,a1);var _sqlite3_vtab_in=Module[\"_sqlite3_vtab_in\"]=(a0,a1,a2)=>(_sqlite3_vtab_in=Module[\"_sqlite3_vtab_in\"]=wasmExports[\"rd\"])(a0,a1,a2);var _sqlite3_vtab_rhs_value=Module[\"_sqlite3_vtab_rhs_value\"]=(a0,a1,a2)=>(_sqlite3_vtab_rhs_value=Module[\"_sqlite3_vtab_rhs_value\"]=wasmExports[\"sd\"])(a0,a1,a2);var _sqlite3_vtab_distinct=Module[\"_sqlite3_vtab_distinct\"]=a0=>(_sqlite3_vtab_distinct=Module[\"_sqlite3_vtab_distinct\"]=wasmExports[\"td\"])(a0);var _sqlite3_keyword_name=Module[\"_sqlite3_keyword_name\"]=(a0,a1,a2)=>(_sqlite3_keyword_name=Module[\"_sqlite3_keyword_name\"]=wasmExports[\"ud\"])(a0,a1,a2);var _sqlite3_keyword_count=Module[\"_sqlite3_keyword_count\"]=()=>(_sqlite3_keyword_count=Module[\"_sqlite3_keyword_count\"]=wasmExports[\"vd\"])();var _sqlite3_keyword_check=Module[\"_sqlite3_keyword_check\"]=(a0,a1)=>(_sqlite3_keyword_check=Module[\"_sqlite3_keyword_check\"]=wasmExports[\"wd\"])(a0,a1);var _sqlite3_complete=Module[\"_sqlite3_complete\"]=a0=>(_sqlite3_complete=Module[\"_sqlite3_complete\"]=wasmExports[\"xd\"])(a0);var _sqlite3_complete16=Module[\"_sqlite3_complete16\"]=a0=>(_sqlite3_complete16=Module[\"_sqlite3_complete16\"]=wasmExports[\"yd\"])(a0);var _sqlite3_libversion=Module[\"_sqlite3_libversion\"]=()=>(_sqlite3_libversion=Module[\"_sqlite3_libversion\"]=wasmExports[\"zd\"])();var _sqlite3_libversion_number=Module[\"_sqlite3_libversion_number\"]=()=>(_sqlite3_libversion_number=Module[\"_sqlite3_libversion_number\"]=wasmExports[\"Ad\"])();var _sqlite3_threadsafe=Module[\"_sqlite3_threadsafe\"]=()=>(_sqlite3_threadsafe=Module[\"_sqlite3_threadsafe\"]=wasmExports[\"Bd\"])();var _sqlite3_initialize=Module[\"_sqlite3_initialize\"]=()=>(_sqlite3_initialize=Module[\"_sqlite3_initialize\"]=wasmExports[\"Cd\"])();var _sqlite3_shutdown=Module[\"_sqlite3_shutdown\"]=()=>(_sqlite3_shutdown=Module[\"_sqlite3_shutdown\"]=wasmExports[\"Dd\"])();var _sqlite3_config=Module[\"_sqlite3_config\"]=(a0,a1)=>(_sqlite3_config=Module[\"_sqlite3_config\"]=wasmExports[\"Ed\"])(a0,a1);var _sqlite3_db_mutex=Module[\"_sqlite3_db_mutex\"]=a0=>(_sqlite3_db_mutex=Module[\"_sqlite3_db_mutex\"]=wasmExports[\"Fd\"])(a0);var _sqlite3_db_release_memory=Module[\"_sqlite3_db_release_memory\"]=a0=>(_sqlite3_db_release_memory=Module[\"_sqlite3_db_release_memory\"]=wasmExports[\"Gd\"])(a0);var _sqlite3_db_cacheflush=Module[\"_sqlite3_db_cacheflush\"]=a0=>(_sqlite3_db_cacheflush=Module[\"_sqlite3_db_cacheflush\"]=wasmExports[\"Hd\"])(a0);var _sqlite3_db_config=Module[\"_sqlite3_db_config\"]=(a0,a1,a2)=>(_sqlite3_db_config=Module[\"_sqlite3_db_config\"]=wasmExports[\"Id\"])(a0,a1,a2);var _sqlite3_last_insert_rowid=Module[\"_sqlite3_last_insert_rowid\"]=a0=>(_sqlite3_last_insert_rowid=Module[\"_sqlite3_last_insert_rowid\"]=wasmExports[\"Jd\"])(a0);var _sqlite3_set_last_insert_rowid=Module[\"_sqlite3_set_last_insert_rowid\"]=(a0,a1,a2)=>(_sqlite3_set_last_insert_rowid=Module[\"_sqlite3_set_last_insert_rowid\"]=wasmExports[\"Kd\"])(a0,a1,a2);var _sqlite3_changes64=Module[\"_sqlite3_changes64\"]=a0=>(_sqlite3_changes64=Module[\"_sqlite3_changes64\"]=wasmExports[\"Ld\"])(a0);var _sqlite3_changes=Module[\"_sqlite3_changes\"]=a0=>(_sqlite3_changes=Module[\"_sqlite3_changes\"]=wasmExports[\"Md\"])(a0);var _sqlite3_total_changes64=Module[\"_sqlite3_total_changes64\"]=a0=>(_sqlite3_total_changes64=Module[\"_sqlite3_total_changes64\"]=wasmExports[\"Nd\"])(a0);var _sqlite3_total_changes=Module[\"_sqlite3_total_changes\"]=a0=>(_sqlite3_total_changes=Module[\"_sqlite3_total_changes\"]=wasmExports[\"Od\"])(a0);var _sqlite3_txn_state=Module[\"_sqlite3_txn_state\"]=(a0,a1)=>(_sqlite3_txn_state=Module[\"_sqlite3_txn_state\"]=wasmExports[\"Pd\"])(a0,a1);var _sqlite3_close=Module[\"_sqlite3_close\"]=a0=>(_sqlite3_close=Module[\"_sqlite3_close\"]=wasmExports[\"Qd\"])(a0);var _sqlite3_close_v2=Module[\"_sqlite3_close_v2\"]=a0=>(_sqlite3_close_v2=Module[\"_sqlite3_close_v2\"]=wasmExports[\"Rd\"])(a0);var _sqlite3_busy_handler=Module[\"_sqlite3_busy_handler\"]=(a0,a1,a2)=>(_sqlite3_busy_handler=Module[\"_sqlite3_busy_handler\"]=wasmExports[\"Sd\"])(a0,a1,a2);var _sqlite3_progress_handler=Module[\"_sqlite3_progress_handler\"]=(a0,a1,a2,a3)=>(_sqlite3_progress_handler=Module[\"_sqlite3_progress_handler\"]=wasmExports[\"Td\"])(a0,a1,a2,a3);var _sqlite3_busy_timeout=Module[\"_sqlite3_busy_timeout\"]=(a0,a1)=>(_sqlite3_busy_timeout=Module[\"_sqlite3_busy_timeout\"]=wasmExports[\"Ud\"])(a0,a1);var _sqlite3_interrupt=Module[\"_sqlite3_interrupt\"]=a0=>(_sqlite3_interrupt=Module[\"_sqlite3_interrupt\"]=wasmExports[\"Vd\"])(a0);var _sqlite3_is_interrupted=Module[\"_sqlite3_is_interrupted\"]=a0=>(_sqlite3_is_interrupted=Module[\"_sqlite3_is_interrupted\"]=wasmExports[\"Wd\"])(a0);var _sqlite3_create_function=Module[\"_sqlite3_create_function\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_create_function=Module[\"_sqlite3_create_function\"]=wasmExports[\"Xd\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_create_function_v2=Module[\"_sqlite3_create_function_v2\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(_sqlite3_create_function_v2=Module[\"_sqlite3_create_function_v2\"]=wasmExports[\"Yd\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var _sqlite3_create_window_function=Module[\"_sqlite3_create_window_function\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(_sqlite3_create_window_function=Module[\"_sqlite3_create_window_function\"]=wasmExports[\"Zd\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var _sqlite3_create_function16=Module[\"_sqlite3_create_function16\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_create_function16=Module[\"_sqlite3_create_function16\"]=wasmExports[\"_d\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_overload_function=Module[\"_sqlite3_overload_function\"]=(a0,a1,a2)=>(_sqlite3_overload_function=Module[\"_sqlite3_overload_function\"]=wasmExports[\"$d\"])(a0,a1,a2);var _sqlite3_trace_v2=Module[\"_sqlite3_trace_v2\"]=(a0,a1,a2,a3)=>(_sqlite3_trace_v2=Module[\"_sqlite3_trace_v2\"]=wasmExports[\"ae\"])(a0,a1,a2,a3);var _sqlite3_commit_hook=Module[\"_sqlite3_commit_hook\"]=(a0,a1,a2)=>(_sqlite3_commit_hook=Module[\"_sqlite3_commit_hook\"]=wasmExports[\"be\"])(a0,a1,a2);var _sqlite3_update_hook=Module[\"_sqlite3_update_hook\"]=(a0,a1,a2)=>(_sqlite3_update_hook=Module[\"_sqlite3_update_hook\"]=wasmExports[\"ce\"])(a0,a1,a2);var _sqlite3_rollback_hook=Module[\"_sqlite3_rollback_hook\"]=(a0,a1,a2)=>(_sqlite3_rollback_hook=Module[\"_sqlite3_rollback_hook\"]=wasmExports[\"de\"])(a0,a1,a2);var _sqlite3_autovacuum_pages=Module[\"_sqlite3_autovacuum_pages\"]=(a0,a1,a2,a3)=>(_sqlite3_autovacuum_pages=Module[\"_sqlite3_autovacuum_pages\"]=wasmExports[\"ee\"])(a0,a1,a2,a3);var _sqlite3_wal_autocheckpoint=Module[\"_sqlite3_wal_autocheckpoint\"]=(a0,a1)=>(_sqlite3_wal_autocheckpoint=Module[\"_sqlite3_wal_autocheckpoint\"]=wasmExports[\"fe\"])(a0,a1);var _sqlite3_wal_hook=Module[\"_sqlite3_wal_hook\"]=(a0,a1,a2)=>(_sqlite3_wal_hook=Module[\"_sqlite3_wal_hook\"]=wasmExports[\"ge\"])(a0,a1,a2);var _sqlite3_wal_checkpoint_v2=Module[\"_sqlite3_wal_checkpoint_v2\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_wal_checkpoint_v2=Module[\"_sqlite3_wal_checkpoint_v2\"]=wasmExports[\"he\"])(a0,a1,a2,a3,a4);var _sqlite3_wal_checkpoint=Module[\"_sqlite3_wal_checkpoint\"]=(a0,a1)=>(_sqlite3_wal_checkpoint=Module[\"_sqlite3_wal_checkpoint\"]=wasmExports[\"ie\"])(a0,a1);var _sqlite3_error_offset=Module[\"_sqlite3_error_offset\"]=a0=>(_sqlite3_error_offset=Module[\"_sqlite3_error_offset\"]=wasmExports[\"je\"])(a0);var _sqlite3_errmsg16=Module[\"_sqlite3_errmsg16\"]=a0=>(_sqlite3_errmsg16=Module[\"_sqlite3_errmsg16\"]=wasmExports[\"ke\"])(a0);var _sqlite3_errcode=Module[\"_sqlite3_errcode\"]=a0=>(_sqlite3_errcode=Module[\"_sqlite3_errcode\"]=wasmExports[\"le\"])(a0);var _sqlite3_extended_errcode=Module[\"_sqlite3_extended_errcode\"]=a0=>(_sqlite3_extended_errcode=Module[\"_sqlite3_extended_errcode\"]=wasmExports[\"me\"])(a0);var _sqlite3_system_errno=Module[\"_sqlite3_system_errno\"]=a0=>(_sqlite3_system_errno=Module[\"_sqlite3_system_errno\"]=wasmExports[\"ne\"])(a0);var _sqlite3_errstr=Module[\"_sqlite3_errstr\"]=a0=>(_sqlite3_errstr=Module[\"_sqlite3_errstr\"]=wasmExports[\"oe\"])(a0);var _sqlite3_limit=Module[\"_sqlite3_limit\"]=(a0,a1,a2)=>(_sqlite3_limit=Module[\"_sqlite3_limit\"]=wasmExports[\"pe\"])(a0,a1,a2);var _sqlite3_open=Module[\"_sqlite3_open\"]=(a0,a1)=>(_sqlite3_open=Module[\"_sqlite3_open\"]=wasmExports[\"qe\"])(a0,a1);var _sqlite3_open_v2=Module[\"_sqlite3_open_v2\"]=(a0,a1,a2,a3)=>(_sqlite3_open_v2=Module[\"_sqlite3_open_v2\"]=wasmExports[\"re\"])(a0,a1,a2,a3);var _sqlite3_open16=Module[\"_sqlite3_open16\"]=(a0,a1)=>(_sqlite3_open16=Module[\"_sqlite3_open16\"]=wasmExports[\"se\"])(a0,a1);var _sqlite3_create_collation=Module[\"_sqlite3_create_collation\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_collation=Module[\"_sqlite3_create_collation\"]=wasmExports[\"te\"])(a0,a1,a2,a3,a4);var _sqlite3_create_collation_v2=Module[\"_sqlite3_create_collation_v2\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_create_collation_v2=Module[\"_sqlite3_create_collation_v2\"]=wasmExports[\"ue\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_create_collation16=Module[\"_sqlite3_create_collation16\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_collation16=Module[\"_sqlite3_create_collation16\"]=wasmExports[\"ve\"])(a0,a1,a2,a3,a4);var _sqlite3_collation_needed=Module[\"_sqlite3_collation_needed\"]=(a0,a1,a2)=>(_sqlite3_collation_needed=Module[\"_sqlite3_collation_needed\"]=wasmExports[\"we\"])(a0,a1,a2);var _sqlite3_collation_needed16=Module[\"_sqlite3_collation_needed16\"]=(a0,a1,a2)=>(_sqlite3_collation_needed16=Module[\"_sqlite3_collation_needed16\"]=wasmExports[\"xe\"])(a0,a1,a2);var _sqlite3_get_clientdata=Module[\"_sqlite3_get_clientdata\"]=(a0,a1)=>(_sqlite3_get_clientdata=Module[\"_sqlite3_get_clientdata\"]=wasmExports[\"ye\"])(a0,a1);var _sqlite3_set_clientdata=Module[\"_sqlite3_set_clientdata\"]=(a0,a1,a2,a3)=>(_sqlite3_set_clientdata=Module[\"_sqlite3_set_clientdata\"]=wasmExports[\"ze\"])(a0,a1,a2,a3);var _sqlite3_get_autocommit=Module[\"_sqlite3_get_autocommit\"]=a0=>(_sqlite3_get_autocommit=Module[\"_sqlite3_get_autocommit\"]=wasmExports[\"Ae\"])(a0);var _sqlite3_table_column_metadata=Module[\"_sqlite3_table_column_metadata\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(_sqlite3_table_column_metadata=Module[\"_sqlite3_table_column_metadata\"]=wasmExports[\"Be\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var _sqlite3_sleep=Module[\"_sqlite3_sleep\"]=a0=>(_sqlite3_sleep=Module[\"_sqlite3_sleep\"]=wasmExports[\"Ce\"])(a0);var _sqlite3_extended_result_codes=Module[\"_sqlite3_extended_result_codes\"]=(a0,a1)=>(_sqlite3_extended_result_codes=Module[\"_sqlite3_extended_result_codes\"]=wasmExports[\"De\"])(a0,a1);var _sqlite3_file_control=Module[\"_sqlite3_file_control\"]=(a0,a1,a2,a3)=>(_sqlite3_file_control=Module[\"_sqlite3_file_control\"]=wasmExports[\"Ee\"])(a0,a1,a2,a3);var _sqlite3_test_control=Module[\"_sqlite3_test_control\"]=(a0,a1)=>(_sqlite3_test_control=Module[\"_sqlite3_test_control\"]=wasmExports[\"Fe\"])(a0,a1);var _sqlite3_create_filename=Module[\"_sqlite3_create_filename\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_filename=Module[\"_sqlite3_create_filename\"]=wasmExports[\"Ge\"])(a0,a1,a2,a3,a4);var _sqlite3_free_filename=Module[\"_sqlite3_free_filename\"]=a0=>(_sqlite3_free_filename=Module[\"_sqlite3_free_filename\"]=wasmExports[\"He\"])(a0);var _sqlite3_uri_parameter=Module[\"_sqlite3_uri_parameter\"]=(a0,a1)=>(_sqlite3_uri_parameter=Module[\"_sqlite3_uri_parameter\"]=wasmExports[\"Ie\"])(a0,a1);var _sqlite3_uri_key=Module[\"_sqlite3_uri_key\"]=(a0,a1)=>(_sqlite3_uri_key=Module[\"_sqlite3_uri_key\"]=wasmExports[\"Je\"])(a0,a1);var _sqlite3_uri_boolean=Module[\"_sqlite3_uri_boolean\"]=(a0,a1,a2)=>(_sqlite3_uri_boolean=Module[\"_sqlite3_uri_boolean\"]=wasmExports[\"Ke\"])(a0,a1,a2);var _sqlite3_uri_int64=Module[\"_sqlite3_uri_int64\"]=(a0,a1,a2,a3)=>(_sqlite3_uri_int64=Module[\"_sqlite3_uri_int64\"]=wasmExports[\"Le\"])(a0,a1,a2,a3);var _sqlite3_filename_database=Module[\"_sqlite3_filename_database\"]=a0=>(_sqlite3_filename_database=Module[\"_sqlite3_filename_database\"]=wasmExports[\"Me\"])(a0);var _sqlite3_filename_journal=Module[\"_sqlite3_filename_journal\"]=a0=>(_sqlite3_filename_journal=Module[\"_sqlite3_filename_journal\"]=wasmExports[\"Ne\"])(a0);var _sqlite3_filename_wal=Module[\"_sqlite3_filename_wal\"]=a0=>(_sqlite3_filename_wal=Module[\"_sqlite3_filename_wal\"]=wasmExports[\"Oe\"])(a0);var _sqlite3_db_name=Module[\"_sqlite3_db_name\"]=(a0,a1)=>(_sqlite3_db_name=Module[\"_sqlite3_db_name\"]=wasmExports[\"Pe\"])(a0,a1);var _sqlite3_db_filename=Module[\"_sqlite3_db_filename\"]=(a0,a1)=>(_sqlite3_db_filename=Module[\"_sqlite3_db_filename\"]=wasmExports[\"Qe\"])(a0,a1);var _sqlite3_db_readonly=Module[\"_sqlite3_db_readonly\"]=(a0,a1)=>(_sqlite3_db_readonly=Module[\"_sqlite3_db_readonly\"]=wasmExports[\"Re\"])(a0,a1);var _sqlite3_compileoption_used=Module[\"_sqlite3_compileoption_used\"]=a0=>(_sqlite3_compileoption_used=Module[\"_sqlite3_compileoption_used\"]=wasmExports[\"Se\"])(a0);var _sqlite3_compileoption_get=Module[\"_sqlite3_compileoption_get\"]=a0=>(_sqlite3_compileoption_get=Module[\"_sqlite3_compileoption_get\"]=wasmExports[\"Te\"])(a0);var _sqlite3_sourceid=Module[\"_sqlite3_sourceid\"]=()=>(_sqlite3_sourceid=Module[\"_sqlite3_sourceid\"]=wasmExports[\"Ue\"])();var _malloc=Module[\"_malloc\"]=a0=>(_malloc=Module[\"_malloc\"]=wasmExports[\"Ve\"])(a0);var _free=Module[\"_free\"]=a0=>(_free=Module[\"_free\"]=wasmExports[\"We\"])(a0);var _RegisterExtensionFunctions=Module[\"_RegisterExtensionFunctions\"]=a0=>(_RegisterExtensionFunctions=Module[\"_RegisterExtensionFunctions\"]=wasmExports[\"Xe\"])(a0);var _getSqliteFree=Module[\"_getSqliteFree\"]=()=>(_getSqliteFree=Module[\"_getSqliteFree\"]=wasmExports[\"Ye\"])();var _main=Module[\"_main\"]=(a0,a1)=>(_main=Module[\"_main\"]=wasmExports[\"Ze\"])(a0,a1);var _libauthorizer_set_authorizer=Module[\"_libauthorizer_set_authorizer\"]=(a0,a1,a2)=>(_libauthorizer_set_authorizer=Module[\"_libauthorizer_set_authorizer\"]=wasmExports[\"_e\"])(a0,a1,a2);var _libfunction_create_function=Module[\"_libfunction_create_function\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_libfunction_create_function=Module[\"_libfunction_create_function\"]=wasmExports[\"$e\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _libhook_commit_hook=Module[\"_libhook_commit_hook\"]=(a0,a1,a2)=>(_libhook_commit_hook=Module[\"_libhook_commit_hook\"]=wasmExports[\"af\"])(a0,a1,a2);var _libhook_update_hook=Module[\"_libhook_update_hook\"]=(a0,a1,a2)=>(_libhook_update_hook=Module[\"_libhook_update_hook\"]=wasmExports[\"bf\"])(a0,a1,a2);var _libprogress_progress_handler=Module[\"_libprogress_progress_handler\"]=(a0,a1,a2,a3)=>(_libprogress_progress_handler=Module[\"_libprogress_progress_handler\"]=wasmExports[\"cf\"])(a0,a1,a2,a3);var _libvfs_vfs_register=Module[\"_libvfs_vfs_register\"]=(a0,a1,a2,a3,a4,a5)=>(_libvfs_vfs_register=Module[\"_libvfs_vfs_register\"]=wasmExports[\"df\"])(a0,a1,a2,a3,a4,a5);var _emscripten_builtin_memalign=(a0,a1)=>(_emscripten_builtin_memalign=wasmExports[\"ff\"])(a0,a1);var __emscripten_tempret_get=()=>(__emscripten_tempret_get=wasmExports[\"gf\"])();var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports[\"hf\"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports[\"jf\"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports[\"kf\"])();var _asyncify_start_unwind=a0=>(_asyncify_start_unwind=wasmExports[\"lf\"])(a0);var _asyncify_stop_unwind=()=>(_asyncify_stop_unwind=wasmExports[\"mf\"])();var _asyncify_start_rewind=a0=>(_asyncify_start_rewind=wasmExports[\"nf\"])(a0);var _asyncify_stop_rewind=()=>(_asyncify_stop_rewind=wasmExports[\"of\"])();var _sqlite3_version=Module[\"_sqlite3_version\"]=3232;Module[\"getTempRet0\"]=getTempRet0;Module[\"ccall\"]=ccall;Module[\"cwrap\"]=cwrap;Module[\"addFunction\"]=addFunction;Module[\"setValue\"]=setValue;Module[\"getValue\"]=getValue;Module[\"UTF8ToString\"]=UTF8ToString;Module[\"stringToUTF8\"]=stringToUTF8;Module[\"lengthBytesUTF8\"]=lengthBytesUTF8;Module[\"intArrayFromString\"]=intArrayFromString;Module[\"intArrayToString\"]=intArrayToString;Module[\"AsciiToString\"]=AsciiToString;Module[\"UTF16ToString\"]=UTF16ToString;Module[\"stringToUTF16\"]=stringToUTF16;Module[\"UTF32ToString\"]=UTF32ToString;Module[\"stringToUTF32\"]=stringToUTF32;Module[\"writeArrayToMemory\"]=writeArrayToMemory;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;run();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module[\"set_authorizer\"]=function(db,xAuthorizer,pApp){if(pAsyncFlags){Module[\"deleteCallback\"](pAsyncFlags);Module[\"_sqlite3_free\"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module[\"_sqlite3_malloc\"](4);setValue(pAsyncFlags,xAuthorizer instanceof AsyncFunction?1:0,\"i32\");const result=ccall(\"libauthorizer_set_authorizer\",\"number\",[\"number\",\"number\",\"number\"],[db,xAuthorizer?1:0,pAsyncFlags]);if(!result&&xAuthorizer){Module[\"setCallback\"](pAsyncFlags,(_,iAction,p3,p4,p5,p6)=>xAuthorizer(pApp,iAction,p3,p4,p5,p6))}return result}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;const FUNC_METHODS=[\"xFunc\",\"xStep\",\"xFinal\"];const mapFunctionNameToKey=new Map;Module[\"create_function\"]=function(db,zFunctionName,nArg,eTextRep,pApp,xFunc,xStep,xFinal){const pAsyncFlags=Module[\"_sqlite3_malloc\"](4);const target={xFunc:xFunc,xStep:xStep,xFinal:xFinal};setValue(pAsyncFlags,FUNC_METHODS.reduce((mask,method,i)=>{if(target[method]instanceof AsyncFunction){return mask|1<<i}return mask},0),\"i32\");const result=ccall(\"libfunction_create_function\",\"number\",[\"number\",\"string\",\"number\",\"number\",\"number\",\"number\",\"number\",\"number\"],[db,zFunctionName,nArg,eTextRep,pAsyncFlags,xFunc?1:0,xStep?1:0,xFinal?1:0]);if(!result){if(mapFunctionNameToKey.has(zFunctionName)){const oldKey=mapFunctionNameToKey.get(zFunctionName);Module[\"deleteCallback\"](oldKey)}mapFunctionNameToKey.set(zFunctionName,pAsyncFlags);Module[\"setCallback\"](pAsyncFlags,{xFunc:xFunc,xStep:xStep,xFinal:xFinal})}return result}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module[\"update_hook\"]=function(db,xUpdateHook){if(pAsyncFlags){Module[\"deleteCallback\"](pAsyncFlags);Module[\"_sqlite3_free\"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module[\"_sqlite3_malloc\"](4);setValue(pAsyncFlags,xUpdateHook instanceof AsyncFunction?1:0,\"i32\");ccall(\"libhook_update_hook\",\"void\",[\"number\",\"number\",\"number\"],[db,xUpdateHook?1:0,pAsyncFlags]);if(xUpdateHook){Module[\"setCallback\"](pAsyncFlags,(_,iUpdateType,dbName,tblName,lo32,hi32)=>xUpdateHook(iUpdateType,dbName,tblName,lo32,hi32))}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module[\"commit_hook\"]=function(db,xCommitHook){if(pAsyncFlags){Module[\"deleteCallback\"](pAsyncFlags);Module[\"_sqlite3_free\"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module[\"_sqlite3_malloc\"](4);setValue(pAsyncFlags,xCommitHook instanceof AsyncFunction?1:0,\"i32\");ccall(\"libhook_commit_hook\",\"void\",[\"number\",\"number\",\"number\"],[db,xCommitHook?1:0,pAsyncFlags]);if(xCommitHook){Module[\"setCallback\"](pAsyncFlags,_=>xCommitHook())}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module[\"progress_handler\"]=function(db,nOps,xProgress,pApp){if(pAsyncFlags){Module[\"deleteCallback\"](pAsyncFlags);Module[\"_sqlite3_free\"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module[\"_sqlite3_malloc\"](4);setValue(pAsyncFlags,xProgress instanceof AsyncFunction?1:0,\"i32\");ccall(\"libprogress_progress_handler\",\"number\",[\"number\",\"number\",\"number\",\"number\"],[db,nOps,xProgress?1:0,pAsyncFlags]);if(xProgress){Module[\"setCallback\"](pAsyncFlags,_=>xProgress(pApp))}}})();(function(){const VFS_METHODS=[\"xOpen\",\"xDelete\",\"xAccess\",\"xFullPathname\",\"xRandomness\",\"xSleep\",\"xCurrentTime\",\"xGetLastError\",\"xCurrentTimeInt64\",\"xClose\",\"xRead\",\"xWrite\",\"xTruncate\",\"xSync\",\"xFileSize\",\"xLock\",\"xUnlock\",\"xCheckReservedLock\",\"xFileControl\",\"xSectorSize\",\"xDeviceCharacteristics\",\"xShmMap\",\"xShmLock\",\"xShmBarrier\",\"xShmUnmap\"];const mapVFSNameToKey=new Map;Module[\"vfs_register\"]=function(vfs,makeDefault){let methodMask=0;let asyncMask=0;VFS_METHODS.forEach((method,i)=>{if(vfs[method]){methodMask|=1<<i;if(vfs[\"hasAsyncMethod\"](method)){asyncMask|=1<<i}}});const vfsReturn=Module[\"_sqlite3_malloc\"](4);try{const result=ccall(\"libvfs_vfs_register\",\"number\",[\"string\",\"number\",\"number\",\"number\",\"number\",\"number\"],[vfs.name,vfs.mxPathname,methodMask,asyncMask,makeDefault?1:0,vfsReturn]);if(!result){if(mapVFSNameToKey.has(vfs.name)){const oldKey=mapVFSNameToKey.get(vfs.name);Module[\"deleteCallback\"](oldKey)}const key=getValue(vfsReturn,\"*\");mapVFSNameToKey.set(vfs.name,key);Module[\"setCallback\"](key,vfs)}return result}finally{Module[\"_sqlite3_free\"](vfsReturn)}}})();moduleRtn=readyPromise;\n\n\n return moduleRtn;\n}\n);\n})();\nexport default Module;\n","\nvar Module = (() => {\n var _scriptName = import.meta.url;\n \n return (\nfunction(moduleArg = {}) {\n var moduleRtn;\n\nvar Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window==\"object\";var ENVIRONMENT_IS_WORKER=typeof importScripts==\"function\";var ENVIRONMENT_IS_NODE=typeof process==\"object\"&&typeof process.versions==\"object\"&&typeof process.versions.node==\"string\";var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith(\"blob:\")){scriptDirectory=\"\"}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{fetch(url,{credentials:\"same-origin\"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+\" : \"+response.url))}).then(onload,onerror)}}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module[\"HEAP8\"]=HEAP8=new Int8Array(b);Module[\"HEAP16\"]=HEAP16=new Int16Array(b);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(b);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(b);Module[\"HEAP32\"]=HEAP32=new Int32Array(b);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(b);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(b);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module[\"noFSInit\"]&&!FS.init.initialized)FS.init();FS.ignorePermissions=false;TTY.init();callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;Module[\"monitorRunDependencies\"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module[\"monitorRunDependencies\"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module[\"onAbort\"]?.(what);what=\"Aborted(\"+what+\")\";err(what);ABORT=true;EXITSTATUS=1;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix=\"data:application/octet-stream;base64,\";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){if(Module[\"locateFile\"]){var f=\"wa-sqlite.wasm\";if(!isDataURI(f)){return locateFile(f)}return f}return new URL(\"wa-sqlite.wasm\",import.meta.url).href}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}function getBinaryPromise(binaryFile){if(!wasmBinary){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),error=>{try{resolve(getBinarySync(binaryFile))}catch(e){reject(e)}})})}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming==\"function\"&&!isDataURI(binaryFile)&&typeof fetch==\"function\"){return fetch(binaryFile,{credentials:\"same-origin\"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports[\"la\"];updateMemoryViews();wasmTable=wasmExports[\"ef\"];addOnInit(wasmExports[\"ma\"]);removeRunDependency(\"wasm-instantiate\");return wasmExports}addRunDependency(\"wasm-instantiate\");function receiveInstantiationResult(result){receiveInstance(result[\"instance\"])}if(Module[\"instantiateWasm\"]){try{return Module[\"instantiateWasm\"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult).catch(readyPromiseReject);return{}}var tempDouble;var tempI64;function ExitStatus(status){this.name=\"ExitStatus\";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};function getValue(ptr,type=\"i8\"){if(type.endsWith(\"*\"))type=\"*\";switch(type){case\"i1\":return HEAP8[ptr];case\"i8\":return HEAP8[ptr];case\"i16\":return HEAP16[ptr>>1];case\"i32\":return HEAP32[ptr>>2];case\"i64\":abort(\"to do getValue(i64) use WASM_BIGINT\");case\"float\":return HEAPF32[ptr>>2];case\"double\":return HEAPF64[ptr>>3];case\"*\":return HEAPU32[ptr>>2];default:abort(`invalid type for getValue: ${type}`)}}var noExitRuntime=Module[\"noExitRuntime\"]||true;function setValue(ptr,value,type=\"i8\"){if(type.endsWith(\"*\"))type=\"*\";switch(type){case\"i1\":HEAP8[ptr]=value;break;case\"i8\":HEAP8[ptr]=value;break;case\"i16\":HEAP16[ptr>>1]=value;break;case\"i32\":HEAP32[ptr>>2]=value;break;case\"i64\":abort(\"to do setValue(i64) use WASM_BIGINT\");case\"float\":HEAPF32[ptr>>2]=value;break;case\"double\":HEAPF64[ptr>>3]=value;break;case\"*\":HEAPU32[ptr>>2]=value;break;default:abort(`invalid type for setValue: ${type}`)}}var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var UTF8Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf8\"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\"\";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\";var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):\"unknown filename\",line,func?UTF8ToString(func):\"unknown function\"])};var PATH={isAbs:path=>path.charAt(0)===\"/\",splitPath:filename=>{var splitPathRe=/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last===\".\"){parts.splice(i,1)}else if(last===\"..\"){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift(\"..\")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)===\"/\";path=PATH.normalizeArray(path.split(\"/\").filter(p=>!!p),!isAbsolute).join(\"/\");if(!path&&!isAbsolute){path=\".\"}if(path&&trailingSlash){path+=\"/\"}return(isAbsolute?\"/\":\"\")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return\".\"}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path===\"/\")return\"/\";path=PATH.normalize(path);path=path.replace(/\\/$/,\"\");var lastSlash=path.lastIndexOf(\"/\");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join(\"/\")),join2:(l,r)=>PATH.normalize(l+\"/\"+r)};var initRandomFill=()=>{if(typeof crypto==\"object\"&&typeof crypto[\"getRandomValues\"]==\"function\"){return view=>crypto.getRandomValues(view)}else abort(\"initRandomDevice\")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath=\"\",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!=\"string\"){throw new TypeError(\"Arguments to path.resolve must be strings\")}else if(!path){return\"\"}resolvedPath=path+\"/\"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split(\"/\").filter(p=>!!p),!resolvedAbsolute).join(\"/\");return(resolvedAbsolute?\"/\":\"\")+resolvedPath||\".\"},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start<arr.length;start++){if(arr[start]!==\"\")break}var end=arr.length-1;for(;end>=0;end--){if(arr[end]!==\"\")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split(\"/\"));var toParts=trim(to.split(\"/\"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i<length;i++){if(fromParts[i]!==toParts[i]){samePartsLength=i;break}}var outputParts=[];for(var i=samePartsLength;i<fromParts.length;i++){outputParts.push(\"..\")}outputParts=outputParts.concat(toParts.slice(samePartsLength));return outputParts.join(\"/\")}};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(typeof window!=\"undefined\"&&typeof window.prompt==\"function\"){result=window.prompt(\"Input: \");if(result!==null){result+=\"\\n\"}}else{}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=stream.tty.ops.get_char(stream.tty)}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.put_char){throw new FS.ErrnoError(60)}try{for(var i=0;i<length;i++){stream.tty.ops.put_char(stream.tty,buffer[offset+i])}}catch(e){throw new FS.ErrnoError(29)}if(length){stream.node.timestamp=Date.now()}return i}},default_tty_ops:{get_char(tty){return FS_stdin_getChar()},put_char(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var zeroMemory=(address,size)=>{HEAPU8.fill(0,address,address+size);return address};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var mmapAlloc=size=>{size=alignMemory(size,65536);var ptr=_emscripten_builtin_memalign(65536,size);if(!ptr)return 0;return zeroMemory(ptr,size)};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,\"/\",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity<CAPACITY_DOUBLING_MAX?2:1.125)>>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[\".\",\"..\"];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i<size;i++)buffer[offset+i]=contents[position+i]}return size},write(stream,buffer,offset,length,position,canOwn){if(buffer.buffer===HEAP8.buffer){canOwn=false}if(!length)return 0;var node=stream.node;node.timestamp=Date.now();if(buffer.subarray&&(!node.contents||node.contents.subarray)){if(canOwn){node.contents=buffer.subarray(offset,offset+length);node.usedBytes=length;return length}else if(node.usedBytes===0&&position===0){node.contents=buffer.slice(offset,offset+length);node.usedBytes=length;return length}else if(position+length<=node.usedBytes){node.contents.set(buffer.subarray(offset,offset+length),position);return length}}MEMFS.expandFileStorage(node,position+length);if(node.contents.subarray&&buffer.subarray){node.contents.set(buffer.subarray(offset,offset+length),position)}else{for(var i=0;i<length;i++){node.contents[position+i]=buffer[offset+i]}}node.usedBytes=Math.max(node.usedBytes,position+length);return length},llseek(stream,offset,whence){var position=offset;if(whence===1){position+=stream.position}else if(whence===2){if(FS.isFile(stream.node.mode)){position+=stream.node.usedBytes}}if(position<0){throw new FS.ErrnoError(28)}return position},allocate(stream,offset,length){MEMFS.expandFileStorage(stream.node,offset+length);stream.node.usedBytes=Math.max(stream.node.usedBytes,offset+length)},mmap(stream,length,position,prot,flags){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}var ptr;var allocated;var contents=stream.node.contents;if(!(flags&2)&&contents.buffer===HEAP8.buffer){allocated=false;ptr=contents.byteOffset}else{if(position>0||position+length<contents.length){if(contents.subarray){contents=contents.subarray(position,position+length)}else{contents=Array.prototype.slice.call(contents,position,position+length)}}allocated=true;ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}HEAP8.set(contents,ptr)}return{ptr:ptr,allocated:allocated}},msync(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var asyncLoad=(url,onload,onerror,noRunDep)=>{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):\"\";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file \"${url}\" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module[\"preloadPlugins\"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!=\"undefined\")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin[\"canHandle\"](fullname)){plugin[\"handle\"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url==\"string\"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={r:0,\"r+\":2,w:512|64|1,\"w+\":512|64|2,a:1024|64|1,\"a+\":1024|64|2};var flags=flagModes[str];if(typeof flags==\"undefined\"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:\"/\",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name=\"ErrnoError\";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:\"\",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split(\"/\").filter(p=>!!p);var current=FS.root;var current_path=\"/\";for(var i=0;i<parts.length;i++){var islast=i===parts.length-1;if(islast&&opts.parent){break}current=FS.lookupNode(current,parts[i]);current_path=PATH.join2(current_path,parts[i]);if(FS.isMountpoint(current)){if(!islast||islast&&opts.follow_mount){current=current.mounted.root}}if(!islast||opts.follow){var count=0;while(FS.isLink(current.mode)){var link=FS.readlink(current_path);current_path=PATH_FS.resolve(PATH.dirname(current_path),link);var lookup=FS.lookupPath(current_path,{recurse_count:opts.recurse_count+1});current=lookup.node;if(count++>40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!==\"/\"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i<name.length;i++){hash=(hash<<5)-hash+name.charCodeAt(i)|0}return(parentid+hash>>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=[\"r\",\"w\",\"rw\"][flag&3];if(flag&512){perms+=\"w\"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes(\"r\")&&!(node.mode&292)){return 2}else if(perms.includes(\"w\")&&!(node.mode&146)){return 2}else if(perms.includes(\"x\")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,\"x\");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,\"wx\")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,\"wx\");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!==\"r\"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate==\"function\"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint===\"/\";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name===\".\"||name===\"..\"){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split(\"/\");var d=\"\";for(var i=0;i<dirs.length;++i){if(!dirs[i])continue;d+=\"/\"+dirs[i];try{FS.mkdir(d,mode)}catch(e){if(e.errno!=20)throw e}}},mkdev(path,mode,dev){if(typeof dev==\"undefined\"){dev=mode;mode=438}mode|=8192;return FS.mknod(path,mode,dev)},symlink(oldpath,newpath){if(!PATH_FS.resolve(oldpath)){throw new FS.ErrnoError(44)}var lookup=FS.lookupPath(newpath,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var newname=PATH.basename(newpath);var errCode=FS.mayCreate(parent,newname);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.symlink){throw new FS.ErrnoError(63)}return parent.node_ops.symlink(parent,newname,oldpath)},rename(old_path,new_path){var old_dirname=PATH.dirname(old_path);var new_dirname=PATH.dirname(new_path);var old_name=PATH.basename(old_path);var new_name=PATH.basename(new_path);var lookup,old_dir,new_dir;lookup=FS.lookupPath(old_path,{parent:true});old_dir=lookup.node;lookup=FS.lookupPath(new_path,{parent:true});new_dir=lookup.node;if(!old_dir||!new_dir)throw new FS.ErrnoError(44);if(old_dir.mount!==new_dir.mount){throw new FS.ErrnoError(75)}var old_node=FS.lookupNode(old_dir,old_name);var relative=PATH_FS.relative(old_path,new_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(28)}relative=PATH_FS.relative(new_path,old_dirname);if(relative.charAt(0)!==\".\"){throw new FS.ErrnoError(55)}var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(old_node===new_node){return}var isdir=FS.isDir(old_node.mode);var errCode=FS.mayDelete(old_dir,old_name,isdir);if(errCode){throw new FS.ErrnoError(errCode)}errCode=new_node?FS.mayDelete(new_dir,new_name,isdir):FS.mayCreate(new_dir,new_name);if(errCode){throw new FS.ErrnoError(errCode)}if(!old_dir.node_ops.rename){throw new FS.ErrnoError(63)}if(FS.isMountpoint(old_node)||new_node&&FS.isMountpoint(new_node)){throw new FS.ErrnoError(10)}if(new_dir!==old_dir){errCode=FS.nodePermissions(old_dir,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}}FS.hashRemoveNode(old_node);try{old_dir.node_ops.rename(old_node,new_dir,new_name);old_node.parent=new_dir}catch(e){throw e}finally{FS.hashAddNode(old_node)}},rmdir(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,true);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.rmdir){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.rmdir(parent,name);FS.destroyNode(node)},readdir(path){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node.node_ops.readdir){throw new FS.ErrnoError(54)}return node.node_ops.readdir(node)},unlink(path){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;if(!parent){throw new FS.ErrnoError(44)}var name=PATH.basename(path);var node=FS.lookupNode(parent,name);var errCode=FS.mayDelete(parent,name,false);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.unlink){throw new FS.ErrnoError(63)}if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}parent.node_ops.unlink(parent,name);FS.destroyNode(node)},readlink(path){var lookup=FS.lookupPath(path);var link=lookup.node;if(!link){throw new FS.ErrnoError(44)}if(!link.node_ops.readlink){throw new FS.ErrnoError(28)}return PATH_FS.resolve(FS.getPath(link.parent),link.node_ops.readlink(link))},stat(path,dontFollow){var lookup=FS.lookupPath(path,{follow:!dontFollow});var node=lookup.node;if(!node){throw new FS.ErrnoError(44)}if(!node.node_ops.getattr){throw new FS.ErrnoError(63)}return node.node_ops.getattr(node)},lstat(path){return FS.stat(path,true)},chmod(path,mode,dontFollow){var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{mode:mode&4095|node.mode&~4095,timestamp:Date.now()})},lchmod(path,mode){FS.chmod(path,mode,true)},fchmod(fd,mode){var stream=FS.getStreamChecked(fd);FS.chmod(stream.node,mode)},chown(path,uid,gid,dontFollow){var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:!dontFollow});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}node.node_ops.setattr(node,{timestamp:Date.now()})},lchown(path,uid,gid){FS.chown(path,uid,gid,true)},fchown(fd,uid,gid){var stream=FS.getStreamChecked(fd);FS.chown(stream.node,uid,gid)},truncate(path,len){if(len<0){throw new FS.ErrnoError(28)}var node;if(typeof path==\"string\"){var lookup=FS.lookupPath(path,{follow:true});node=lookup.node}else{node=path}if(!node.node_ops.setattr){throw new FS.ErrnoError(63)}if(FS.isDir(node.mode)){throw new FS.ErrnoError(31)}if(!FS.isFile(node.mode)){throw new FS.ErrnoError(28)}var errCode=FS.nodePermissions(node,\"w\");if(errCode){throw new FS.ErrnoError(errCode)}node.node_ops.setattr(node,{size:len,timestamp:Date.now()})},ftruncate(fd,len){var stream=FS.getStreamChecked(fd);if((stream.flags&2097155)===0){throw new FS.ErrnoError(28)}FS.truncate(stream.node,len)},utime(path,atime,mtime){var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;node.node_ops.setattr(node,{timestamp:Math.max(atime,mtime)})},open(path,flags,mode){if(path===\"\"){throw new FS.ErrnoError(44)}flags=typeof flags==\"string\"?FS_modeStringToFlags(flags):flags;if(flags&64){mode=typeof mode==\"undefined\"?438:mode;mode=mode&4095|32768}else{mode=0}var node;if(typeof path==\"object\"){node=path}else{path=PATH.normalize(path);try{var lookup=FS.lookupPath(path,{follow:!(flags&131072)});node=lookup.node}catch(e){}}var created=false;if(flags&64){if(node){if(flags&128){throw new FS.ErrnoError(20)}}else{node=FS.mknod(path,mode,0);created=true}}if(!node){throw new FS.ErrnoError(44)}if(FS.isChrdev(node.mode)){flags&=~512}if(flags&65536&&!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}if(!created){var errCode=FS.mayOpen(node,flags);if(errCode){throw new FS.ErrnoError(errCode)}}if(flags&512&&!created){FS.truncate(node,0)}flags&=~(128|512|131072);var stream=FS.createStream({node:node,path:FS.getPath(node),flags:flags,seekable:true,position:0,stream_ops:node.stream_ops,ungotten:[],error:false});if(stream.stream_ops.open){stream.stream_ops.open(stream)}if(Module[\"logReadFiles\"]&&!(flags&1)){if(!FS.readFiles)FS.readFiles={};if(!(path in FS.readFiles)){FS.readFiles[path]=1}}return stream},close(stream){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(stream.getdents)stream.getdents=null;try{if(stream.stream_ops.close){stream.stream_ops.close(stream)}}catch(e){throw e}finally{FS.closeStream(stream.fd)}stream.fd=null},isClosed(stream){return stream.fd===null},llseek(stream,offset,whence){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(!stream.seekable||!stream.stream_ops.llseek){throw new FS.ErrnoError(70)}if(whence!=0&&whence!=1&&whence!=2){throw new FS.ErrnoError(28)}stream.position=stream.stream_ops.llseek(stream,offset,whence);stream.ungotten=[];return stream.position},read(stream,buffer,offset,length,position){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.read){throw new FS.ErrnoError(28)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesRead=stream.stream_ops.read(stream,buffer,offset,length,position);if(!seeking)stream.position+=bytesRead;return bytesRead},write(stream,buffer,offset,length,position,canOwn){if(length<0||position<0){throw new FS.ErrnoError(28)}if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(FS.isDir(stream.node.mode)){throw new FS.ErrnoError(31)}if(!stream.stream_ops.write){throw new FS.ErrnoError(28)}if(stream.seekable&&stream.flags&1024){FS.llseek(stream,0,2)}var seeking=typeof position!=\"undefined\";if(!seeking){position=stream.position}else if(!stream.seekable){throw new FS.ErrnoError(70)}var bytesWritten=stream.stream_ops.write(stream,buffer,offset,length,position,canOwn);if(!seeking)stream.position+=bytesWritten;return bytesWritten},allocate(stream,offset,length){if(FS.isClosed(stream)){throw new FS.ErrnoError(8)}if(offset<0||length<=0){throw new FS.ErrnoError(28)}if((stream.flags&2097155)===0){throw new FS.ErrnoError(8)}if(!FS.isFile(stream.node.mode)&&!FS.isDir(stream.node.mode)){throw new FS.ErrnoError(43)}if(!stream.stream_ops.allocate){throw new FS.ErrnoError(138)}stream.stream_ops.allocate(stream,offset,length)},mmap(stream,length,position,prot,flags){if((prot&2)!==0&&(flags&2)===0&&(stream.flags&2097155)!==2){throw new FS.ErrnoError(2)}if((stream.flags&2097155)===1){throw new FS.ErrnoError(2)}if(!stream.stream_ops.mmap){throw new FS.ErrnoError(43)}return stream.stream_ops.mmap(stream,length,position,prot,flags)},msync(stream,buffer,offset,length,mmapFlags){if(!stream.stream_ops.msync){return 0}return stream.stream_ops.msync(stream,buffer,offset,length,mmapFlags)},ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||\"binary\";if(opts.encoding!==\"utf8\"&&opts.encoding!==\"binary\"){throw new Error(`Invalid encoding type \"${opts.encoding}\"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding===\"utf8\"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding===\"binary\"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data==\"string\"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error(\"Unsupported data type\")}FS.close(stream)},cwd:()=>FS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,\"x\");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir(\"/tmp\");FS.mkdir(\"/home\");FS.mkdir(\"/home/web_user\")},createDefaultDevices(){FS.mkdir(\"/dev\");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev(\"/dev/null\",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev(\"/dev/tty\",FS.makedev(5,0));FS.mkdev(\"/dev/tty1\",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice(\"/dev\",\"random\",randomByte);FS.createDevice(\"/dev\",\"urandom\",randomByte);FS.mkdir(\"/dev/shm\");FS.mkdir(\"/dev/shm/tmp\")},createSpecialDirectories(){FS.mkdir(\"/proc\");var proc_self=FS.mkdir(\"/proc/self\");FS.mkdir(\"/proc/self/fd\");FS.mount({mount(){var node=FS.createNode(proc_self,\"fd\",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:\"fake\"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},\"/proc/self/fd\")},createStandardStreams(){if(Module[\"stdin\"]){FS.createDevice(\"/dev\",\"stdin\",Module[\"stdin\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdin\")}if(Module[\"stdout\"]){FS.createDevice(\"/dev\",\"stdout\",null,Module[\"stdout\"])}else{FS.symlink(\"/dev/tty\",\"/dev/stdout\")}if(Module[\"stderr\"]){FS.createDevice(\"/dev\",\"stderr\",null,Module[\"stderr\"])}else{FS.symlink(\"/dev/tty1\",\"/dev/stderr\")}var stdin=FS.open(\"/dev/stdin\",0);var stdout=FS.open(\"/dev/stdout\",1);var stderr=FS.open(\"/dev/stderr\",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=\"<generic error, no stack>\"});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},\"/\");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={MEMFS:MEMFS}},init(input,output,error){FS.init.initialized=true;Module[\"stdin\"]=input||Module[\"stdin\"];Module[\"stdout\"]=output||Module[\"stdout\"];Module[\"stderr\"]=error||Module[\"stderr\"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;i<FS.streams.length;i++){var stream=FS.streams[i];if(!stream){continue}FS.close(stream)}},findObject(path,dontResolveLastLink){var ret=FS.analyzePath(path,dontResolveLastLink);if(!ret.exists){return null}return ret.object},analyzePath(path,dontResolveLastLink){try{var lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});path=lookup.path}catch(e){}var ret={isRoot:false,exists:false,error:0,name:null,path:null,object:null,parentExists:false,parentPath:null,parentObject:null};try{var lookup=FS.lookupPath(path,{parent:true});ret.parentExists=true;ret.parentPath=lookup.path;ret.parentObject=lookup.node;ret.name=PATH.basename(path);lookup=FS.lookupPath(path,{follow:!dontResolveLastLink});ret.exists=true;ret.path=lookup.path;ret.object=lookup.node;ret.name=lookup.node.name;ret.isRoot=lookup.path===\"/\"}catch(e){ret.error=e.errno}return ret},createPath(parent,path,canRead,canWrite){parent=typeof parent==\"string\"?parent:FS.getPath(parent);var parts=path.split(\"/\").reverse();while(parts.length){var part=parts.pop();if(!part)continue;var current=PATH.join2(parent,part);try{FS.mkdir(current)}catch(e){}parent=current}return current},createFile(parent,name,properties,canRead,canWrite){var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS_getMode(canRead,canWrite);return FS.create(path,mode)},createDataFile(parent,name,data,canRead,canWrite,canOwn){var path=name;if(parent){parent=typeof parent==\"string\"?parent:FS.getPath(parent);path=name?PATH.join2(parent,name):parent}var mode=FS_getMode(canRead,canWrite);var node=FS.create(path,mode);if(data){if(typeof data==\"string\"){var arr=new Array(data.length);for(var i=0,len=data.length;i<len;++i)arr[i]=data.charCodeAt(i);data=arr}FS.chmod(node,mode|146);var stream=FS.open(node,577);FS.write(stream,data,0,data.length,0,canOwn);FS.close(stream);FS.chmod(node,mode)}},createDevice(parent,name,input,output){var path=PATH.join2(typeof parent==\"string\"?parent:FS.getPath(parent),name);var mode=FS_getMode(!!input,!!output);if(!FS.createDevice.major)FS.createDevice.major=64;var dev=FS.makedev(FS.createDevice.major++,0);FS.registerDevice(dev,{open(stream){stream.seekable=false},close(stream){if(output?.buffer?.length){output(10)}},read(stream,buffer,offset,length,pos){var bytesRead=0;for(var i=0;i<length;i++){var result;try{result=input()}catch(e){throw new FS.ErrnoError(29)}if(result===undefined&&bytesRead===0){throw new FS.ErrnoError(6)}if(result===null||result===undefined)break;bytesRead++;buffer[offset+i]=result}if(bytesRead){stream.node.timestamp=Date.now()}return bytesRead},write(stream,buffer,offset,length,pos){for(var i=0;i<length;i++){try{output(buffer[offset+i])}catch(e){throw new FS.ErrnoError(29)}}if(length){stream.node.timestamp=Date.now()}return i}});return FS.mkdev(path,mode,dev)},forceLoadFile(obj){if(obj.isDevice||obj.isFolder||obj.link||obj.contents)return true;if(typeof XMLHttpRequest!=\"undefined\"){throw new Error(\"Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.\")}else if(read_){try{obj.contents=intArrayFromString(read_(obj.url),true);obj.usedBytes=obj.contents.length}catch(e){throw new FS.ErrnoError(29)}}else{throw new Error(\"Cannot load without read() or XMLHttpRequest.\")}},createLazyFile(parent,name,url,canRead,canWrite){class LazyUint8Array{constructor(){this.lengthKnown=false;this.chunks=[]}get(idx){if(idx>this.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open(\"HEAD\",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);var datalength=Number(xhr.getResponseHeader(\"Content-length\"));var header;var hasByteServing=(header=xhr.getResponseHeader(\"Accept-Ranges\"))&&header===\"bytes\";var usesGzip=(header=xhr.getResponseHeader(\"Content-Encoding\"))&&header===\"gzip\";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error(\"invalid range (\"+from+\", \"+to+\") or no bytes requested!\");if(to>datalength-1)throw new Error(\"only \"+datalength+\" bytes available! programmer error!\");var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);if(datalength!==chunkSize)xhr.setRequestHeader(\"Range\",\"bytes=\"+from+\"-\"+to);xhr.responseType=\"arraybuffer\";if(xhr.overrideMimeType){xhr.overrideMimeType(\"text/plain; charset=x-user-defined\")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error(\"Couldn't load \"+url+\". Status: \"+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||\"\",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==\"undefined\"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==\"undefined\")throw new Error(\"doXHR failed!\");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out(\"LazyFiles on gzip forces download of the whole file when length is accessed\")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!=\"undefined\"){if(!ENVIRONMENT_IS_WORKER)throw\"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc\";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i<size;i++){buffer[offset+i]=contents[position+i]}}else{for(var i=0;i<size;i++){buffer[offset+i]=contents.get(position+i)}}return size}stream_ops.read=(stream,buffer,offset,length,position)=>{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>2]=stat.dev;HEAP32[buf+4>>2]=stat.mode;HEAPU32[buf+8>>2]=stat.nlink;HEAP32[buf+12>>2]=stat.uid;HEAP32[buf+16>>2]=stat.gid;HEAP32[buf+20>>2]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>2]=tempI64[0],HEAP32[buf+28>>2]=tempI64[1];HEAP32[buf+32>>2]=4096;HEAP32[buf+36>>2]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAPU32[buf+48>>2]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>2]=tempI64[0],HEAP32[buf+60>>2]=tempI64[1];HEAPU32[buf+64>>2]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>2]=tempI64[0],HEAP32[buf+76>>2]=tempI64[1];HEAPU32[buf+80>>2]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>2]=tempI64[0],HEAP32[buf+92>>2]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream},varargs:undefined,getStr(ptr){var ret=UTF8ToString(ptr);return ret}};function ___syscall_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_faccessat(dirfd,path,amode,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(amode&~7){return-28}var lookup=FS.lookupPath(path,{follow:true});var node=lookup.node;if(!node){return-44}var perms=\"\";if(amode&4)perms+=\"r\";if(amode&2)perms+=\"w\";if(amode&1)perms+=\"x\";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_fchown32(fd,owner,group){try{FS.fchown(fd,owner,group);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function syscallGetVarargI(){var ret=HEAP32[+SYSCALLS.varargs>>2];SYSCALLS.varargs+=4;return ret}var syscallGetVarargP=syscallGetVarargI;function ___syscall_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=syscallGetVarargI();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=syscallGetVarargI();stream.flags|=arg;return 0}case 12:{var arg=syscallGetVarargP();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function ___syscall_ftruncate64(fd,length_low,length_high){var length=convertI32PairToI53Checked(length_low,length_high);try{if(isNaN(length))return 61;FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);function ___syscall_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd)+1;if(size<cwdLengthInBytes)return-68;stringToUTF8(cwd,buf,size);return cwdLengthInBytes}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_mkdirat(dirfd,path,mode){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);path=PATH.normalize(path);if(path[path.length-1]===\"/\")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_newfstatat(dirfd,path,buf,flags){try{path=SYSCALLS.getStr(path);var nofollow=flags&256;var allowEmpty=flags&4096;flags=flags&~6400;path=SYSCALLS.calculateAt(dirfd,path,allowEmpty);return SYSCALLS.doStat(nofollow?FS.lstat:FS.stat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?syscallGetVarargI():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_readlinkat(dirfd,path,buf,bufsize){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function ___syscall_unlinkat(dirfd,path,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);if(flags===0){FS.unlink(path)}else if(flags===512){FS.rmdir(path)}else{abort(\"Invalid flags passed to unlinkat\")}return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var readI53FromI64=ptr=>HEAPU32[ptr>>2]+HEAP32[ptr+4>>2]*4294967296;function ___syscall_utimensat(dirfd,path,times,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path,true);if(!times){var atime=Date.now();var mtime=atime}else{var seconds=readI53FromI64(times);var nanoseconds=HEAP32[times+8>>2];atime=seconds*1e3+nanoseconds/(1e3*1e3);times+=16;seconds=readI53FromI64(times);nanoseconds=HEAP32[times+8>>2];mtime=seconds*1e3+nanoseconds/(1e3*1e3)}FS.utime(path,atime,mtime);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var MONTH_DAYS_LEAP_CUMULATIVE=[0,31,60,91,121,152,182,213,244,274,305,335];var MONTH_DAYS_REGULAR_CUMULATIVE=[0,31,59,90,120,151,181,212,243,273,304,334];var ydayFromDate=date=>{var leap=isLeapYear(date.getFullYear());var monthDaysCumulative=leap?MONTH_DAYS_LEAP_CUMULATIVE:MONTH_DAYS_REGULAR_CUMULATIVE;var yday=monthDaysCumulative[date.getMonth()]+date.getDate()-1;return yday};function __localtime_js(time_low,time_high,tmPtr){var time=convertI32PairToI53Checked(time_low,time_high);var date=new Date(time*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var yday=ydayFromDate(date)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var start=new Date(date.getFullYear(),0,1);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst}function __mmap_js(len,prot,flags,fd,offset_low,offset_high,allocated,addr){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);var res=FS.mmap(stream,len,offset,prot,flags);var ptr=res.ptr;HEAP32[allocated>>2]=res.allocated;HEAPU32[addr>>2]=ptr;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}function __munmap_js(addr,len,prot,flags,fd,offset_low,offset_high){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{var stream=SYSCALLS.getStreamFromFD(fd);if(prot&2){SYSCALLS.doMsync(addr,stream,len,flags,offset)}}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return-e.errno}}var __tzset_js=(timezone,daylight,std_name,dst_name)=>{var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAPU32[timezone>>2]=stdTimezoneOffset*60;HEAP32[daylight>>2]=Number(winterOffset!=summerOffset);var extractZone=date=>date.toLocaleTimeString(undefined,{hour12:false,timeZoneName:\"short\"}).split(\" \")[1];var winterName=extractZone(winter);var summerName=extractZone(summer);if(summerOffset<winterOffset){stringToUTF8(winterName,std_name,17);stringToUTF8(summerName,dst_name,17)}else{stringToUTF8(winterName,dst_name,17);stringToUTF8(summerName,std_name,17)}};var _emscripten_date_now=()=>Date.now();var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||\"./this.program\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator==\"object\"&&navigator.languages&&navigator.languages[0]||\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i<str.length;++i){HEAP8[buffer++]=str.charCodeAt(i)}HEAP8[buffer]=0};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var rightsBase=0;var rightsInheriting=0;var flags=0;{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4}HEAP8[pbuf]=type;HEAP16[pbuf+2>>1]=flags;tempI64=[rightsBase>>>0,(tempDouble=rightsBase,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+8>>2]=tempI64[0],HEAP32[pbuf+12>>2]=tempI64[1];tempI64=[rightsInheriting>>>0,(tempDouble=rightsInheriting,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[pbuf+16>>2]=tempI64[0],HEAP32[pbuf+20>>2]=tempI64[1];return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr<len)break;if(typeof offset!=\"undefined\"){offset+=curr}}return ret};function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}function _fd_sync(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);if(stream.stream_ops?.fsync){return stream.stream_ops.fsync(stream)}return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=\"undefined\"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>2]=num;return 0}catch(e){if(typeof FS==\"undefined\"||!(e.name===\"ErrnoError\"))throw e;return e.errno}}var adapters_support=function(){const handleAsync=typeof Asyncify===\"object\"?Asyncify.handleAsync.bind(Asyncify):null;Module[\"handleAsync\"]=handleAsync;const targets=new Map;Module[\"setCallback\"]=(key,target)=>targets.set(key,target);Module[\"getCallback\"]=key=>targets.get(key);Module[\"deleteCallback\"]=key=>targets.delete(key);adapters_support=function(isAsync,key,...args){const receiver=targets.get(key);let methodName=null;const f=typeof receiver===\"function\"?receiver:receiver[methodName=UTF8ToString(args.shift())];if(isAsync){if(handleAsync){return handleAsync(()=>f.apply(receiver,args))}throw new Error(\"Synchronous WebAssembly cannot call async function\")}const result=f.apply(receiver,args);if(typeof result?.then==\"function\"){console.error(\"unexpected Promise\",f);throw new Error(`${methodName} unexpectedly returned a Promise`)}return result}};function _ipp(...args){return adapters_support(false,...args)}function _ipp_async(...args){return adapters_support(true,...args)}function _ippipppp(...args){return adapters_support(false,...args)}function _ippipppp_async(...args){return adapters_support(true,...args)}function _ippp(...args){return adapters_support(false,...args)}function _ippp_async(...args){return adapters_support(true,...args)}function _ipppi(...args){return adapters_support(false,...args)}function _ipppi_async(...args){return adapters_support(true,...args)}function _ipppiii(...args){return adapters_support(false,...args)}function _ipppiii_async(...args){return adapters_support(true,...args)}function _ipppiiip(...args){return adapters_support(false,...args)}function _ipppiiip_async(...args){return adapters_support(true,...args)}function _ipppip(...args){return adapters_support(false,...args)}function _ipppip_async(...args){return adapters_support(true,...args)}function _ipppj(...args){return adapters_support(false,...args)}function _ipppj_async(...args){return adapters_support(true,...args)}function _ipppp(...args){return adapters_support(false,...args)}function _ipppp_async(...args){return adapters_support(true,...args)}function _ippppi(...args){return adapters_support(false,...args)}function _ippppi_async(...args){return adapters_support(true,...args)}function _ippppij(...args){return adapters_support(false,...args)}function _ippppij_async(...args){return adapters_support(true,...args)}function _ippppip(...args){return adapters_support(false,...args)}function _ippppip_async(...args){return adapters_support(true,...args)}function _ipppppip(...args){return adapters_support(false,...args)}function _ipppppip_async(...args){return adapters_support(true,...args)}function _vppippii(...args){return adapters_support(false,...args)}function _vppippii_async(...args){return adapters_support(true,...args)}function _vppp(...args){return adapters_support(false,...args)}function _vppp_async(...args){return adapters_support(true,...args)}function _vpppip(...args){return adapters_support(false,...args)}function _vpppip_async(...args){return adapters_support(true,...args)}var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module[\"onExit\"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var handleException=e=>{if(e instanceof ExitStatus||e==\"unwind\"){return EXITSTATUS}quit_(1,e)};var uleb128Encode=(n,target)=>{if(n<128){target.push(n)}else{target.push(n%128|128,n>>7)}};var sigToWasmTypes=sig=>{var typeNames={i:\"i32\",j:\"i64\",f:\"f32\",d:\"f64\",e:\"externref\",p:\"i32\"};var type={parameters:[],results:sig[0]==\"v\"?[]:[typeNames[sig[0]]]};for(var i=1;i<sig.length;++i){type.parameters.push(typeNames[sig[i]])}return type};var generateFuncType=(sig,target)=>{var sigRet=sig.slice(0,1);var sigParam=sig.slice(1);var typeCodes={i:127,p:127,j:126,f:125,d:124,e:111};target.push(96);uleb128Encode(sigParam.length,target);for(var i=0;i<sigParam.length;++i){target.push(typeCodes[sigParam[i]])}if(sigRet==\"v\"){target.push(0)}else{target.push(1,typeCodes[sigRet])}};var convertJsFunctionToWasm=(func,sig)=>{if(typeof WebAssembly.Function==\"function\"){return new WebAssembly.Function(sigToWasmTypes(sig),func)}var typeSectionBody=[1];generateFuncType(sig,typeSectionBody);var bytes=[0,97,115,109,1,0,0,0,1];uleb128Encode(typeSectionBody.length,bytes);bytes.push(...typeSectionBody);bytes.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(new Uint8Array(bytes));var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports[\"f\"];return wrappedFunc};var wasmTable;var getWasmTableEntry=funcPtr=>wasmTable.get(funcPtr);var updateTableMap=(offset,count)=>{if(functionsInTableMap){for(var i=offset;i<offset+count;i++){var item=getWasmTableEntry(i);if(item){functionsInTableMap.set(item,i)}}}};var functionsInTableMap;var getFunctionAddress=func=>{if(!functionsInTableMap){functionsInTableMap=new WeakMap;updateTableMap(0,wasmTable.length)}return functionsInTableMap.get(func)||0};var freeTableIndexes=[];var getEmptyTableSlot=()=>{if(freeTableIndexes.length){return freeTableIndexes.pop()}try{wasmTable.grow(1)}catch(err){if(!(err instanceof RangeError)){throw err}throw\"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.\"}return wasmTable.length-1};var setWasmTableEntry=(idx,func)=>wasmTable.set(idx,func);var addFunction=(func,sig)=>{var rtn=getFunctionAddress(func);if(rtn){return rtn}var ret=getEmptyTableSlot();try{setWasmTableEntry(ret,func)}catch(err){if(!(err instanceof TypeError)){throw err}var wrapped=convertJsFunctionToWasm(func,sig);setWasmTableEntry(ret,wrapped)}functionsInTableMap.set(func,ret);return ret};var getCFunc=ident=>{var func=Module[\"_\"+ident];return func};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};var stackAlloc=sz=>__emscripten_stack_alloc(sz);var stringToUTF8OnStack=str=>{var size=lengthBytesUTF8(str)+1;var ret=stackAlloc(size);stringToUTF8(str,ret,size);return ret};var ccall=(ident,returnType,argTypes,args,opts)=>{var toC={string:str=>{var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=stringToUTF8OnStack(str)}return ret},array:arr=>{var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\"){return UTF8ToString(ret)}if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func(...cArgs);function onDone(ret){if(stack!==0)stackRestore(stack);return convertReturnValue(ret)}ret=onDone(ret);return ret};var cwrap=(ident,returnType,argTypes,opts)=>{var numericArgs=!argTypes||argTypes.every(type=>type===\"number\"||type===\"boolean\");var numericRet=returnType!==\"string\";if(numericRet&&numericArgs&&!opts){return getCFunc(ident)}return(...args)=>ccall(ident,returnType,argTypes,args,opts)};var getTempRet0=val=>__emscripten_tempret_get();var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr>>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codeUnit=str.charCodeAt(i);if(codeUnit>=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var AsciiToString=ptr=>{var str=\"\";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var UTF16Decoder=typeof TextDecoder!=\"undefined\"?new TextDecoder(\"utf-16le\"):undefined;var UTF16ToString=(ptr,maxBytesToRead)=>{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str=\"\";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str=\"\";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(utf32)}}return str};function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join(\"\")}FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();adapters_support();var wasmImports={a:___assert_fail,Y:___syscall_chmod,$:___syscall_faccessat,Z:___syscall_fchmod,X:___syscall_fchown32,b:___syscall_fcntl64,W:___syscall_fstat64,y:___syscall_ftruncate64,Q:___syscall_getcwd,U:___syscall_lstat64,N:___syscall_mkdirat,S:___syscall_newfstatat,M:___syscall_openat,K:___syscall_readlinkat,J:___syscall_rmdir,V:___syscall_stat64,G:___syscall_unlinkat,F:___syscall_utimensat,w:__localtime_js,u:__mmap_js,v:__munmap_js,H:__tzset_js,n:_emscripten_date_now,m:_emscripten_get_now,D:_emscripten_resize_heap,O:_environ_get,P:_environ_sizes_get,o:_fd_close,E:_fd_fdstat_get,L:_fd_read,x:_fd_seek,R:_fd_sync,I:_fd_write,s:_ipp,t:_ipp_async,ga:_ippipppp,ka:_ippipppp_async,i:_ippp,j:_ippp_async,c:_ipppi,d:_ipppi_async,ca:_ipppiii,da:_ipppiii_async,ea:_ipppiiip,fa:_ipppiiip_async,g:_ipppip,h:_ipppip_async,z:_ipppj,A:_ipppj_async,e:_ipppp,f:_ipppp_async,aa:_ippppi,ba:_ippppi_async,B:_ippppij,C:_ippppij_async,p:_ippppip,q:_ippppip_async,ha:_ipppppip,ia:_ipppppip_async,ja:_vppippii,r:_vppippii_async,k:_vppp,l:_vppp_async,T:_vpppip,_:_vpppip_async};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports[\"ma\"])();var _sqlite3_status64=Module[\"_sqlite3_status64\"]=(a0,a1,a2,a3)=>(_sqlite3_status64=Module[\"_sqlite3_status64\"]=wasmExports[\"na\"])(a0,a1,a2,a3);var _sqlite3_status=Module[\"_sqlite3_status\"]=(a0,a1,a2,a3)=>(_sqlite3_status=Module[\"_sqlite3_status\"]=wasmExports[\"oa\"])(a0,a1,a2,a3);var _sqlite3_msize=Module[\"_sqlite3_msize\"]=a0=>(_sqlite3_msize=Module[\"_sqlite3_msize\"]=wasmExports[\"pa\"])(a0);var _sqlite3_db_status=Module[\"_sqlite3_db_status\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_db_status=Module[\"_sqlite3_db_status\"]=wasmExports[\"qa\"])(a0,a1,a2,a3,a4);var _sqlite3_vfs_find=Module[\"_sqlite3_vfs_find\"]=a0=>(_sqlite3_vfs_find=Module[\"_sqlite3_vfs_find\"]=wasmExports[\"ra\"])(a0);var _sqlite3_vfs_register=Module[\"_sqlite3_vfs_register\"]=(a0,a1)=>(_sqlite3_vfs_register=Module[\"_sqlite3_vfs_register\"]=wasmExports[\"sa\"])(a0,a1);var _sqlite3_vfs_unregister=Module[\"_sqlite3_vfs_unregister\"]=a0=>(_sqlite3_vfs_unregister=Module[\"_sqlite3_vfs_unregister\"]=wasmExports[\"ta\"])(a0);var _sqlite3_release_memory=Module[\"_sqlite3_release_memory\"]=a0=>(_sqlite3_release_memory=Module[\"_sqlite3_release_memory\"]=wasmExports[\"ua\"])(a0);var _sqlite3_soft_heap_limit64=Module[\"_sqlite3_soft_heap_limit64\"]=(a0,a1)=>(_sqlite3_soft_heap_limit64=Module[\"_sqlite3_soft_heap_limit64\"]=wasmExports[\"va\"])(a0,a1);var _sqlite3_memory_used=Module[\"_sqlite3_memory_used\"]=()=>(_sqlite3_memory_used=Module[\"_sqlite3_memory_used\"]=wasmExports[\"wa\"])();var _sqlite3_hard_heap_limit64=Module[\"_sqlite3_hard_heap_limit64\"]=(a0,a1)=>(_sqlite3_hard_heap_limit64=Module[\"_sqlite3_hard_heap_limit64\"]=wasmExports[\"xa\"])(a0,a1);var _sqlite3_memory_highwater=Module[\"_sqlite3_memory_highwater\"]=a0=>(_sqlite3_memory_highwater=Module[\"_sqlite3_memory_highwater\"]=wasmExports[\"ya\"])(a0);var _sqlite3_malloc=Module[\"_sqlite3_malloc\"]=a0=>(_sqlite3_malloc=Module[\"_sqlite3_malloc\"]=wasmExports[\"za\"])(a0);var _sqlite3_malloc64=Module[\"_sqlite3_malloc64\"]=(a0,a1)=>(_sqlite3_malloc64=Module[\"_sqlite3_malloc64\"]=wasmExports[\"Aa\"])(a0,a1);var _sqlite3_free=Module[\"_sqlite3_free\"]=a0=>(_sqlite3_free=Module[\"_sqlite3_free\"]=wasmExports[\"Ba\"])(a0);var _sqlite3_realloc=Module[\"_sqlite3_realloc\"]=(a0,a1)=>(_sqlite3_realloc=Module[\"_sqlite3_realloc\"]=wasmExports[\"Ca\"])(a0,a1);var _sqlite3_realloc64=Module[\"_sqlite3_realloc64\"]=(a0,a1,a2)=>(_sqlite3_realloc64=Module[\"_sqlite3_realloc64\"]=wasmExports[\"Da\"])(a0,a1,a2);var _sqlite3_str_vappendf=Module[\"_sqlite3_str_vappendf\"]=(a0,a1,a2)=>(_sqlite3_str_vappendf=Module[\"_sqlite3_str_vappendf\"]=wasmExports[\"Ea\"])(a0,a1,a2);var _sqlite3_str_append=Module[\"_sqlite3_str_append\"]=(a0,a1,a2)=>(_sqlite3_str_append=Module[\"_sqlite3_str_append\"]=wasmExports[\"Fa\"])(a0,a1,a2);var _sqlite3_str_appendchar=Module[\"_sqlite3_str_appendchar\"]=(a0,a1,a2)=>(_sqlite3_str_appendchar=Module[\"_sqlite3_str_appendchar\"]=wasmExports[\"Ga\"])(a0,a1,a2);var _sqlite3_str_appendall=Module[\"_sqlite3_str_appendall\"]=(a0,a1)=>(_sqlite3_str_appendall=Module[\"_sqlite3_str_appendall\"]=wasmExports[\"Ha\"])(a0,a1);var _sqlite3_str_appendf=Module[\"_sqlite3_str_appendf\"]=(a0,a1,a2)=>(_sqlite3_str_appendf=Module[\"_sqlite3_str_appendf\"]=wasmExports[\"Ia\"])(a0,a1,a2);var _sqlite3_str_finish=Module[\"_sqlite3_str_finish\"]=a0=>(_sqlite3_str_finish=Module[\"_sqlite3_str_finish\"]=wasmExports[\"Ja\"])(a0);var _sqlite3_str_errcode=Module[\"_sqlite3_str_errcode\"]=a0=>(_sqlite3_str_errcode=Module[\"_sqlite3_str_errcode\"]=wasmExports[\"Ka\"])(a0);var _sqlite3_str_length=Module[\"_sqlite3_str_length\"]=a0=>(_sqlite3_str_length=Module[\"_sqlite3_str_length\"]=wasmExports[\"La\"])(a0);var _sqlite3_str_value=Module[\"_sqlite3_str_value\"]=a0=>(_sqlite3_str_value=Module[\"_sqlite3_str_value\"]=wasmExports[\"Ma\"])(a0);var _sqlite3_str_reset=Module[\"_sqlite3_str_reset\"]=a0=>(_sqlite3_str_reset=Module[\"_sqlite3_str_reset\"]=wasmExports[\"Na\"])(a0);var _sqlite3_str_new=Module[\"_sqlite3_str_new\"]=a0=>(_sqlite3_str_new=Module[\"_sqlite3_str_new\"]=wasmExports[\"Oa\"])(a0);var _sqlite3_vmprintf=Module[\"_sqlite3_vmprintf\"]=(a0,a1)=>(_sqlite3_vmprintf=Module[\"_sqlite3_vmprintf\"]=wasmExports[\"Pa\"])(a0,a1);var _sqlite3_mprintf=Module[\"_sqlite3_mprintf\"]=(a0,a1)=>(_sqlite3_mprintf=Module[\"_sqlite3_mprintf\"]=wasmExports[\"Qa\"])(a0,a1);var _sqlite3_vsnprintf=Module[\"_sqlite3_vsnprintf\"]=(a0,a1,a2,a3)=>(_sqlite3_vsnprintf=Module[\"_sqlite3_vsnprintf\"]=wasmExports[\"Ra\"])(a0,a1,a2,a3);var _sqlite3_snprintf=Module[\"_sqlite3_snprintf\"]=(a0,a1,a2,a3)=>(_sqlite3_snprintf=Module[\"_sqlite3_snprintf\"]=wasmExports[\"Sa\"])(a0,a1,a2,a3);var _sqlite3_log=Module[\"_sqlite3_log\"]=(a0,a1,a2)=>(_sqlite3_log=Module[\"_sqlite3_log\"]=wasmExports[\"Ta\"])(a0,a1,a2);var _sqlite3_randomness=Module[\"_sqlite3_randomness\"]=(a0,a1)=>(_sqlite3_randomness=Module[\"_sqlite3_randomness\"]=wasmExports[\"Ua\"])(a0,a1);var _sqlite3_stricmp=Module[\"_sqlite3_stricmp\"]=(a0,a1)=>(_sqlite3_stricmp=Module[\"_sqlite3_stricmp\"]=wasmExports[\"Va\"])(a0,a1);var _sqlite3_strnicmp=Module[\"_sqlite3_strnicmp\"]=(a0,a1,a2)=>(_sqlite3_strnicmp=Module[\"_sqlite3_strnicmp\"]=wasmExports[\"Wa\"])(a0,a1,a2);var _sqlite3_os_init=Module[\"_sqlite3_os_init\"]=()=>(_sqlite3_os_init=Module[\"_sqlite3_os_init\"]=wasmExports[\"Xa\"])();var _sqlite3_os_end=Module[\"_sqlite3_os_end\"]=()=>(_sqlite3_os_end=Module[\"_sqlite3_os_end\"]=wasmExports[\"Ya\"])();var _sqlite3_serialize=Module[\"_sqlite3_serialize\"]=(a0,a1,a2,a3)=>(_sqlite3_serialize=Module[\"_sqlite3_serialize\"]=wasmExports[\"Za\"])(a0,a1,a2,a3);var _sqlite3_prepare_v2=Module[\"_sqlite3_prepare_v2\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare_v2=Module[\"_sqlite3_prepare_v2\"]=wasmExports[\"_a\"])(a0,a1,a2,a3,a4);var _sqlite3_step=Module[\"_sqlite3_step\"]=a0=>(_sqlite3_step=Module[\"_sqlite3_step\"]=wasmExports[\"$a\"])(a0);var _sqlite3_column_int64=Module[\"_sqlite3_column_int64\"]=(a0,a1)=>(_sqlite3_column_int64=Module[\"_sqlite3_column_int64\"]=wasmExports[\"ab\"])(a0,a1);var _sqlite3_reset=Module[\"_sqlite3_reset\"]=a0=>(_sqlite3_reset=Module[\"_sqlite3_reset\"]=wasmExports[\"bb\"])(a0);var _sqlite3_exec=Module[\"_sqlite3_exec\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_exec=Module[\"_sqlite3_exec\"]=wasmExports[\"cb\"])(a0,a1,a2,a3,a4);var _sqlite3_column_int=Module[\"_sqlite3_column_int\"]=(a0,a1)=>(_sqlite3_column_int=Module[\"_sqlite3_column_int\"]=wasmExports[\"db\"])(a0,a1);var _sqlite3_finalize=Module[\"_sqlite3_finalize\"]=a0=>(_sqlite3_finalize=Module[\"_sqlite3_finalize\"]=wasmExports[\"eb\"])(a0);var _sqlite3_deserialize=Module[\"_sqlite3_deserialize\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_deserialize=Module[\"_sqlite3_deserialize\"]=wasmExports[\"fb\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_database_file_object=Module[\"_sqlite3_database_file_object\"]=a0=>(_sqlite3_database_file_object=Module[\"_sqlite3_database_file_object\"]=wasmExports[\"gb\"])(a0);var _sqlite3_backup_init=Module[\"_sqlite3_backup_init\"]=(a0,a1,a2,a3)=>(_sqlite3_backup_init=Module[\"_sqlite3_backup_init\"]=wasmExports[\"hb\"])(a0,a1,a2,a3);var _sqlite3_backup_step=Module[\"_sqlite3_backup_step\"]=(a0,a1)=>(_sqlite3_backup_step=Module[\"_sqlite3_backup_step\"]=wasmExports[\"ib\"])(a0,a1);var _sqlite3_backup_finish=Module[\"_sqlite3_backup_finish\"]=a0=>(_sqlite3_backup_finish=Module[\"_sqlite3_backup_finish\"]=wasmExports[\"jb\"])(a0);var _sqlite3_backup_remaining=Module[\"_sqlite3_backup_remaining\"]=a0=>(_sqlite3_backup_remaining=Module[\"_sqlite3_backup_remaining\"]=wasmExports[\"kb\"])(a0);var _sqlite3_backup_pagecount=Module[\"_sqlite3_backup_pagecount\"]=a0=>(_sqlite3_backup_pagecount=Module[\"_sqlite3_backup_pagecount\"]=wasmExports[\"lb\"])(a0);var _sqlite3_clear_bindings=Module[\"_sqlite3_clear_bindings\"]=a0=>(_sqlite3_clear_bindings=Module[\"_sqlite3_clear_bindings\"]=wasmExports[\"mb\"])(a0);var _sqlite3_value_blob=Module[\"_sqlite3_value_blob\"]=a0=>(_sqlite3_value_blob=Module[\"_sqlite3_value_blob\"]=wasmExports[\"nb\"])(a0);var _sqlite3_value_text=Module[\"_sqlite3_value_text\"]=a0=>(_sqlite3_value_text=Module[\"_sqlite3_value_text\"]=wasmExports[\"ob\"])(a0);var _sqlite3_value_bytes=Module[\"_sqlite3_value_bytes\"]=a0=>(_sqlite3_value_bytes=Module[\"_sqlite3_value_bytes\"]=wasmExports[\"pb\"])(a0);var _sqlite3_value_bytes16=Module[\"_sqlite3_value_bytes16\"]=a0=>(_sqlite3_value_bytes16=Module[\"_sqlite3_value_bytes16\"]=wasmExports[\"qb\"])(a0);var _sqlite3_value_double=Module[\"_sqlite3_value_double\"]=a0=>(_sqlite3_value_double=Module[\"_sqlite3_value_double\"]=wasmExports[\"rb\"])(a0);var _sqlite3_value_int=Module[\"_sqlite3_value_int\"]=a0=>(_sqlite3_value_int=Module[\"_sqlite3_value_int\"]=wasmExports[\"sb\"])(a0);var _sqlite3_value_int64=Module[\"_sqlite3_value_int64\"]=a0=>(_sqlite3_value_int64=Module[\"_sqlite3_value_int64\"]=wasmExports[\"tb\"])(a0);var _sqlite3_value_subtype=Module[\"_sqlite3_value_subtype\"]=a0=>(_sqlite3_value_subtype=Module[\"_sqlite3_value_subtype\"]=wasmExports[\"ub\"])(a0);var _sqlite3_value_pointer=Module[\"_sqlite3_value_pointer\"]=(a0,a1)=>(_sqlite3_value_pointer=Module[\"_sqlite3_value_pointer\"]=wasmExports[\"vb\"])(a0,a1);var _sqlite3_value_text16=Module[\"_sqlite3_value_text16\"]=a0=>(_sqlite3_value_text16=Module[\"_sqlite3_value_text16\"]=wasmExports[\"wb\"])(a0);var _sqlite3_value_text16be=Module[\"_sqlite3_value_text16be\"]=a0=>(_sqlite3_value_text16be=Module[\"_sqlite3_value_text16be\"]=wasmExports[\"xb\"])(a0);var _sqlite3_value_text16le=Module[\"_sqlite3_value_text16le\"]=a0=>(_sqlite3_value_text16le=Module[\"_sqlite3_value_text16le\"]=wasmExports[\"yb\"])(a0);var _sqlite3_value_type=Module[\"_sqlite3_value_type\"]=a0=>(_sqlite3_value_type=Module[\"_sqlite3_value_type\"]=wasmExports[\"zb\"])(a0);var _sqlite3_value_encoding=Module[\"_sqlite3_value_encoding\"]=a0=>(_sqlite3_value_encoding=Module[\"_sqlite3_value_encoding\"]=wasmExports[\"Ab\"])(a0);var _sqlite3_value_nochange=Module[\"_sqlite3_value_nochange\"]=a0=>(_sqlite3_value_nochange=Module[\"_sqlite3_value_nochange\"]=wasmExports[\"Bb\"])(a0);var _sqlite3_value_frombind=Module[\"_sqlite3_value_frombind\"]=a0=>(_sqlite3_value_frombind=Module[\"_sqlite3_value_frombind\"]=wasmExports[\"Cb\"])(a0);var _sqlite3_value_dup=Module[\"_sqlite3_value_dup\"]=a0=>(_sqlite3_value_dup=Module[\"_sqlite3_value_dup\"]=wasmExports[\"Db\"])(a0);var _sqlite3_value_free=Module[\"_sqlite3_value_free\"]=a0=>(_sqlite3_value_free=Module[\"_sqlite3_value_free\"]=wasmExports[\"Eb\"])(a0);var _sqlite3_result_blob=Module[\"_sqlite3_result_blob\"]=(a0,a1,a2,a3)=>(_sqlite3_result_blob=Module[\"_sqlite3_result_blob\"]=wasmExports[\"Fb\"])(a0,a1,a2,a3);var _sqlite3_result_blob64=Module[\"_sqlite3_result_blob64\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_result_blob64=Module[\"_sqlite3_result_blob64\"]=wasmExports[\"Gb\"])(a0,a1,a2,a3,a4);var _sqlite3_result_double=Module[\"_sqlite3_result_double\"]=(a0,a1)=>(_sqlite3_result_double=Module[\"_sqlite3_result_double\"]=wasmExports[\"Hb\"])(a0,a1);var _sqlite3_result_error=Module[\"_sqlite3_result_error\"]=(a0,a1,a2)=>(_sqlite3_result_error=Module[\"_sqlite3_result_error\"]=wasmExports[\"Ib\"])(a0,a1,a2);var _sqlite3_result_error16=Module[\"_sqlite3_result_error16\"]=(a0,a1,a2)=>(_sqlite3_result_error16=Module[\"_sqlite3_result_error16\"]=wasmExports[\"Jb\"])(a0,a1,a2);var _sqlite3_result_int=Module[\"_sqlite3_result_int\"]=(a0,a1)=>(_sqlite3_result_int=Module[\"_sqlite3_result_int\"]=wasmExports[\"Kb\"])(a0,a1);var _sqlite3_result_int64=Module[\"_sqlite3_result_int64\"]=(a0,a1,a2)=>(_sqlite3_result_int64=Module[\"_sqlite3_result_int64\"]=wasmExports[\"Lb\"])(a0,a1,a2);var _sqlite3_result_null=Module[\"_sqlite3_result_null\"]=a0=>(_sqlite3_result_null=Module[\"_sqlite3_result_null\"]=wasmExports[\"Mb\"])(a0);var _sqlite3_result_pointer=Module[\"_sqlite3_result_pointer\"]=(a0,a1,a2,a3)=>(_sqlite3_result_pointer=Module[\"_sqlite3_result_pointer\"]=wasmExports[\"Nb\"])(a0,a1,a2,a3);var _sqlite3_result_subtype=Module[\"_sqlite3_result_subtype\"]=(a0,a1)=>(_sqlite3_result_subtype=Module[\"_sqlite3_result_subtype\"]=wasmExports[\"Ob\"])(a0,a1);var _sqlite3_result_text=Module[\"_sqlite3_result_text\"]=(a0,a1,a2,a3)=>(_sqlite3_result_text=Module[\"_sqlite3_result_text\"]=wasmExports[\"Pb\"])(a0,a1,a2,a3);var _sqlite3_result_text64=Module[\"_sqlite3_result_text64\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_result_text64=Module[\"_sqlite3_result_text64\"]=wasmExports[\"Qb\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_result_text16=Module[\"_sqlite3_result_text16\"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16=Module[\"_sqlite3_result_text16\"]=wasmExports[\"Rb\"])(a0,a1,a2,a3);var _sqlite3_result_text16be=Module[\"_sqlite3_result_text16be\"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16be=Module[\"_sqlite3_result_text16be\"]=wasmExports[\"Sb\"])(a0,a1,a2,a3);var _sqlite3_result_text16le=Module[\"_sqlite3_result_text16le\"]=(a0,a1,a2,a3)=>(_sqlite3_result_text16le=Module[\"_sqlite3_result_text16le\"]=wasmExports[\"Tb\"])(a0,a1,a2,a3);var _sqlite3_result_value=Module[\"_sqlite3_result_value\"]=(a0,a1)=>(_sqlite3_result_value=Module[\"_sqlite3_result_value\"]=wasmExports[\"Ub\"])(a0,a1);var _sqlite3_result_error_toobig=Module[\"_sqlite3_result_error_toobig\"]=a0=>(_sqlite3_result_error_toobig=Module[\"_sqlite3_result_error_toobig\"]=wasmExports[\"Vb\"])(a0);var _sqlite3_result_zeroblob=Module[\"_sqlite3_result_zeroblob\"]=(a0,a1)=>(_sqlite3_result_zeroblob=Module[\"_sqlite3_result_zeroblob\"]=wasmExports[\"Wb\"])(a0,a1);var _sqlite3_result_zeroblob64=Module[\"_sqlite3_result_zeroblob64\"]=(a0,a1,a2)=>(_sqlite3_result_zeroblob64=Module[\"_sqlite3_result_zeroblob64\"]=wasmExports[\"Xb\"])(a0,a1,a2);var _sqlite3_result_error_code=Module[\"_sqlite3_result_error_code\"]=(a0,a1)=>(_sqlite3_result_error_code=Module[\"_sqlite3_result_error_code\"]=wasmExports[\"Yb\"])(a0,a1);var _sqlite3_result_error_nomem=Module[\"_sqlite3_result_error_nomem\"]=a0=>(_sqlite3_result_error_nomem=Module[\"_sqlite3_result_error_nomem\"]=wasmExports[\"Zb\"])(a0);var _sqlite3_user_data=Module[\"_sqlite3_user_data\"]=a0=>(_sqlite3_user_data=Module[\"_sqlite3_user_data\"]=wasmExports[\"_b\"])(a0);var _sqlite3_context_db_handle=Module[\"_sqlite3_context_db_handle\"]=a0=>(_sqlite3_context_db_handle=Module[\"_sqlite3_context_db_handle\"]=wasmExports[\"$b\"])(a0);var _sqlite3_vtab_nochange=Module[\"_sqlite3_vtab_nochange\"]=a0=>(_sqlite3_vtab_nochange=Module[\"_sqlite3_vtab_nochange\"]=wasmExports[\"ac\"])(a0);var _sqlite3_vtab_in_first=Module[\"_sqlite3_vtab_in_first\"]=(a0,a1)=>(_sqlite3_vtab_in_first=Module[\"_sqlite3_vtab_in_first\"]=wasmExports[\"bc\"])(a0,a1);var _sqlite3_vtab_in_next=Module[\"_sqlite3_vtab_in_next\"]=(a0,a1)=>(_sqlite3_vtab_in_next=Module[\"_sqlite3_vtab_in_next\"]=wasmExports[\"cc\"])(a0,a1);var _sqlite3_aggregate_context=Module[\"_sqlite3_aggregate_context\"]=(a0,a1)=>(_sqlite3_aggregate_context=Module[\"_sqlite3_aggregate_context\"]=wasmExports[\"dc\"])(a0,a1);var _sqlite3_get_auxdata=Module[\"_sqlite3_get_auxdata\"]=(a0,a1)=>(_sqlite3_get_auxdata=Module[\"_sqlite3_get_auxdata\"]=wasmExports[\"ec\"])(a0,a1);var _sqlite3_set_auxdata=Module[\"_sqlite3_set_auxdata\"]=(a0,a1,a2,a3)=>(_sqlite3_set_auxdata=Module[\"_sqlite3_set_auxdata\"]=wasmExports[\"fc\"])(a0,a1,a2,a3);var _sqlite3_column_count=Module[\"_sqlite3_column_count\"]=a0=>(_sqlite3_column_count=Module[\"_sqlite3_column_count\"]=wasmExports[\"gc\"])(a0);var _sqlite3_data_count=Module[\"_sqlite3_data_count\"]=a0=>(_sqlite3_data_count=Module[\"_sqlite3_data_count\"]=wasmExports[\"hc\"])(a0);var _sqlite3_column_blob=Module[\"_sqlite3_column_blob\"]=(a0,a1)=>(_sqlite3_column_blob=Module[\"_sqlite3_column_blob\"]=wasmExports[\"ic\"])(a0,a1);var _sqlite3_column_bytes=Module[\"_sqlite3_column_bytes\"]=(a0,a1)=>(_sqlite3_column_bytes=Module[\"_sqlite3_column_bytes\"]=wasmExports[\"jc\"])(a0,a1);var _sqlite3_column_bytes16=Module[\"_sqlite3_column_bytes16\"]=(a0,a1)=>(_sqlite3_column_bytes16=Module[\"_sqlite3_column_bytes16\"]=wasmExports[\"kc\"])(a0,a1);var _sqlite3_column_double=Module[\"_sqlite3_column_double\"]=(a0,a1)=>(_sqlite3_column_double=Module[\"_sqlite3_column_double\"]=wasmExports[\"lc\"])(a0,a1);var _sqlite3_column_text=Module[\"_sqlite3_column_text\"]=(a0,a1)=>(_sqlite3_column_text=Module[\"_sqlite3_column_text\"]=wasmExports[\"mc\"])(a0,a1);var _sqlite3_column_value=Module[\"_sqlite3_column_value\"]=(a0,a1)=>(_sqlite3_column_value=Module[\"_sqlite3_column_value\"]=wasmExports[\"nc\"])(a0,a1);var _sqlite3_column_text16=Module[\"_sqlite3_column_text16\"]=(a0,a1)=>(_sqlite3_column_text16=Module[\"_sqlite3_column_text16\"]=wasmExports[\"oc\"])(a0,a1);var _sqlite3_column_type=Module[\"_sqlite3_column_type\"]=(a0,a1)=>(_sqlite3_column_type=Module[\"_sqlite3_column_type\"]=wasmExports[\"pc\"])(a0,a1);var _sqlite3_column_name=Module[\"_sqlite3_column_name\"]=(a0,a1)=>(_sqlite3_column_name=Module[\"_sqlite3_column_name\"]=wasmExports[\"qc\"])(a0,a1);var _sqlite3_column_name16=Module[\"_sqlite3_column_name16\"]=(a0,a1)=>(_sqlite3_column_name16=Module[\"_sqlite3_column_name16\"]=wasmExports[\"rc\"])(a0,a1);var _sqlite3_bind_blob=Module[\"_sqlite3_bind_blob\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_blob=Module[\"_sqlite3_bind_blob\"]=wasmExports[\"sc\"])(a0,a1,a2,a3,a4);var _sqlite3_bind_blob64=Module[\"_sqlite3_bind_blob64\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_bind_blob64=Module[\"_sqlite3_bind_blob64\"]=wasmExports[\"tc\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_bind_double=Module[\"_sqlite3_bind_double\"]=(a0,a1,a2)=>(_sqlite3_bind_double=Module[\"_sqlite3_bind_double\"]=wasmExports[\"uc\"])(a0,a1,a2);var _sqlite3_bind_int=Module[\"_sqlite3_bind_int\"]=(a0,a1,a2)=>(_sqlite3_bind_int=Module[\"_sqlite3_bind_int\"]=wasmExports[\"vc\"])(a0,a1,a2);var _sqlite3_bind_int64=Module[\"_sqlite3_bind_int64\"]=(a0,a1,a2,a3)=>(_sqlite3_bind_int64=Module[\"_sqlite3_bind_int64\"]=wasmExports[\"wc\"])(a0,a1,a2,a3);var _sqlite3_bind_null=Module[\"_sqlite3_bind_null\"]=(a0,a1)=>(_sqlite3_bind_null=Module[\"_sqlite3_bind_null\"]=wasmExports[\"xc\"])(a0,a1);var _sqlite3_bind_pointer=Module[\"_sqlite3_bind_pointer\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_pointer=Module[\"_sqlite3_bind_pointer\"]=wasmExports[\"yc\"])(a0,a1,a2,a3,a4);var _sqlite3_bind_text=Module[\"_sqlite3_bind_text\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_text=Module[\"_sqlite3_bind_text\"]=wasmExports[\"zc\"])(a0,a1,a2,a3,a4);var _sqlite3_bind_text64=Module[\"_sqlite3_bind_text64\"]=(a0,a1,a2,a3,a4,a5,a6)=>(_sqlite3_bind_text64=Module[\"_sqlite3_bind_text64\"]=wasmExports[\"Ac\"])(a0,a1,a2,a3,a4,a5,a6);var _sqlite3_bind_text16=Module[\"_sqlite3_bind_text16\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_bind_text16=Module[\"_sqlite3_bind_text16\"]=wasmExports[\"Bc\"])(a0,a1,a2,a3,a4);var _sqlite3_bind_value=Module[\"_sqlite3_bind_value\"]=(a0,a1,a2)=>(_sqlite3_bind_value=Module[\"_sqlite3_bind_value\"]=wasmExports[\"Cc\"])(a0,a1,a2);var _sqlite3_bind_zeroblob=Module[\"_sqlite3_bind_zeroblob\"]=(a0,a1,a2)=>(_sqlite3_bind_zeroblob=Module[\"_sqlite3_bind_zeroblob\"]=wasmExports[\"Dc\"])(a0,a1,a2);var _sqlite3_bind_zeroblob64=Module[\"_sqlite3_bind_zeroblob64\"]=(a0,a1,a2,a3)=>(_sqlite3_bind_zeroblob64=Module[\"_sqlite3_bind_zeroblob64\"]=wasmExports[\"Ec\"])(a0,a1,a2,a3);var _sqlite3_bind_parameter_count=Module[\"_sqlite3_bind_parameter_count\"]=a0=>(_sqlite3_bind_parameter_count=Module[\"_sqlite3_bind_parameter_count\"]=wasmExports[\"Fc\"])(a0);var _sqlite3_bind_parameter_name=Module[\"_sqlite3_bind_parameter_name\"]=(a0,a1)=>(_sqlite3_bind_parameter_name=Module[\"_sqlite3_bind_parameter_name\"]=wasmExports[\"Gc\"])(a0,a1);var _sqlite3_bind_parameter_index=Module[\"_sqlite3_bind_parameter_index\"]=(a0,a1)=>(_sqlite3_bind_parameter_index=Module[\"_sqlite3_bind_parameter_index\"]=wasmExports[\"Hc\"])(a0,a1);var _sqlite3_db_handle=Module[\"_sqlite3_db_handle\"]=a0=>(_sqlite3_db_handle=Module[\"_sqlite3_db_handle\"]=wasmExports[\"Ic\"])(a0);var _sqlite3_stmt_readonly=Module[\"_sqlite3_stmt_readonly\"]=a0=>(_sqlite3_stmt_readonly=Module[\"_sqlite3_stmt_readonly\"]=wasmExports[\"Jc\"])(a0);var _sqlite3_stmt_isexplain=Module[\"_sqlite3_stmt_isexplain\"]=a0=>(_sqlite3_stmt_isexplain=Module[\"_sqlite3_stmt_isexplain\"]=wasmExports[\"Kc\"])(a0);var _sqlite3_stmt_explain=Module[\"_sqlite3_stmt_explain\"]=(a0,a1)=>(_sqlite3_stmt_explain=Module[\"_sqlite3_stmt_explain\"]=wasmExports[\"Lc\"])(a0,a1);var _sqlite3_stmt_busy=Module[\"_sqlite3_stmt_busy\"]=a0=>(_sqlite3_stmt_busy=Module[\"_sqlite3_stmt_busy\"]=wasmExports[\"Mc\"])(a0);var _sqlite3_next_stmt=Module[\"_sqlite3_next_stmt\"]=(a0,a1)=>(_sqlite3_next_stmt=Module[\"_sqlite3_next_stmt\"]=wasmExports[\"Nc\"])(a0,a1);var _sqlite3_stmt_status=Module[\"_sqlite3_stmt_status\"]=(a0,a1,a2)=>(_sqlite3_stmt_status=Module[\"_sqlite3_stmt_status\"]=wasmExports[\"Oc\"])(a0,a1,a2);var _sqlite3_sql=Module[\"_sqlite3_sql\"]=a0=>(_sqlite3_sql=Module[\"_sqlite3_sql\"]=wasmExports[\"Pc\"])(a0);var _sqlite3_expanded_sql=Module[\"_sqlite3_expanded_sql\"]=a0=>(_sqlite3_expanded_sql=Module[\"_sqlite3_expanded_sql\"]=wasmExports[\"Qc\"])(a0);var _sqlite3_value_numeric_type=Module[\"_sqlite3_value_numeric_type\"]=a0=>(_sqlite3_value_numeric_type=Module[\"_sqlite3_value_numeric_type\"]=wasmExports[\"Rc\"])(a0);var _sqlite3_blob_open=Module[\"_sqlite3_blob_open\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_blob_open=Module[\"_sqlite3_blob_open\"]=wasmExports[\"Sc\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_blob_close=Module[\"_sqlite3_blob_close\"]=a0=>(_sqlite3_blob_close=Module[\"_sqlite3_blob_close\"]=wasmExports[\"Tc\"])(a0);var _sqlite3_blob_read=Module[\"_sqlite3_blob_read\"]=(a0,a1,a2,a3)=>(_sqlite3_blob_read=Module[\"_sqlite3_blob_read\"]=wasmExports[\"Uc\"])(a0,a1,a2,a3);var _sqlite3_blob_write=Module[\"_sqlite3_blob_write\"]=(a0,a1,a2,a3)=>(_sqlite3_blob_write=Module[\"_sqlite3_blob_write\"]=wasmExports[\"Vc\"])(a0,a1,a2,a3);var _sqlite3_blob_bytes=Module[\"_sqlite3_blob_bytes\"]=a0=>(_sqlite3_blob_bytes=Module[\"_sqlite3_blob_bytes\"]=wasmExports[\"Wc\"])(a0);var _sqlite3_blob_reopen=Module[\"_sqlite3_blob_reopen\"]=(a0,a1,a2)=>(_sqlite3_blob_reopen=Module[\"_sqlite3_blob_reopen\"]=wasmExports[\"Xc\"])(a0,a1,a2);var _sqlite3_set_authorizer=Module[\"_sqlite3_set_authorizer\"]=(a0,a1,a2)=>(_sqlite3_set_authorizer=Module[\"_sqlite3_set_authorizer\"]=wasmExports[\"Yc\"])(a0,a1,a2);var _sqlite3_strglob=Module[\"_sqlite3_strglob\"]=(a0,a1)=>(_sqlite3_strglob=Module[\"_sqlite3_strglob\"]=wasmExports[\"Zc\"])(a0,a1);var _sqlite3_strlike=Module[\"_sqlite3_strlike\"]=(a0,a1,a2)=>(_sqlite3_strlike=Module[\"_sqlite3_strlike\"]=wasmExports[\"_c\"])(a0,a1,a2);var _sqlite3_errmsg=Module[\"_sqlite3_errmsg\"]=a0=>(_sqlite3_errmsg=Module[\"_sqlite3_errmsg\"]=wasmExports[\"$c\"])(a0);var _sqlite3_auto_extension=Module[\"_sqlite3_auto_extension\"]=a0=>(_sqlite3_auto_extension=Module[\"_sqlite3_auto_extension\"]=wasmExports[\"ad\"])(a0);var _sqlite3_cancel_auto_extension=Module[\"_sqlite3_cancel_auto_extension\"]=a0=>(_sqlite3_cancel_auto_extension=Module[\"_sqlite3_cancel_auto_extension\"]=wasmExports[\"bd\"])(a0);var _sqlite3_reset_auto_extension=Module[\"_sqlite3_reset_auto_extension\"]=()=>(_sqlite3_reset_auto_extension=Module[\"_sqlite3_reset_auto_extension\"]=wasmExports[\"cd\"])();var _sqlite3_prepare=Module[\"_sqlite3_prepare\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare=Module[\"_sqlite3_prepare\"]=wasmExports[\"dd\"])(a0,a1,a2,a3,a4);var _sqlite3_prepare_v3=Module[\"_sqlite3_prepare_v3\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_prepare_v3=Module[\"_sqlite3_prepare_v3\"]=wasmExports[\"ed\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_prepare16=Module[\"_sqlite3_prepare16\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare16=Module[\"_sqlite3_prepare16\"]=wasmExports[\"fd\"])(a0,a1,a2,a3,a4);var _sqlite3_prepare16_v2=Module[\"_sqlite3_prepare16_v2\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_prepare16_v2=Module[\"_sqlite3_prepare16_v2\"]=wasmExports[\"gd\"])(a0,a1,a2,a3,a4);var _sqlite3_prepare16_v3=Module[\"_sqlite3_prepare16_v3\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_prepare16_v3=Module[\"_sqlite3_prepare16_v3\"]=wasmExports[\"hd\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_get_table=Module[\"_sqlite3_get_table\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_get_table=Module[\"_sqlite3_get_table\"]=wasmExports[\"id\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_free_table=Module[\"_sqlite3_free_table\"]=a0=>(_sqlite3_free_table=Module[\"_sqlite3_free_table\"]=wasmExports[\"jd\"])(a0);var _sqlite3_create_module=Module[\"_sqlite3_create_module\"]=(a0,a1,a2,a3)=>(_sqlite3_create_module=Module[\"_sqlite3_create_module\"]=wasmExports[\"kd\"])(a0,a1,a2,a3);var _sqlite3_create_module_v2=Module[\"_sqlite3_create_module_v2\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_module_v2=Module[\"_sqlite3_create_module_v2\"]=wasmExports[\"ld\"])(a0,a1,a2,a3,a4);var _sqlite3_drop_modules=Module[\"_sqlite3_drop_modules\"]=(a0,a1)=>(_sqlite3_drop_modules=Module[\"_sqlite3_drop_modules\"]=wasmExports[\"md\"])(a0,a1);var _sqlite3_declare_vtab=Module[\"_sqlite3_declare_vtab\"]=(a0,a1)=>(_sqlite3_declare_vtab=Module[\"_sqlite3_declare_vtab\"]=wasmExports[\"nd\"])(a0,a1);var _sqlite3_vtab_on_conflict=Module[\"_sqlite3_vtab_on_conflict\"]=a0=>(_sqlite3_vtab_on_conflict=Module[\"_sqlite3_vtab_on_conflict\"]=wasmExports[\"od\"])(a0);var _sqlite3_vtab_config=Module[\"_sqlite3_vtab_config\"]=(a0,a1,a2)=>(_sqlite3_vtab_config=Module[\"_sqlite3_vtab_config\"]=wasmExports[\"pd\"])(a0,a1,a2);var _sqlite3_vtab_collation=Module[\"_sqlite3_vtab_collation\"]=(a0,a1)=>(_sqlite3_vtab_collation=Module[\"_sqlite3_vtab_collation\"]=wasmExports[\"qd\"])(a0,a1);var _sqlite3_vtab_in=Module[\"_sqlite3_vtab_in\"]=(a0,a1,a2)=>(_sqlite3_vtab_in=Module[\"_sqlite3_vtab_in\"]=wasmExports[\"rd\"])(a0,a1,a2);var _sqlite3_vtab_rhs_value=Module[\"_sqlite3_vtab_rhs_value\"]=(a0,a1,a2)=>(_sqlite3_vtab_rhs_value=Module[\"_sqlite3_vtab_rhs_value\"]=wasmExports[\"sd\"])(a0,a1,a2);var _sqlite3_vtab_distinct=Module[\"_sqlite3_vtab_distinct\"]=a0=>(_sqlite3_vtab_distinct=Module[\"_sqlite3_vtab_distinct\"]=wasmExports[\"td\"])(a0);var _sqlite3_keyword_name=Module[\"_sqlite3_keyword_name\"]=(a0,a1,a2)=>(_sqlite3_keyword_name=Module[\"_sqlite3_keyword_name\"]=wasmExports[\"ud\"])(a0,a1,a2);var _sqlite3_keyword_count=Module[\"_sqlite3_keyword_count\"]=()=>(_sqlite3_keyword_count=Module[\"_sqlite3_keyword_count\"]=wasmExports[\"vd\"])();var _sqlite3_keyword_check=Module[\"_sqlite3_keyword_check\"]=(a0,a1)=>(_sqlite3_keyword_check=Module[\"_sqlite3_keyword_check\"]=wasmExports[\"wd\"])(a0,a1);var _sqlite3_complete=Module[\"_sqlite3_complete\"]=a0=>(_sqlite3_complete=Module[\"_sqlite3_complete\"]=wasmExports[\"xd\"])(a0);var _sqlite3_complete16=Module[\"_sqlite3_complete16\"]=a0=>(_sqlite3_complete16=Module[\"_sqlite3_complete16\"]=wasmExports[\"yd\"])(a0);var _sqlite3_libversion=Module[\"_sqlite3_libversion\"]=()=>(_sqlite3_libversion=Module[\"_sqlite3_libversion\"]=wasmExports[\"zd\"])();var _sqlite3_libversion_number=Module[\"_sqlite3_libversion_number\"]=()=>(_sqlite3_libversion_number=Module[\"_sqlite3_libversion_number\"]=wasmExports[\"Ad\"])();var _sqlite3_threadsafe=Module[\"_sqlite3_threadsafe\"]=()=>(_sqlite3_threadsafe=Module[\"_sqlite3_threadsafe\"]=wasmExports[\"Bd\"])();var _sqlite3_initialize=Module[\"_sqlite3_initialize\"]=()=>(_sqlite3_initialize=Module[\"_sqlite3_initialize\"]=wasmExports[\"Cd\"])();var _sqlite3_shutdown=Module[\"_sqlite3_shutdown\"]=()=>(_sqlite3_shutdown=Module[\"_sqlite3_shutdown\"]=wasmExports[\"Dd\"])();var _sqlite3_config=Module[\"_sqlite3_config\"]=(a0,a1)=>(_sqlite3_config=Module[\"_sqlite3_config\"]=wasmExports[\"Ed\"])(a0,a1);var _sqlite3_db_mutex=Module[\"_sqlite3_db_mutex\"]=a0=>(_sqlite3_db_mutex=Module[\"_sqlite3_db_mutex\"]=wasmExports[\"Fd\"])(a0);var _sqlite3_db_release_memory=Module[\"_sqlite3_db_release_memory\"]=a0=>(_sqlite3_db_release_memory=Module[\"_sqlite3_db_release_memory\"]=wasmExports[\"Gd\"])(a0);var _sqlite3_db_cacheflush=Module[\"_sqlite3_db_cacheflush\"]=a0=>(_sqlite3_db_cacheflush=Module[\"_sqlite3_db_cacheflush\"]=wasmExports[\"Hd\"])(a0);var _sqlite3_db_config=Module[\"_sqlite3_db_config\"]=(a0,a1,a2)=>(_sqlite3_db_config=Module[\"_sqlite3_db_config\"]=wasmExports[\"Id\"])(a0,a1,a2);var _sqlite3_last_insert_rowid=Module[\"_sqlite3_last_insert_rowid\"]=a0=>(_sqlite3_last_insert_rowid=Module[\"_sqlite3_last_insert_rowid\"]=wasmExports[\"Jd\"])(a0);var _sqlite3_set_last_insert_rowid=Module[\"_sqlite3_set_last_insert_rowid\"]=(a0,a1,a2)=>(_sqlite3_set_last_insert_rowid=Module[\"_sqlite3_set_last_insert_rowid\"]=wasmExports[\"Kd\"])(a0,a1,a2);var _sqlite3_changes64=Module[\"_sqlite3_changes64\"]=a0=>(_sqlite3_changes64=Module[\"_sqlite3_changes64\"]=wasmExports[\"Ld\"])(a0);var _sqlite3_changes=Module[\"_sqlite3_changes\"]=a0=>(_sqlite3_changes=Module[\"_sqlite3_changes\"]=wasmExports[\"Md\"])(a0);var _sqlite3_total_changes64=Module[\"_sqlite3_total_changes64\"]=a0=>(_sqlite3_total_changes64=Module[\"_sqlite3_total_changes64\"]=wasmExports[\"Nd\"])(a0);var _sqlite3_total_changes=Module[\"_sqlite3_total_changes\"]=a0=>(_sqlite3_total_changes=Module[\"_sqlite3_total_changes\"]=wasmExports[\"Od\"])(a0);var _sqlite3_txn_state=Module[\"_sqlite3_txn_state\"]=(a0,a1)=>(_sqlite3_txn_state=Module[\"_sqlite3_txn_state\"]=wasmExports[\"Pd\"])(a0,a1);var _sqlite3_close=Module[\"_sqlite3_close\"]=a0=>(_sqlite3_close=Module[\"_sqlite3_close\"]=wasmExports[\"Qd\"])(a0);var _sqlite3_close_v2=Module[\"_sqlite3_close_v2\"]=a0=>(_sqlite3_close_v2=Module[\"_sqlite3_close_v2\"]=wasmExports[\"Rd\"])(a0);var _sqlite3_busy_handler=Module[\"_sqlite3_busy_handler\"]=(a0,a1,a2)=>(_sqlite3_busy_handler=Module[\"_sqlite3_busy_handler\"]=wasmExports[\"Sd\"])(a0,a1,a2);var _sqlite3_progress_handler=Module[\"_sqlite3_progress_handler\"]=(a0,a1,a2,a3)=>(_sqlite3_progress_handler=Module[\"_sqlite3_progress_handler\"]=wasmExports[\"Td\"])(a0,a1,a2,a3);var _sqlite3_busy_timeout=Module[\"_sqlite3_busy_timeout\"]=(a0,a1)=>(_sqlite3_busy_timeout=Module[\"_sqlite3_busy_timeout\"]=wasmExports[\"Ud\"])(a0,a1);var _sqlite3_interrupt=Module[\"_sqlite3_interrupt\"]=a0=>(_sqlite3_interrupt=Module[\"_sqlite3_interrupt\"]=wasmExports[\"Vd\"])(a0);var _sqlite3_is_interrupted=Module[\"_sqlite3_is_interrupted\"]=a0=>(_sqlite3_is_interrupted=Module[\"_sqlite3_is_interrupted\"]=wasmExports[\"Wd\"])(a0);var _sqlite3_create_function=Module[\"_sqlite3_create_function\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_create_function=Module[\"_sqlite3_create_function\"]=wasmExports[\"Xd\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_create_function_v2=Module[\"_sqlite3_create_function_v2\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(_sqlite3_create_function_v2=Module[\"_sqlite3_create_function_v2\"]=wasmExports[\"Yd\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var _sqlite3_create_window_function=Module[\"_sqlite3_create_window_function\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(_sqlite3_create_window_function=Module[\"_sqlite3_create_window_function\"]=wasmExports[\"Zd\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);var _sqlite3_create_function16=Module[\"_sqlite3_create_function16\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_sqlite3_create_function16=Module[\"_sqlite3_create_function16\"]=wasmExports[\"_d\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _sqlite3_overload_function=Module[\"_sqlite3_overload_function\"]=(a0,a1,a2)=>(_sqlite3_overload_function=Module[\"_sqlite3_overload_function\"]=wasmExports[\"$d\"])(a0,a1,a2);var _sqlite3_trace_v2=Module[\"_sqlite3_trace_v2\"]=(a0,a1,a2,a3)=>(_sqlite3_trace_v2=Module[\"_sqlite3_trace_v2\"]=wasmExports[\"ae\"])(a0,a1,a2,a3);var _sqlite3_commit_hook=Module[\"_sqlite3_commit_hook\"]=(a0,a1,a2)=>(_sqlite3_commit_hook=Module[\"_sqlite3_commit_hook\"]=wasmExports[\"be\"])(a0,a1,a2);var _sqlite3_update_hook=Module[\"_sqlite3_update_hook\"]=(a0,a1,a2)=>(_sqlite3_update_hook=Module[\"_sqlite3_update_hook\"]=wasmExports[\"ce\"])(a0,a1,a2);var _sqlite3_rollback_hook=Module[\"_sqlite3_rollback_hook\"]=(a0,a1,a2)=>(_sqlite3_rollback_hook=Module[\"_sqlite3_rollback_hook\"]=wasmExports[\"de\"])(a0,a1,a2);var _sqlite3_autovacuum_pages=Module[\"_sqlite3_autovacuum_pages\"]=(a0,a1,a2,a3)=>(_sqlite3_autovacuum_pages=Module[\"_sqlite3_autovacuum_pages\"]=wasmExports[\"ee\"])(a0,a1,a2,a3);var _sqlite3_wal_autocheckpoint=Module[\"_sqlite3_wal_autocheckpoint\"]=(a0,a1)=>(_sqlite3_wal_autocheckpoint=Module[\"_sqlite3_wal_autocheckpoint\"]=wasmExports[\"fe\"])(a0,a1);var _sqlite3_wal_hook=Module[\"_sqlite3_wal_hook\"]=(a0,a1,a2)=>(_sqlite3_wal_hook=Module[\"_sqlite3_wal_hook\"]=wasmExports[\"ge\"])(a0,a1,a2);var _sqlite3_wal_checkpoint_v2=Module[\"_sqlite3_wal_checkpoint_v2\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_wal_checkpoint_v2=Module[\"_sqlite3_wal_checkpoint_v2\"]=wasmExports[\"he\"])(a0,a1,a2,a3,a4);var _sqlite3_wal_checkpoint=Module[\"_sqlite3_wal_checkpoint\"]=(a0,a1)=>(_sqlite3_wal_checkpoint=Module[\"_sqlite3_wal_checkpoint\"]=wasmExports[\"ie\"])(a0,a1);var _sqlite3_error_offset=Module[\"_sqlite3_error_offset\"]=a0=>(_sqlite3_error_offset=Module[\"_sqlite3_error_offset\"]=wasmExports[\"je\"])(a0);var _sqlite3_errmsg16=Module[\"_sqlite3_errmsg16\"]=a0=>(_sqlite3_errmsg16=Module[\"_sqlite3_errmsg16\"]=wasmExports[\"ke\"])(a0);var _sqlite3_errcode=Module[\"_sqlite3_errcode\"]=a0=>(_sqlite3_errcode=Module[\"_sqlite3_errcode\"]=wasmExports[\"le\"])(a0);var _sqlite3_extended_errcode=Module[\"_sqlite3_extended_errcode\"]=a0=>(_sqlite3_extended_errcode=Module[\"_sqlite3_extended_errcode\"]=wasmExports[\"me\"])(a0);var _sqlite3_system_errno=Module[\"_sqlite3_system_errno\"]=a0=>(_sqlite3_system_errno=Module[\"_sqlite3_system_errno\"]=wasmExports[\"ne\"])(a0);var _sqlite3_errstr=Module[\"_sqlite3_errstr\"]=a0=>(_sqlite3_errstr=Module[\"_sqlite3_errstr\"]=wasmExports[\"oe\"])(a0);var _sqlite3_limit=Module[\"_sqlite3_limit\"]=(a0,a1,a2)=>(_sqlite3_limit=Module[\"_sqlite3_limit\"]=wasmExports[\"pe\"])(a0,a1,a2);var _sqlite3_open=Module[\"_sqlite3_open\"]=(a0,a1)=>(_sqlite3_open=Module[\"_sqlite3_open\"]=wasmExports[\"qe\"])(a0,a1);var _sqlite3_open_v2=Module[\"_sqlite3_open_v2\"]=(a0,a1,a2,a3)=>(_sqlite3_open_v2=Module[\"_sqlite3_open_v2\"]=wasmExports[\"re\"])(a0,a1,a2,a3);var _sqlite3_open16=Module[\"_sqlite3_open16\"]=(a0,a1)=>(_sqlite3_open16=Module[\"_sqlite3_open16\"]=wasmExports[\"se\"])(a0,a1);var _sqlite3_create_collation=Module[\"_sqlite3_create_collation\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_collation=Module[\"_sqlite3_create_collation\"]=wasmExports[\"te\"])(a0,a1,a2,a3,a4);var _sqlite3_create_collation_v2=Module[\"_sqlite3_create_collation_v2\"]=(a0,a1,a2,a3,a4,a5)=>(_sqlite3_create_collation_v2=Module[\"_sqlite3_create_collation_v2\"]=wasmExports[\"ue\"])(a0,a1,a2,a3,a4,a5);var _sqlite3_create_collation16=Module[\"_sqlite3_create_collation16\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_collation16=Module[\"_sqlite3_create_collation16\"]=wasmExports[\"ve\"])(a0,a1,a2,a3,a4);var _sqlite3_collation_needed=Module[\"_sqlite3_collation_needed\"]=(a0,a1,a2)=>(_sqlite3_collation_needed=Module[\"_sqlite3_collation_needed\"]=wasmExports[\"we\"])(a0,a1,a2);var _sqlite3_collation_needed16=Module[\"_sqlite3_collation_needed16\"]=(a0,a1,a2)=>(_sqlite3_collation_needed16=Module[\"_sqlite3_collation_needed16\"]=wasmExports[\"xe\"])(a0,a1,a2);var _sqlite3_get_clientdata=Module[\"_sqlite3_get_clientdata\"]=(a0,a1)=>(_sqlite3_get_clientdata=Module[\"_sqlite3_get_clientdata\"]=wasmExports[\"ye\"])(a0,a1);var _sqlite3_set_clientdata=Module[\"_sqlite3_set_clientdata\"]=(a0,a1,a2,a3)=>(_sqlite3_set_clientdata=Module[\"_sqlite3_set_clientdata\"]=wasmExports[\"ze\"])(a0,a1,a2,a3);var _sqlite3_get_autocommit=Module[\"_sqlite3_get_autocommit\"]=a0=>(_sqlite3_get_autocommit=Module[\"_sqlite3_get_autocommit\"]=wasmExports[\"Ae\"])(a0);var _sqlite3_table_column_metadata=Module[\"_sqlite3_table_column_metadata\"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(_sqlite3_table_column_metadata=Module[\"_sqlite3_table_column_metadata\"]=wasmExports[\"Be\"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var _sqlite3_sleep=Module[\"_sqlite3_sleep\"]=a0=>(_sqlite3_sleep=Module[\"_sqlite3_sleep\"]=wasmExports[\"Ce\"])(a0);var _sqlite3_extended_result_codes=Module[\"_sqlite3_extended_result_codes\"]=(a0,a1)=>(_sqlite3_extended_result_codes=Module[\"_sqlite3_extended_result_codes\"]=wasmExports[\"De\"])(a0,a1);var _sqlite3_file_control=Module[\"_sqlite3_file_control\"]=(a0,a1,a2,a3)=>(_sqlite3_file_control=Module[\"_sqlite3_file_control\"]=wasmExports[\"Ee\"])(a0,a1,a2,a3);var _sqlite3_test_control=Module[\"_sqlite3_test_control\"]=(a0,a1)=>(_sqlite3_test_control=Module[\"_sqlite3_test_control\"]=wasmExports[\"Fe\"])(a0,a1);var _sqlite3_create_filename=Module[\"_sqlite3_create_filename\"]=(a0,a1,a2,a3,a4)=>(_sqlite3_create_filename=Module[\"_sqlite3_create_filename\"]=wasmExports[\"Ge\"])(a0,a1,a2,a3,a4);var _sqlite3_free_filename=Module[\"_sqlite3_free_filename\"]=a0=>(_sqlite3_free_filename=Module[\"_sqlite3_free_filename\"]=wasmExports[\"He\"])(a0);var _sqlite3_uri_parameter=Module[\"_sqlite3_uri_parameter\"]=(a0,a1)=>(_sqlite3_uri_parameter=Module[\"_sqlite3_uri_parameter\"]=wasmExports[\"Ie\"])(a0,a1);var _sqlite3_uri_key=Module[\"_sqlite3_uri_key\"]=(a0,a1)=>(_sqlite3_uri_key=Module[\"_sqlite3_uri_key\"]=wasmExports[\"Je\"])(a0,a1);var _sqlite3_uri_boolean=Module[\"_sqlite3_uri_boolean\"]=(a0,a1,a2)=>(_sqlite3_uri_boolean=Module[\"_sqlite3_uri_boolean\"]=wasmExports[\"Ke\"])(a0,a1,a2);var _sqlite3_uri_int64=Module[\"_sqlite3_uri_int64\"]=(a0,a1,a2,a3)=>(_sqlite3_uri_int64=Module[\"_sqlite3_uri_int64\"]=wasmExports[\"Le\"])(a0,a1,a2,a3);var _sqlite3_filename_database=Module[\"_sqlite3_filename_database\"]=a0=>(_sqlite3_filename_database=Module[\"_sqlite3_filename_database\"]=wasmExports[\"Me\"])(a0);var _sqlite3_filename_journal=Module[\"_sqlite3_filename_journal\"]=a0=>(_sqlite3_filename_journal=Module[\"_sqlite3_filename_journal\"]=wasmExports[\"Ne\"])(a0);var _sqlite3_filename_wal=Module[\"_sqlite3_filename_wal\"]=a0=>(_sqlite3_filename_wal=Module[\"_sqlite3_filename_wal\"]=wasmExports[\"Oe\"])(a0);var _sqlite3_db_name=Module[\"_sqlite3_db_name\"]=(a0,a1)=>(_sqlite3_db_name=Module[\"_sqlite3_db_name\"]=wasmExports[\"Pe\"])(a0,a1);var _sqlite3_db_filename=Module[\"_sqlite3_db_filename\"]=(a0,a1)=>(_sqlite3_db_filename=Module[\"_sqlite3_db_filename\"]=wasmExports[\"Qe\"])(a0,a1);var _sqlite3_db_readonly=Module[\"_sqlite3_db_readonly\"]=(a0,a1)=>(_sqlite3_db_readonly=Module[\"_sqlite3_db_readonly\"]=wasmExports[\"Re\"])(a0,a1);var _sqlite3_compileoption_used=Module[\"_sqlite3_compileoption_used\"]=a0=>(_sqlite3_compileoption_used=Module[\"_sqlite3_compileoption_used\"]=wasmExports[\"Se\"])(a0);var _sqlite3_compileoption_get=Module[\"_sqlite3_compileoption_get\"]=a0=>(_sqlite3_compileoption_get=Module[\"_sqlite3_compileoption_get\"]=wasmExports[\"Te\"])(a0);var _sqlite3_sourceid=Module[\"_sqlite3_sourceid\"]=()=>(_sqlite3_sourceid=Module[\"_sqlite3_sourceid\"]=wasmExports[\"Ue\"])();var _malloc=Module[\"_malloc\"]=a0=>(_malloc=Module[\"_malloc\"]=wasmExports[\"Ve\"])(a0);var _free=Module[\"_free\"]=a0=>(_free=Module[\"_free\"]=wasmExports[\"We\"])(a0);var _RegisterExtensionFunctions=Module[\"_RegisterExtensionFunctions\"]=a0=>(_RegisterExtensionFunctions=Module[\"_RegisterExtensionFunctions\"]=wasmExports[\"Xe\"])(a0);var _getSqliteFree=Module[\"_getSqliteFree\"]=()=>(_getSqliteFree=Module[\"_getSqliteFree\"]=wasmExports[\"Ye\"])();var _main=Module[\"_main\"]=(a0,a1)=>(_main=Module[\"_main\"]=wasmExports[\"Ze\"])(a0,a1);var _libauthorizer_set_authorizer=Module[\"_libauthorizer_set_authorizer\"]=(a0,a1,a2)=>(_libauthorizer_set_authorizer=Module[\"_libauthorizer_set_authorizer\"]=wasmExports[\"_e\"])(a0,a1,a2);var _libfunction_create_function=Module[\"_libfunction_create_function\"]=(a0,a1,a2,a3,a4,a5,a6,a7)=>(_libfunction_create_function=Module[\"_libfunction_create_function\"]=wasmExports[\"$e\"])(a0,a1,a2,a3,a4,a5,a6,a7);var _libhook_commit_hook=Module[\"_libhook_commit_hook\"]=(a0,a1,a2)=>(_libhook_commit_hook=Module[\"_libhook_commit_hook\"]=wasmExports[\"af\"])(a0,a1,a2);var _libhook_update_hook=Module[\"_libhook_update_hook\"]=(a0,a1,a2)=>(_libhook_update_hook=Module[\"_libhook_update_hook\"]=wasmExports[\"bf\"])(a0,a1,a2);var _libprogress_progress_handler=Module[\"_libprogress_progress_handler\"]=(a0,a1,a2,a3)=>(_libprogress_progress_handler=Module[\"_libprogress_progress_handler\"]=wasmExports[\"cf\"])(a0,a1,a2,a3);var _libvfs_vfs_register=Module[\"_libvfs_vfs_register\"]=(a0,a1,a2,a3,a4,a5)=>(_libvfs_vfs_register=Module[\"_libvfs_vfs_register\"]=wasmExports[\"df\"])(a0,a1,a2,a3,a4,a5);var _emscripten_builtin_memalign=(a0,a1)=>(_emscripten_builtin_memalign=wasmExports[\"ff\"])(a0,a1);var __emscripten_tempret_get=()=>(__emscripten_tempret_get=wasmExports[\"gf\"])();var __emscripten_stack_restore=a0=>(__emscripten_stack_restore=wasmExports[\"hf\"])(a0);var __emscripten_stack_alloc=a0=>(__emscripten_stack_alloc=wasmExports[\"jf\"])(a0);var _emscripten_stack_get_current=()=>(_emscripten_stack_get_current=wasmExports[\"kf\"])();var _sqlite3_version=Module[\"_sqlite3_version\"]=3232;Module[\"getTempRet0\"]=getTempRet0;Module[\"ccall\"]=ccall;Module[\"cwrap\"]=cwrap;Module[\"addFunction\"]=addFunction;Module[\"setValue\"]=setValue;Module[\"getValue\"]=getValue;Module[\"UTF8ToString\"]=UTF8ToString;Module[\"stringToUTF8\"]=stringToUTF8;Module[\"lengthBytesUTF8\"]=lengthBytesUTF8;Module[\"intArrayFromString\"]=intArrayFromString;Module[\"intArrayToString\"]=intArrayToString;Module[\"AsciiToString\"]=AsciiToString;Module[\"UTF16ToString\"]=UTF16ToString;Module[\"stringToUTF16\"]=stringToUTF16;Module[\"UTF32ToString\"]=UTF32ToString;Module[\"stringToUTF32\"]=stringToUTF32;Module[\"writeArrayToMemory\"]=writeArrayToMemory;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();if(shouldRunNow)callMain();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}var shouldRunNow=true;if(Module[\"noInitialRun\"])shouldRunNow=false;run();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module[\"set_authorizer\"]=function(db,xAuthorizer,pApp){if(pAsyncFlags){Module[\"deleteCallback\"](pAsyncFlags);Module[\"_sqlite3_free\"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module[\"_sqlite3_malloc\"](4);setValue(pAsyncFlags,xAuthorizer instanceof AsyncFunction?1:0,\"i32\");const result=ccall(\"libauthorizer_set_authorizer\",\"number\",[\"number\",\"number\",\"number\"],[db,xAuthorizer?1:0,pAsyncFlags]);if(!result&&xAuthorizer){Module[\"setCallback\"](pAsyncFlags,(_,iAction,p3,p4,p5,p6)=>xAuthorizer(pApp,iAction,p3,p4,p5,p6))}return result}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;const FUNC_METHODS=[\"xFunc\",\"xStep\",\"xFinal\"];const mapFunctionNameToKey=new Map;Module[\"create_function\"]=function(db,zFunctionName,nArg,eTextRep,pApp,xFunc,xStep,xFinal){const pAsyncFlags=Module[\"_sqlite3_malloc\"](4);const target={xFunc:xFunc,xStep:xStep,xFinal:xFinal};setValue(pAsyncFlags,FUNC_METHODS.reduce((mask,method,i)=>{if(target[method]instanceof AsyncFunction){return mask|1<<i}return mask},0),\"i32\");const result=ccall(\"libfunction_create_function\",\"number\",[\"number\",\"string\",\"number\",\"number\",\"number\",\"number\",\"number\",\"number\"],[db,zFunctionName,nArg,eTextRep,pAsyncFlags,xFunc?1:0,xStep?1:0,xFinal?1:0]);if(!result){if(mapFunctionNameToKey.has(zFunctionName)){const oldKey=mapFunctionNameToKey.get(zFunctionName);Module[\"deleteCallback\"](oldKey)}mapFunctionNameToKey.set(zFunctionName,pAsyncFlags);Module[\"setCallback\"](pAsyncFlags,{xFunc:xFunc,xStep:xStep,xFinal:xFinal})}return result}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module[\"update_hook\"]=function(db,xUpdateHook){if(pAsyncFlags){Module[\"deleteCallback\"](pAsyncFlags);Module[\"_sqlite3_free\"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module[\"_sqlite3_malloc\"](4);setValue(pAsyncFlags,xUpdateHook instanceof AsyncFunction?1:0,\"i32\");ccall(\"libhook_update_hook\",\"void\",[\"number\",\"number\",\"number\"],[db,xUpdateHook?1:0,pAsyncFlags]);if(xUpdateHook){Module[\"setCallback\"](pAsyncFlags,(_,iUpdateType,dbName,tblName,lo32,hi32)=>xUpdateHook(iUpdateType,dbName,tblName,lo32,hi32))}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module[\"commit_hook\"]=function(db,xCommitHook){if(pAsyncFlags){Module[\"deleteCallback\"](pAsyncFlags);Module[\"_sqlite3_free\"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module[\"_sqlite3_malloc\"](4);setValue(pAsyncFlags,xCommitHook instanceof AsyncFunction?1:0,\"i32\");ccall(\"libhook_commit_hook\",\"void\",[\"number\",\"number\",\"number\"],[db,xCommitHook?1:0,pAsyncFlags]);if(xCommitHook){Module[\"setCallback\"](pAsyncFlags,_=>xCommitHook())}}})();(function(){const AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;let pAsyncFlags=0;Module[\"progress_handler\"]=function(db,nOps,xProgress,pApp){if(pAsyncFlags){Module[\"deleteCallback\"](pAsyncFlags);Module[\"_sqlite3_free\"](pAsyncFlags);pAsyncFlags=0}pAsyncFlags=Module[\"_sqlite3_malloc\"](4);setValue(pAsyncFlags,xProgress instanceof AsyncFunction?1:0,\"i32\");ccall(\"libprogress_progress_handler\",\"number\",[\"number\",\"number\",\"number\",\"number\"],[db,nOps,xProgress?1:0,pAsyncFlags]);if(xProgress){Module[\"setCallback\"](pAsyncFlags,_=>xProgress(pApp))}}})();(function(){const VFS_METHODS=[\"xOpen\",\"xDelete\",\"xAccess\",\"xFullPathname\",\"xRandomness\",\"xSleep\",\"xCurrentTime\",\"xGetLastError\",\"xCurrentTimeInt64\",\"xClose\",\"xRead\",\"xWrite\",\"xTruncate\",\"xSync\",\"xFileSize\",\"xLock\",\"xUnlock\",\"xCheckReservedLock\",\"xFileControl\",\"xSectorSize\",\"xDeviceCharacteristics\",\"xShmMap\",\"xShmLock\",\"xShmBarrier\",\"xShmUnmap\"];const mapVFSNameToKey=new Map;Module[\"vfs_register\"]=function(vfs,makeDefault){let methodMask=0;let asyncMask=0;VFS_METHODS.forEach((method,i)=>{if(vfs[method]){methodMask|=1<<i;if(vfs[\"hasAsyncMethod\"](method)){asyncMask|=1<<i}}});const vfsReturn=Module[\"_sqlite3_malloc\"](4);try{const result=ccall(\"libvfs_vfs_register\",\"number\",[\"string\",\"number\",\"number\",\"number\",\"number\",\"number\"],[vfs.name,vfs.mxPathname,methodMask,asyncMask,makeDefault?1:0,vfsReturn]);if(!result){if(mapVFSNameToKey.has(vfs.name)){const oldKey=mapVFSNameToKey.get(vfs.name);Module[\"deleteCallback\"](oldKey)}const key=getValue(vfsReturn,\"*\");mapVFSNameToKey.set(vfs.name,key);Module[\"setCallback\"](key,vfs)}return result}finally{Module[\"_sqlite3_free\"](vfsReturn)}}})();moduleRtn=readyPromise;\n\n\n return moduleRtn;\n}\n);\n})();\nexport default Module;\n","__webpack_require__.d = (exports, getters, values) => {\n\tvar define = (defs, kind) => {\n\t\tfor(var key in defs) {\n\t\t\tif(__webpack_require__.o(defs, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, [kind]: defs[key] });\n\t\t\t}\n\t\t}\n\t};\n\tdefine(getters, \"get\");\n\tdefine(values, \"value\");\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Copyright 2024 Roy T. Hashimoto. All Rights Reserved.\nimport * as VFS from './sqlite-constants.js';\nexport * from './sqlite-constants.js';\n\nconst DEFAULT_SECTOR_SIZE = 512;\n\n// Base class for a VFS.\nexport class Base {\n name;\n mxPathname = 64;\n _module;\n\n /**\n * @param {string} name \n * @param {object} module \n */\n constructor(name, module) {\n this.name = name;\n this._module = module;\n }\n\n /**\n * @returns {void|Promise<void>} \n */\n close() {\n }\n\n /**\n * @returns {boolean|Promise<boolean>}\n */\n isReady() {\n return true;\n }\n\n /**\n * Overload in subclasses to indicate which methods are asynchronous.\n * @param {string} methodName \n * @returns {boolean}\n */\n hasAsyncMethod(methodName) {\n return false;\n }\n\n /**\n * @param {number} pVfs \n * @param {number} zName \n * @param {number} pFile \n * @param {number} flags \n * @param {number} pOutFlags \n * @returns {number|Promise<number>}\n */\n xOpen(pVfs, zName, pFile, flags, pOutFlags) {\n return VFS.SQLITE_CANTOPEN;\n }\n\n /**\n * @param {number} pVfs \n * @param {number} zName \n * @param {number} syncDir \n * @returns {number|Promise<number>}\n */\n xDelete(pVfs, zName, syncDir) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pVfs \n * @param {number} zName \n * @param {number} flags \n * @param {number} pResOut \n * @returns {number|Promise<number>}\n */\n xAccess(pVfs, zName, flags, pResOut) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pVfs \n * @param {number} zName \n * @param {number} nOut \n * @param {number} zOut \n * @returns {number|Promise<number>}\n */\n xFullPathname(pVfs, zName, nOut, zOut) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pVfs \n * @param {number} nBuf \n * @param {number} zBuf \n * @returns {number|Promise<number>}\n */\n xGetLastError(pVfs, nBuf, zBuf) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @returns {number|Promise<number>}\n */\n xClose(pFile) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {number} pData \n * @param {number} iAmt \n * @param {number} iOffsetLo \n * @param {number} iOffsetHi \n * @returns {number|Promise<number>}\n */\n xRead(pFile, pData, iAmt, iOffsetLo, iOffsetHi) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {number} pData \n * @param {number} iAmt \n * @param {number} iOffsetLo \n * @param {number} iOffsetHi \n * @returns {number|Promise<number>}\n */\n xWrite(pFile, pData, iAmt, iOffsetLo, iOffsetHi) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {number} sizeLo \n * @param {number} sizeHi \n * @returns {number|Promise<number>}\n */\n xTruncate(pFile, sizeLo, sizeHi) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {number} flags \n * @returns {number|Promise<number>}\n */\n xSync(pFile, flags) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * \n * @param {number} pFile \n * @param {number} pSize \n * @returns {number|Promise<number>}\n */\n xFileSize(pFile, pSize) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {number} lockType \n * @returns {number|Promise<number>}\n */\n xLock(pFile, lockType) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {number} lockType \n * @returns {number|Promise<number>}\n */\n xUnlock(pFile, lockType) {\n return VFS.SQLITE_OK;\n } \n\n /**\n * @param {number} pFile \n * @param {number} pResOut \n * @returns {number|Promise<number>}\n */\n xCheckReservedLock(pFile, pResOut) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {number} op \n * @param {number} pArg \n * @returns {number|Promise<number>}\n */\n xFileControl(pFile, op, pArg) {\n return VFS.SQLITE_NOTFOUND;\n }\n\n /**\n * @param {number} pFile \n * @returns {number|Promise<number>}\n */\n xSectorSize(pFile) {\n return DEFAULT_SECTOR_SIZE;\n }\n\n /**\n * @param {number} pFile \n * @returns {number|Promise<number>}\n */\n xDeviceCharacteristics(pFile) {\n return 0;\n }\n}\n\nexport const FILE_TYPE_MASK = [\n VFS.SQLITE_OPEN_MAIN_DB,\n VFS.SQLITE_OPEN_MAIN_JOURNAL,\n VFS.SQLITE_OPEN_TEMP_DB,\n VFS.SQLITE_OPEN_TEMP_JOURNAL,\n VFS.SQLITE_OPEN_TRANSIENT_DB,\n VFS.SQLITE_OPEN_SUBJOURNAL,\n VFS.SQLITE_OPEN_SUPER_JOURNAL,\n VFS.SQLITE_OPEN_WAL\n].reduce((mask, element) => mask | element);","// Copyright 2024 Roy T. Hashimoto. All Rights Reserved.\nimport * as VFS from './VFS.js';\n\nconst AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;\n\n// Convenience base class for a JavaScript VFS.\n// The raw xOpen, xRead, etc. function signatures receive only C primitives\n// which aren't easy to work with. This class provides corresponding calls\n// like jOpen, jRead, etc., which receive JavaScript-friendlier arguments\n// such as string, Uint8Array, and DataView.\nexport class FacadeVFS extends VFS.Base {\n /**\n * @param {string} name \n * @param {object} module \n */\n constructor(name, module) {\n super(name, module);\n }\n\n /**\n * Override to indicate which methods are asynchronous.\n * @param {string} methodName \n * @returns {boolean}\n */\n hasAsyncMethod(methodName) {\n // The input argument is a string like \"xOpen\", so convert to \"jOpen\".\n // Then check if the method exists and is async.\n const jMethodName = `j${methodName.slice(1)}`;\n return this[jMethodName] instanceof AsyncFunction;\n }\n \n /**\n * Return the filename for a file id for use by mixins.\n * @param {number} pFile \n * @returns {string}\n */\n getFilename(pFile) {\n throw new Error('unimplemented');\n }\n\n /**\n * @param {string?} filename \n * @param {number} pFile \n * @param {number} flags \n * @param {DataView} pOutFlags \n * @returns {number|Promise<number>}\n */\n jOpen(filename, pFile, flags, pOutFlags) {\n return VFS.SQLITE_CANTOPEN;\n }\n\n /**\n * @param {string} filename \n * @param {number} syncDir \n * @returns {number|Promise<number>}\n */\n jDelete(filename, syncDir) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {string} filename \n * @param {number} flags \n * @param {DataView} pResOut \n * @returns {number|Promise<number>}\n */\n jAccess(filename, flags, pResOut) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {string} filename \n * @param {Uint8Array} zOut \n * @returns {number|Promise<number>}\n */\n jFullPathname(filename, zOut) {\n // Copy the filename to the output buffer.\n const { read, written } = new TextEncoder().encodeInto(filename, zOut);\n if (read < filename.length) return VFS.SQLITE_IOERR;\n if (written >= zOut.length) return VFS.SQLITE_IOERR;\n zOut[written] = 0;\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {Uint8Array} zBuf \n * @returns {number|Promise<number>}\n */\n jGetLastError(zBuf) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @returns {number|Promise<number>}\n */\n jClose(pFile) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {Uint8Array} pData \n * @param {number} iOffset \n * @returns {number|Promise<number>}\n */\n jRead(pFile, pData, iOffset) {\n pData.fill(0);\n return VFS.SQLITE_IOERR_SHORT_READ;\n }\n\n /**\n * @param {number} pFile \n * @param {Uint8Array} pData \n * @param {number} iOffset \n * @returns {number|Promise<number>}\n */\n jWrite(pFile, pData, iOffset) {\n return VFS.SQLITE_IOERR_WRITE;\n }\n\n /**\n * @param {number} pFile \n * @param {number} size \n * @returns {number|Promise<number>}\n */\n jTruncate(pFile, size) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {number} flags \n * @returns {number|Promise<number>}\n */\n jSync(pFile, flags) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {DataView} pSize\n * @returns {number|Promise<number>}\n */\n jFileSize(pFile, pSize) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {number} lockType \n * @returns {number|Promise<number>}\n */\n jLock(pFile, lockType) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {number} lockType \n * @returns {number|Promise<number>}\n */\n jUnlock(pFile, lockType) {\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile \n * @param {DataView} pResOut \n * @returns {number|Promise<number>}\n */\n jCheckReservedLock(pFile, pResOut) {\n pResOut.setInt32(0, 0, true);\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile\n * @param {number} op\n * @param {DataView} pArg\n * @returns {number|Promise<number>}\n */\n jFileControl(pFile, op, pArg) {\n return VFS.SQLITE_NOTFOUND;\n }\n\n /**\n * @param {number} pFile\n * @returns {number|Promise<number>}\n */\n jSectorSize(pFile) {\n return super.xSectorSize(pFile);\n }\n\n /**\n * @param {number} pFile\n * @returns {number|Promise<number>}\n */\n jDeviceCharacteristics(pFile) {\n return 0;\n }\n\n /**\n * @param {number} pVfs \n * @param {number} zName \n * @param {number} pFile \n * @param {number} flags \n * @param {number} pOutFlags \n * @returns {number|Promise<number>}\n */\n xOpen(pVfs, zName, pFile, flags, pOutFlags) {\n const filename = this.#decodeFilename(zName, flags);\n const pOutFlagsView = this.#makeTypedDataView('Int32', pOutFlags);\n this['log']?.('jOpen', filename, pFile, '0x' + flags.toString(16));\n return this.jOpen(filename, pFile, flags, pOutFlagsView);\n }\n\n /**\n * @param {number} pVfs \n * @param {number} zName \n * @param {number} syncDir \n * @returns {number|Promise<number>}\n */\n xDelete(pVfs, zName, syncDir) {\n const filename = this._module.UTF8ToString(zName);\n this['log']?.('jDelete', filename, syncDir);\n return this.jDelete(filename, syncDir);\n }\n\n /**\n * @param {number} pVfs \n * @param {number} zName \n * @param {number} flags \n * @param {number} pResOut \n * @returns {number|Promise<number>}\n */\n xAccess(pVfs, zName, flags, pResOut) {\n const filename = this._module.UTF8ToString(zName);\n const pResOutView = this.#makeTypedDataView('Int32', pResOut);\n this['log']?.('jAccess', filename, flags);\n return this.jAccess(filename, flags, pResOutView);\n }\n\n /**\n * @param {number} pVfs \n * @param {number} zName \n * @param {number} nOut \n * @param {number} zOut \n * @returns {number|Promise<number>}\n */\n xFullPathname(pVfs, zName, nOut, zOut) {\n const filename = this._module.UTF8ToString(zName);\n const zOutArray = this._module.HEAPU8.subarray(zOut, zOut + nOut);\n this['log']?.('jFullPathname', filename, nOut);\n return this.jFullPathname(filename, zOutArray);\n }\n\n /**\n * @param {number} pVfs \n * @param {number} nBuf \n * @param {number} zBuf \n * @returns {number|Promise<number>}\n */\n xGetLastError(pVfs, nBuf, zBuf) {\n const zBufArray = this._module.HEAPU8.subarray(zBuf, zBuf + nBuf);\n this['log']?.('jGetLastError', nBuf);\n return this.jGetLastError(zBufArray);\n }\n\n /**\n * @param {number} pFile \n * @returns {number|Promise<number>}\n */\n xClose(pFile) {\n this['log']?.('jClose', pFile);\n return this.jClose(pFile);\n }\n\n /**\n * @param {number} pFile \n * @param {number} pData \n * @param {number} iAmt \n * @param {number} iOffsetLo \n * @param {number} iOffsetHi \n * @returns {number|Promise<number>}\n */\n xRead(pFile, pData, iAmt, iOffsetLo, iOffsetHi) {\n const pDataArray = this.#makeDataArray(pData, iAmt);\n const iOffset = delegalize(iOffsetLo, iOffsetHi);\n this['log']?.('jRead', pFile, iAmt, iOffset);\n return this.jRead(pFile, pDataArray, iOffset);\n }\n\n /**\n * @param {number} pFile \n * @param {number} pData \n * @param {number} iAmt \n * @param {number} iOffsetLo \n * @param {number} iOffsetHi \n * @returns {number|Promise<number>}\n */\n xWrite(pFile, pData, iAmt, iOffsetLo, iOffsetHi) {\n const pDataArray = this.#makeDataArray(pData, iAmt);\n const iOffset = delegalize(iOffsetLo, iOffsetHi);\n this['log']?.('jWrite', pFile, pDataArray, iOffset);\n return this.jWrite(pFile, pDataArray, iOffset);\n }\n\n /**\n * @param {number} pFile \n * @param {number} sizeLo \n * @param {number} sizeHi \n * @returns {number|Promise<number>}\n */\n xTruncate(pFile, sizeLo, sizeHi) {\n const size = delegalize(sizeLo, sizeHi);\n this['log']?.('jTruncate', pFile, size);\n return this.jTruncate(pFile, size);\n }\n\n /**\n * @param {number} pFile \n * @param {number} flags \n * @returns {number|Promise<number>}\n */\n xSync(pFile, flags) {\n this['log']?.('jSync', pFile, flags);\n return this.jSync(pFile, flags);\n }\n\n /**\n * \n * @param {number} pFile \n * @param {number} pSize \n * @returns {number|Promise<number>}\n */\n xFileSize(pFile, pSize) {\n const pSizeView = this.#makeTypedDataView('BigInt64', pSize);\n this['log']?.('jFileSize', pFile);\n return this.jFileSize(pFile, pSizeView);\n }\n\n /**\n * @param {number} pFile \n * @param {number} lockType \n * @returns {number|Promise<number>}\n */\n xLock(pFile, lockType) {\n this['log']?.('jLock', pFile, lockType);\n return this.jLock(pFile, lockType);\n }\n\n /**\n * @param {number} pFile \n * @param {number} lockType \n * @returns {number|Promise<number>}\n */\n xUnlock(pFile, lockType) {\n this['log']?.('jUnlock', pFile, lockType);\n return this.jUnlock(pFile, lockType);\n } \n\n /**\n * @param {number} pFile \n * @param {number} pResOut \n * @returns {number|Promise<number>}\n */\n xCheckReservedLock(pFile, pResOut) {\n const pResOutView = this.#makeTypedDataView('Int32', pResOut);\n this['log']?.('jCheckReservedLock', pFile);\n return this.jCheckReservedLock(pFile, pResOutView);\n }\n\n /**\n * @param {number} pFile \n * @param {number} op \n * @param {number} pArg \n * @returns {number|Promise<number>}\n */\n xFileControl(pFile, op, pArg) {\n const pArgView = new DataView(\n this._module.HEAPU8.buffer,\n this._module.HEAPU8.byteOffset + pArg);\n this['log']?.('jFileControl', pFile, op, pArgView);\n return this.jFileControl(pFile, op, pArgView);\n }\n\n /**\n * @param {number} pFile \n * @returns {number|Promise<number>}\n */\n xSectorSize(pFile) {\n this['log']?.('jSectorSize', pFile);\n return this.jSectorSize(pFile);\n }\n\n /**\n * @param {number} pFile \n * @returns {number|Promise<number>}\n */\n xDeviceCharacteristics(pFile) {\n this['log']?.('jDeviceCharacteristics', pFile);\n return this.jDeviceCharacteristics(pFile);\n }\n\n /**\n * Wrapped DataView for pointer arguments.\n * Pointers to a single value are passed using a DataView-like class.\n * This wrapper class prevents use of incorrect type or endianness, and\n * reacquires the underlying buffer when the WebAssembly memory is resized.\n * @param {'Int32'|'BigInt64'} type \n * @param {number} byteOffset \n * @returns {DataView}\n */\n #makeTypedDataView(type, byteOffset) {\n // @ts-ignore\n return new DataViewProxy(this._module, byteOffset, type);\n }\n\n /**\n * Wrapped Uint8Array for buffer arguments.\n * Memory blocks are passed as a Uint8Array-like class. This wrapper\n * class reacquires the underlying buffer when the WebAssembly memory\n * is resized.\n * @param {number} byteOffset \n * @param {number} byteLength \n * @returns {Uint8Array}\n */\n #makeDataArray(byteOffset, byteLength) {\n // @ts-ignore\n return new Uint8ArrayProxy(this._module, byteOffset, byteLength);\n }\n\n #decodeFilename(zName, flags) {\n if (flags & VFS.SQLITE_OPEN_URI) {\n // The first null-terminated string is the URI path. Subsequent\n // strings are query parameter keys and values.\n // https://www.sqlite.org/c3ref/open.html#urifilenamesinsqlite3open\n let pName = zName;\n let state = 1;\n const charCodes = [];\n while (state) {\n const charCode = this._module.HEAPU8[pName++];\n if (charCode) {\n charCodes.push(charCode);\n } else {\n if (!this._module.HEAPU8[pName]) state = null;\n switch (state) {\n case 1: // path\n charCodes.push('?'.charCodeAt(0));\n state = 2;\n break;\n case 2: // key\n charCodes.push('='.charCodeAt(0));\n state = 3;\n break;\n case 3: // value\n charCodes.push('&'.charCodeAt(0));\n state = 2;\n break;\n }\n }\n }\n return new TextDecoder().decode(new Uint8Array(charCodes));\n }\n return zName ? this._module.UTF8ToString(zName) : null;\n }\n}\n\n// Emscripten \"legalizes\" 64-bit integer arguments by passing them as\n// two 32-bit signed integers.\nfunction delegalize(lo32, hi32) {\n return (hi32 * 0x100000000) + lo32 + (lo32 < 0 ? 2**32 : 0);\n}\n\n// This class provides a Uint8Array-like interface for a WebAssembly memory\n// buffer. It is used to access memory blocks passed as arguments to\n// xRead, xWrite, etc. The class reacquires the underlying buffer when the\n// WebAssembly memory is resized, which can happen when the memory is\n// detached and resized by the WebAssembly module.\n//\n// Note that although this class implements the same methods as Uint8Array,\n// it is not a real Uint8Array and passing it to functions that expect\n// a Uint8Array may not work. Use subarray() to get a real Uint8Array\n// if needed.\nclass Uint8ArrayProxy {\n #module;\n\n #_array = new Uint8Array()\n get #array() {\n if (this.#_array.buffer.byteLength === 0) {\n // WebAssembly memory resize detached the buffer so re-create the\n // array with the new buffer.\n this.#_array = this.#module.HEAPU8.subarray(\n this.byteOffset,\n this.byteOffset + this.byteLength);\n }\n return this.#_array;\n }\n\n /**\n * @param {*} module\n * @param {number} byteOffset \n * @param {number} byteLength \n */\n constructor(module, byteOffset, byteLength) {\n this.#module = module;\n this.byteOffset = byteOffset;\n this.length = this.byteLength = byteLength;\n }\n\n get buffer() {\n return this.#array.buffer;\n }\n\n at(index) {\n return this.#array.at(index);\n }\n copyWithin(target, start, end) {\n this.#array.copyWithin(target, start, end);\n }\n entries() {\n return this.#array.entries();\n }\n every(predicate) {\n return this.#array.every(predicate);\n }\n fill(value, start, end) {\n this.#array.fill(value, start, end);\n }\n filter(predicate) {\n return this.#array.filter(predicate);\n }\n find(predicate) {\n return this.#array.find(predicate);\n }\n findIndex(predicate) {\n return this.#array.findIndex(predicate);\n }\n findLast(predicate) {\n return this.#array.findLast(predicate);\n }\n findLastIndex(predicate) {\n return this.#array.findLastIndex(predicate);\n }\n forEach(callback) {\n this.#array.forEach(callback);\n }\n includes(value, start) {\n return this.#array.includes(value, start);\n }\n indexOf(value, start) {\n return this.#array.indexOf(value, start);\n }\n join(separator) {\n return this.#array.join(separator);\n }\n keys() {\n return this.#array.keys();\n }\n lastIndexOf(value, start) {\n return this.#array.lastIndexOf(value, start);\n }\n map(callback) {\n return this.#array.map(callback);\n }\n reduce(callback, initialValue) {\n return this.#array.reduce(callback, initialValue);\n }\n reduceRight(callback, initialValue) {\n return this.#array.reduceRight(callback, initialValue);\n }\n reverse() {\n this.#array.reverse();\n }\n set(array, offset) {\n this.#array.set(array, offset);\n }\n slice(start, end) {\n return this.#array.slice(start, end);\n }\n some(predicate) {\n return this.#array.some(predicate);\n }\n sort(compareFn) {\n this.#array.sort(compareFn);\n }\n subarray(begin, end) {\n return this.#array.subarray(begin, end);\n }\n toLocaleString(locales, options) {\n // @ts-ignore\n return this.#array.toLocaleString(locales, options);\n }\n toReversed() {\n return this.#array.toReversed();\n }\n toSorted(compareFn) {\n return this.#array.toSorted(compareFn);\n }\n toString() {\n return this.#array.toString();\n }\n values() {\n return this.#array.values();\n }\n with(index, value) {\n return this.#array.with(index, value);\n }\n [Symbol.iterator]() {\n return this.#array[Symbol.iterator]();\n }\n}\n\n// This class provides a DataView-like interface for a WebAssembly memory\n// buffer, restricted to either Int32 or BigInt64 types. It also reacquires\n// the underlying buffer when the WebAssembly memory is resized, which can\n// happen when the memory is detached and resized by the WebAssembly module.\nclass DataViewProxy {\n #module;\n #type;\n\n #_view = new DataView(new ArrayBuffer(0));\n get #view() {\n if (this.#_view.buffer.byteLength === 0) {\n // WebAssembly memory resize detached the buffer so re-create the\n // view with the new buffer.\n this.#_view = new DataView(\n this.#module.HEAPU8.buffer,\n this.#module.HEAPU8.byteOffset + this.byteOffset);\n }\n return this.#_view;\n }\n\n /**\n * @param {*} module\n * @param {number} byteOffset \n * @param {'Int32'|'BigInt64'} type\n */\n constructor(module, byteOffset, type) {\n this.#module = module;\n this.byteOffset = byteOffset;\n this.#type = type;\n }\n\n get buffer() {\n return this.#view.buffer;\n }\n get byteLength() {\n return this.#type === 'Int32' ? 4 : 8;\n }\n\n getInt32(byteOffset, littleEndian) {\n if (this.#type !== 'Int32') {\n throw new Error('invalid type');\n }\n if (!littleEndian) throw new Error('must be little endian');\n return this.#view.getInt32(byteOffset, littleEndian);\n }\n setInt32(byteOffset, value, littleEndian) {\n if (this.#type !== 'Int32') {\n throw new Error('invalid type');\n }\n if (!littleEndian) throw new Error('must be little endian');\n this.#view.setInt32(byteOffset, value, littleEndian);\n }\n getBigInt64(byteOffset, littleEndian) {\n if (this.#type !== 'BigInt64') {\n throw new Error('invalid type');\n }\n if (!littleEndian) throw new Error('must be little endian');\n return this.#view.getBigInt64(byteOffset, littleEndian);\n }\n setBigInt64(byteOffset, value, littleEndian) {\n if (this.#type !== 'BigInt64') {\n throw new Error('invalid type');\n }\n if (!littleEndian) throw new Error('must be little endian');\n this.#view.setBigInt64(byteOffset, value, littleEndian);\n }\n}","// Copyright 2024 Roy T. Hashimoto. All Rights Reserved.\nimport { FacadeVFS } from '../FacadeVFS.js';\nimport * as VFS from '../VFS.js';\n\n// Sample in-memory filesystem.\nexport class MemoryVFS extends FacadeVFS {\n // Map of existing files, keyed by filename.\n mapNameToFile = new Map();\n\n // Map of open files, keyed by id (sqlite3_file pointer).\n mapIdToFile = new Map();\n\n static async create(name, module) {\n const vfs = new MemoryVFS(name, module);\n await vfs.isReady();\n return vfs;\n }\n\n constructor(name, module) {\n super(name, module);\n }\n\n close() {\n for (const fileId of this.mapIdToFile.keys()) {\n this.jClose(fileId);\n }\n }\n\n /**\n * @param {string?} filename \n * @param {number} fileId \n * @param {number} flags \n * @param {DataView} pOutFlags \n * @returns {number|Promise<number>}\n */\n jOpen(filename, fileId, flags, pOutFlags) {\n const url = new URL(filename || Math.random().toString(36).slice(2), 'file://');\n const pathname = url.pathname;\n\n let file = this.mapNameToFile.get(pathname);\n if (!file) {\n if (flags & VFS.SQLITE_OPEN_CREATE) {\n // Create a new file object.\n file = {\n pathname,\n flags,\n size: 0,\n data: new ArrayBuffer(0)\n };\n this.mapNameToFile.set(pathname, file);\n } else {\n return VFS.SQLITE_CANTOPEN;\n }\n }\n\n // Put the file in the opened files map.\n this.mapIdToFile.set(fileId, file);\n pOutFlags.setInt32(0, flags, true);\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @returns {number|Promise<number>}\n */\n jClose(fileId) {\n const file = this.mapIdToFile.get(fileId);\n this.mapIdToFile.delete(fileId);\n\n if (file.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) {\n this.mapNameToFile.delete(file.pathname);\n }\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number|Promise<number>}\n */\n jRead(fileId, pData, iOffset) {\n const file = this.mapIdToFile.get(fileId);\n\n // Clip the requested read to the file boundary.\n const bgn = Math.min(iOffset, file.size);\n const end = Math.min(iOffset + pData.byteLength, file.size);\n const nBytes = end - bgn;\n\n if (nBytes) {\n pData.set(new Uint8Array(file.data, bgn, nBytes));\n }\n\n if (nBytes < pData.byteLength) {\n // Zero unused area of read buffer.\n pData.fill(0, nBytes);\n return VFS.SQLITE_IOERR_SHORT_READ;\n }\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number|Promise<number>}\n */\n jWrite(fileId, pData, iOffset) {\n const file = this.mapIdToFile.get(fileId);\n if (iOffset + pData.byteLength > file.data.byteLength) {\n // Resize the ArrayBuffer to hold more data.\n const newSize = Math.max(iOffset + pData.byteLength, 2 * file.data.byteLength);\n const data = new ArrayBuffer(newSize);\n new Uint8Array(data).set(new Uint8Array(file.data, 0, file.size));\n file.data = data;\n }\n\n // Copy data.\n new Uint8Array(file.data, iOffset, pData.byteLength).set(pData.subarray());\n file.size = Math.max(file.size, iOffset + pData.byteLength);\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @param {number} iSize \n * @returns {number|Promise<number>}\n */\n jTruncate(fileId, iSize) {\n const file = this.mapIdToFile.get(fileId);\n\n // For simplicity we don't make the ArrayBuffer smaller.\n file.size = Math.min(file.size, iSize);\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @param {DataView} pSize64 \n * @returns {number|Promise<number>}\n */\n jFileSize(fileId, pSize64) {\n const file = this.mapIdToFile.get(fileId);\n\n pSize64.setBigInt64(0, BigInt(file.size), true);\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {string} name \n * @param {number} syncDir \n * @returns {number|Promise<number>}\n */\n jDelete(name, syncDir) {\n const url = new URL(name, 'file://');\n const pathname = url.pathname;\n\n this.mapNameToFile.delete(pathname);\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {string} name \n * @param {number} flags \n * @param {DataView} pResOut \n * @returns {number|Promise<number>}\n */\n jAccess(name, flags, pResOut) {\n const url = new URL(name, 'file://');\n const pathname = url.pathname;\n\n const file = this.mapNameToFile.get(pathname);\n pResOut.setInt32(0, file ? 1 : 0, true);\n return VFS.SQLITE_OK;\n }\n}\n","// Copyright 2024 Roy T. Hashimoto. All Rights Reserved.\nimport { MemoryVFS } from './MemoryVFS.js';\n\n// Sample asynchronous in-memory filesystem. This filesystem requires an\n// asynchronous WebAssembly build (Asyncify or JSPI).\nexport class MemoryAsyncVFS extends MemoryVFS {\n\n static async create(name, module) {\n const vfs = new MemoryVFS(name, module);\n await vfs.isReady();\n return vfs;\n }\n\n constructor(name, module) {\n super(name, module);\n }\n\n async close() {\n for (const fileId of this.mapIdToFile.keys()) {\n await this.xClose(fileId);\n }\n }\n\n /**\n * @param {string?} name \n * @param {number} fileId \n * @param {number} flags \n * @param {DataView} pOutFlags \n * @returns {Promise<number>}\n */\n async jOpen(name, fileId, flags, pOutFlags) {\n return super.jOpen(name, fileId, flags, pOutFlags);\n }\n\n /**\n * @param {number} fileId \n * @returns {Promise<number>}\n */\n async jClose(fileId) {\n return super.jClose(fileId);\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {Promise<number>}\n */\n async jRead(fileId, pData, iOffset) {\n return super.jRead(fileId, pData, iOffset);\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {Promise<number>}\n */\n async jWrite(fileId, pData, iOffset) {\n return super.jWrite(fileId, pData, iOffset);\n }\n\n /**\n * @param {number} fileId \n * @param {number} iSize \n * @returns {Promise<number>}\n */\n async xTruncate(fileId, iSize) {\n return super.jTruncate(fileId, iSize);\n }\n\n /**\n * @param {number} fileId \n * @param {DataView} pSize64 \n * @returns {Promise<number>}\n */\n async jFileSize(fileId, pSize64) {\n return super.jFileSize(fileId, pSize64);\n }\n\n /**\n * \n * @param {string} name \n * @param {number} syncDir \n * @returns {Promise<number>}\n */\n async jDelete(name, syncDir) {\n return super.jDelete(name, syncDir);\n }\n\n /**\n * @param {string} name \n * @param {number} flags \n * @param {DataView} pResOut \n * @returns {Promise<number>}\n */\n async jAccess(name, flags, pResOut) {\n return super.jAccess(name, flags, pResOut);\n }\n}\n","import * as VFS from './VFS.js';\n\n// Options for navigator.locks.request().\n/** @type {LockOptions} */ const SHARED = { mode: 'shared' };\n/** @type {LockOptions} */ const POLL_SHARED = { ifAvailable: true, mode: 'shared' };\n/** @type {LockOptions} */ const POLL_EXCLUSIVE = { ifAvailable: true, mode: 'exclusive' };\n\nconst POLICIES = ['exclusive', 'shared', 'shared+hint'];\n\n/**\n * @typedef LockState\n * @property {string} baseName\n * @property {number} type\n * @property {boolean} writeHint\n * \n * These properties are functions that release a specific lock.\n * @property {(() => void)?} [gate]\n * @property {(() => void)?} [access]\n * @property {(() => void)?} [reserved]\n * @property {(() => void)?} [hint]\n */\n\n/**\n * Mix-in for FacadeVFS that implements the SQLite VFS locking protocol.\n * @param {*} superclass FacadeVFS (or subclass)\n * @returns \n */\nexport const WebLocksMixin = superclass => class extends superclass {\n #options = {\n lockPolicy: 'exclusive',\n lockTimeout: Infinity\n };\n\n /** @type {Map<number, LockState>} */ #mapIdToState = new Map();\n\n constructor(name, module, options) {\n super(name, module, options);\n Object.assign(this.#options, options);\n if (POLICIES.indexOf(this.#options.lockPolicy) === -1) {\n throw new Error(`WebLocksMixin: invalid lock mode: ${options.lockPolicy}`);\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} lockType \n * @returns {Promise<number>}\n */\n async jLock(fileId, lockType) {\n try {\n const lockState = this.#getLockState(fileId);\n if (lockType <= lockState.type) return VFS.SQLITE_OK;\n \n switch (this.#options.lockPolicy) {\n case 'exclusive':\n return await this.#lockExclusive(lockState, lockType);\n case 'shared':\n case 'shared+hint':\n return await this.#lockShared(lockState, lockType);\n }\n } catch (e) {\n console.error('WebLocksMixin: lock error', e);\n return VFS.SQLITE_IOERR_LOCK;\n }\n }\n \n /**\n * @param {number} fileId \n * @param {number} lockType \n * @returns {Promise<number>}\n */\n async jUnlock(fileId, lockType) {\n try {\n const lockState = this.#getLockState(fileId);\n if (!(lockType < lockState.type)) return VFS.SQLITE_OK;\n \n switch (this.#options.lockPolicy) {\n case 'exclusive':\n return await this.#unlockExclusive(lockState, lockType);\n case 'shared':\n case 'shared+hint':\n return await this.#unlockShared(lockState, lockType);\n }\n } catch (e) {\n console.error('WebLocksMixin: unlock error', e);\n return VFS.SQLITE_IOERR_UNLOCK;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {DataView} pResOut \n * @returns {Promise<number>}\n */\n async jCheckReservedLock(fileId, pResOut) {\n try {\n const lockState = this.#getLockState(fileId);\n switch (this.#options.lockPolicy) {\n case 'exclusive':\n return this.#checkReservedExclusive(lockState, pResOut);\n case 'shared':\n case 'shared+hint':\n return await this.#checkReservedShared(lockState, pResOut);\n }\n } catch (e) {\n console.error('WebLocksMixin: check reserved lock error', e);\n return VFS.SQLITE_IOERR_CHECKRESERVEDLOCK;\n }\n pResOut.setInt32(0, 0, true);\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId\n * @param {number} op\n * @param {DataView} pArg\n * @returns {number|Promise<number>}\n */\n jFileControl(fileId, op, pArg) {\n if (op === WebLocksMixin.WRITE_HINT_OP_CODE &&\n this.#options.lockPolicy === 'shared+hint'){\n const lockState = this.#getLockState(fileId);\n lockState.writeHint = true;\n }\n return VFS.SQLITE_NOTFOUND;\n }\n\n #getLockState(fileId) {\n let lockState = this.#mapIdToState.get(fileId);\n if (!lockState) {\n // The state doesn't exist yet so create it.\n const name = this.getFilename(fileId);\n lockState = {\n baseName: name,\n type: VFS.SQLITE_LOCK_NONE,\n writeHint: false\n };\n this.#mapIdToState.set(fileId, lockState);\n }\n return lockState\n }\n\n /**\n * @param {LockState} lockState \n * @param {number} lockType \n * @returns \n */\n async #lockExclusive(lockState, lockType) {\n if (!lockState.access) {\n if (!await this.#acquire(lockState, 'access')) {\n return VFS.SQLITE_BUSY;\n }\n console.assert(!!lockState.access);\n }\n lockState.type = lockType;\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {LockState} lockState \n * @param {number} lockType \n * @returns {number}\n */\n #unlockExclusive(lockState, lockType) {\n if (lockType === VFS.SQLITE_LOCK_NONE) {\n lockState.access?.();\n console.assert(!lockState.access);\n }\n lockState.type = lockType;\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {LockState} lockState \n * @param {DataView} pResOut \n * @returns {number}\n */\n #checkReservedExclusive(lockState, pResOut) {\n pResOut.setInt32(0, 0, true);\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {LockState} lockState \n * @param {number} lockType \n * @returns \n */\n async #lockShared(lockState, lockType) {\n switch (lockState.type) {\n case VFS.SQLITE_LOCK_NONE:\n switch (lockType) {\n case VFS.SQLITE_LOCK_SHARED:\n if (lockState.writeHint) {\n // xFileControl() has hinted that this transaction will\n // write. Acquire the hint lock, which is required to reach\n // the RESERVED state.\n if (!await this.#acquire(lockState, 'hint')) {\n // Timeout before lock acquired.\n return VFS.SQLITE_BUSY;\n }\n }\n\n // Must have the gate lock to request the access lock.\n if (!await this.#acquire(lockState, 'gate', SHARED)) {\n // Timeout before lock acquired.\n lockState.hint?.();\n return VFS.SQLITE_BUSY;\n }\n await this.#acquire(lockState, 'access', SHARED);\n lockState.gate();\n console.assert(!lockState.gate);\n console.assert(!!lockState.access);\n console.assert(!lockState.reserved);\n break;\n\n default:\n throw new Error('unsupported lock transition');\n }\n break;\n case VFS.SQLITE_LOCK_SHARED:\n switch (lockType) {\n case VFS.SQLITE_LOCK_RESERVED:\n if (this.#options.lockPolicy === 'shared+hint') {\n // Ideally we should already have the hint lock, but if not\n // poll for it here.\n if (!lockState.hint &&\n !await this.#acquire(lockState, 'hint', POLL_EXCLUSIVE)) {\n // Another connection has the hint lock so this is a\n // deadlock. This connection must retry.\n return VFS.SQLITE_BUSY;\n }\n }\n\n // Poll for the reserved lock. This should always succeed\n // if all clients use the 'shared+hint' policy.\n if (!await this.#acquire(lockState, 'reserved', POLL_EXCLUSIVE)) {\n // This is a deadlock. The connection holding the reserved\n // lock blocks us, and it can't acquire an exclusive access\n // lock because we hold a shared access lock. This connection\n // must retry.\n lockState.hint?.();\n return VFS.SQLITE_BUSY;\n }\n lockState.access();\n console.assert(!lockState.gate);\n console.assert(!lockState.access);\n console.assert(!!lockState.reserved);\n break;\n\n case VFS.SQLITE_LOCK_EXCLUSIVE:\n // Jumping directly from SHARED to EXCLUSIVE without passing\n // through RESERVED is only done with a hot journal.\n if (!await this.#acquire(lockState, 'gate')) {\n // Timeout before lock acquired.\n return VFS.SQLITE_BUSY;\n }\n lockState.access();\n if (!await this.#acquire(lockState, 'access')) {\n // Timeout before lock acquired.\n lockState.gate();\n return VFS.SQLITE_BUSY;\n }\n console.assert(!!lockState.gate);\n console.assert(!!lockState.access);\n console.assert(!lockState.reserved);\n break;\n\n default:\n throw new Error('unsupported lock transition');\n }\n break;\n case VFS.SQLITE_LOCK_RESERVED:\n switch (lockType) {\n case VFS.SQLITE_LOCK_EXCLUSIVE:\n // Prevent other connections from entering the SHARED state.\n if (!await this.#acquire(lockState, 'gate')) {\n // Timeout before lock acquired.\n return VFS.SQLITE_BUSY;\n }\n\n // Block until all other connections exit the SHARED state.\n if (!await this.#acquire(lockState, 'access')) {\n // Timeout before lock acquired.\n lockState.gate();\n return VFS.SQLITE_BUSY;\n }\n console.assert(!!lockState.gate);\n console.assert(!!lockState.access);\n console.assert(!!lockState.reserved);\n break;\n\n default:\n throw new Error('unsupported lock transition');\n }\n break;\n }\n lockState.type = lockType;\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {LockState} lockState \n * @param {number} lockType \n * @returns \n */\n async #unlockShared(lockState, lockType) {\n // lockType can only be SQLITE_LOCK_SHARED or SQLITE_LOCK_NONE.\n if (lockType === VFS.SQLITE_LOCK_NONE) {\n lockState.access?.();\n lockState.gate?.();\n lockState.reserved?.();\n lockState.hint?.();\n lockState.writeHint = false;\n console.assert(!lockState.access);\n console.assert(!lockState.gate);\n console.assert(!lockState.reserved);\n console.assert(!lockState.hint);\n } else { // lockType === VFS.SQLITE_LOCK_SHARED\n switch (lockState.type) {\n case VFS.SQLITE_LOCK_EXCLUSIVE:\n // Release our exclusive access lock and reacquire it with a\n // shared lock. This should always succeed because we hold\n // the gate lock.\n lockState.access();\n await this.#acquire(lockState, 'access', SHARED);\n\n // Release our gate and reserved locks. We might not have a\n // reserved lock if we were handling a hot journal.\n lockState.gate();\n lockState.reserved?.();\n lockState.hint?.();\n console.assert(!!lockState.access);\n console.assert(!lockState.gate);\n console.assert(!lockState.reserved);\n break;\n\n case VFS.SQLITE_LOCK_RESERVED:\n // This transition is rare, probably only on an I/O error\n // while writing to a journal file.\n await this.#acquire(lockState, 'access', SHARED);\n lockState.reserved();\n lockState.hint?.();\n console.assert(!!lockState.access);\n console.assert(!lockState.gate);\n console.assert(!lockState.reserved);\n break;\n }\n }\n lockState.type = lockType;\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {LockState} lockState \n * @param {DataView} pResOut \n * @returns {Promise<number>}\n */\n async #checkReservedShared(lockState, pResOut) {\n if (await this.#acquire(lockState, 'reserved', POLL_SHARED)) {\n // We were able to get the lock so it was not reserved.\n lockState.reserved();\n pResOut.setInt32(0, 0, true);\n } else {\n pResOut.setInt32(0, 1, true);\n }\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {LockState} lockState \n * @param {'gate'|'access'|'reserved'|'hint'} name\n * @param {LockOptions} options \n * @returns {Promise<boolean>}\n */\n #acquire(lockState, name, options = {}) {\n console.assert(!lockState[name]);\n return new Promise(resolve => {\n if (!options.ifAvailable && this.#options.lockTimeout < Infinity) {\n // Add a timeout to the lock request.\n const controller = new AbortController();\n options = Object.assign({}, options, { signal: controller.signal });\n setTimeout(() => {\n controller.abort();\n resolve?.(false);\n }, this.#options.lockTimeout);\n }\n\n const lockName = `lock##${lockState.baseName}##${name}`;\n navigator.locks.request(lockName, options, lock => {\n if (lock) {\n return new Promise(release => {\n lockState[name] = () => {\n release();\n lockState[name] = null;\n };\n resolve(true);\n resolve = null;\n });\n } else {\n lockState[name] = null;\n resolve(false);\n resolve = null;\n }\n }).catch(e => {\n if (e.name !== 'AbortError') throw e;\n });\n });\n }\n}\n\nWebLocksMixin.WRITE_HINT_OP_CODE = -9999;","// Copyright 2024 Roy T. Hashimoto. All Rights Reserved.\nimport { FacadeVFS } from '../FacadeVFS.js';\nimport * as VFS from '../VFS.js';\nimport { WebLocksMixin } from '../WebLocksMixin.js';\n\n/**\n * @param {string} pathname \n * @param {boolean} create \n * @returns {Promise<[FileSystemDirectoryHandle, string]>}\n */\nasync function getPathComponents(pathname, create) {\n const [_, directories, filename] = pathname.match(/[/]?(.*)[/](.*)$/);\n\n let directoryHandle = await navigator.storage.getDirectory();\n for (const directory of directories.split('/')) {\n if (directory) {\n directoryHandle = await directoryHandle.getDirectoryHandle(directory, { create });\n }\n }\n return [directoryHandle, filename];\n};\n\nclass File {\n /** @type {string} */ pathname;\n /** @type {number} */ flags;\n /** @type {FileSystemFileHandle} */ fileHandle;\n /** @type {Blob?} */ blob;\n /** @type {FileSystemWritableFileStream?} */ writable;\n\n constructor(pathname, flags) {\n this.pathname = pathname;\n this.flags = flags;\n }\n}\n\nexport class OPFSAnyContextVFS extends WebLocksMixin(FacadeVFS) {\n /** @type {Map<number, File>} */ mapIdToFile = new Map();\n lastError = null;\n\n log = null;\n\n static async create(name, module, options) {\n const vfs = new OPFSAnyContextVFS(name, module, options);\n await vfs.isReady();\n return vfs;\n }\n\n constructor(name, module, options = {}) {\n super(name, module, options);\n }\n \n getFilename(fileId) {\n const pathname = this.mapIdToFile.get(fileId).pathname;\n return `OPFS:${pathname}`\n }\n\n /**\n * @param {string?} zName \n * @param {number} fileId \n * @param {number} flags \n * @param {DataView} pOutFlags \n * @returns {Promise<number>}\n */\n async jOpen(zName, fileId, flags, pOutFlags) {\n try {\n const url = new URL(zName || Math.random().toString(36).slice(2), 'file://');\n const pathname = url.pathname;\n\n const file = new File(pathname, flags);\n this.mapIdToFile.set(fileId, file);\n\n const create = !!(flags & VFS.SQLITE_OPEN_CREATE);\n const [directoryHandle, filename] = await getPathComponents(pathname, create);\n file.fileHandle = await directoryHandle.getFileHandle(filename, { create });\n \n pOutFlags.setInt32(0, flags, true);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_CANTOPEN;\n }\n }\n\n /**\n * @param {string} zName \n * @param {number} syncDir \n * @returns {Promise<number>}\n */\n async jDelete(zName, syncDir) {\n try {\n const url = new URL(zName, 'file://');\n const pathname = url.pathname;\n \n const [directoryHandle, name] = await getPathComponents(pathname, false);\n const result = directoryHandle.removeEntry(name, { recursive: false });\n if (syncDir) {\n await result;\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n return VFS.SQLITE_IOERR_DELETE;\n }\n }\n\n /**\n * @param {string} zName \n * @param {number} flags \n * @param {DataView} pResOut \n * @returns {Promise<number>}\n */\n async jAccess(zName, flags, pResOut) {\n try {\n const url = new URL(zName, 'file://');\n const pathname = url.pathname;\n\n const [directoryHandle, dbName] = await getPathComponents(pathname, false);\n const fileHandle = await directoryHandle.getFileHandle(dbName, { create: false });\n pResOut.setInt32(0, 1, true);\n return VFS.SQLITE_OK;\n } catch (e) {\n if (e.name === 'NotFoundError') {\n pResOut.setInt32(0, 0, true);\n return VFS.SQLITE_OK;\n }\n this.lastError = e;\n return VFS.SQLITE_IOERR_ACCESS;\n }\n }\n\n /**\n * @param {number} fileId \n * @returns {Promise<number>}\n */\n async jClose(fileId) {\n try {\n const file = this.mapIdToFile.get(fileId);\n this.mapIdToFile.delete(fileId);\n\n await file.writable?.close();\n if (file?.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) {\n const [directoryHandle, name] = await getPathComponents(file.pathname, false);\n await directoryHandle.removeEntry(name, { recursive: false });\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n return VFS.SQLITE_IOERR_DELETE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {Promise<number>}\n */\n async jRead(fileId, pData, iOffset) {\n try {\n const file = this.mapIdToFile.get(fileId);\n\n if (file.writable) {\n await file.writable.close();\n file.writable = null;\n file.blob = null;\n }\n if (!file.blob) {\n file.blob = await file.fileHandle.getFile();\n }\n\n const bytesRead = await file.blob.slice(iOffset, iOffset + pData.byteLength)\n .arrayBuffer()\n .then(arrayBuffer => {\n pData.set(new Uint8Array(arrayBuffer));\n return arrayBuffer.byteLength;\n });\n\n if (bytesRead < pData.byteLength) {\n pData.fill(0, bytesRead);\n return VFS.SQLITE_IOERR_SHORT_READ;\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_READ;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {Promise<number>}\n */\n async jWrite(fileId, pData, iOffset) {\n try {\n const file = this.mapIdToFile.get(fileId);\n\n if (!file.writable) {\n file.writable = await file.fileHandle.createWritable({ keepExistingData: true });\n }\n await file.writable.seek(iOffset);\n // TODO: restore the subarray() call below once WebKit honors a view's\n // byteOffset and byteLength instead of writing the whole ArrayBuffer,\n // which here is the WASM heap: https://bugs.webkit.org/show_bug.cgi?id=302733\n // await file.writable.write(pData.subarray());\n await file.writable.write(pData.slice());\n file.blob = null;\n\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_WRITE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} iSize \n * @returns {Promise<number>}\n */\n async jTruncate(fileId, iSize) {\n try {\n const file = this.mapIdToFile.get(fileId);\n\n if (!file.writable) {\n file.writable = await file.fileHandle.createWritable({ keepExistingData: true });\n }\n await file.writable.truncate(iSize);\n file.blob = null;\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_TRUNCATE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} flags \n * @returns {Promise<number>}\n */\n async jSync(fileId, flags) {\n try {\n const file = this.mapIdToFile.get(fileId);\n await file.writable?.close();\n file.writable = null;\n file.blob = null;\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_FSYNC;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {DataView} pSize64 \n * @returns {Promise<number>}\n */\n async jFileSize(fileId, pSize64) {\n try {\n const file = this.mapIdToFile.get(fileId);\n\n if (file.writable) {\n await file.writable.close();\n file.writable = null;\n file.blob = null;\n }\n if (!file.blob) {\n file.blob = await file.fileHandle.getFile();\n }\n pSize64.setBigInt64(0, BigInt(file.blob.size), true);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_FSTAT;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} lockType \n * @returns {Promise<number>}\n */\n async jLock(fileId, lockType) {\n if (lockType === VFS.SQLITE_LOCK_SHARED) {\n // Make sure to get a current readable view of the file.\n const file = this.mapIdToFile.get(fileId);\n file.blob = null;\n }\n\n // Call the actual unlock implementation.\n return super.jLock(fileId, lockType);\n }\n\n jGetLastError(zBuf) {\n if (this.lastError) {\n console.error(this.lastError);\n const outputArray = zBuf.subarray(0, zBuf.byteLength - 1);\n const { written } = new TextEncoder().encodeInto(this.lastError.message, outputArray);\n zBuf[written] = 0;\n }\n return VFS.SQLITE_OK\n }\n}\n","import { FacadeVFS } from '../FacadeVFS.js';\nimport * as VFS from '../VFS.js';\n\n// Options for navigator.locks.request().\n/** @type {LockOptions} */ const SHARED = { mode: 'shared' };\n/** @type {LockOptions} */ const POLL_SHARED = { ifAvailable: true, mode: 'shared' };\n/** @type {LockOptions} */ const POLL_EXCLUSIVE = { ifAvailable: true, mode: 'exclusive' };\n\n// Used only for debug logging.\nconst contextId = Math.random().toString(36).slice(2);\n\n/**\n * @typedef {Object} Transaction\n * @property {string} [path]\n * @property {number} txId\n * @property {Map<number, Uint8Array?>} [blocks]\n * @property {number} [fileSize]\n */\n\nclass File {\n /** @type {string} */ path;\n /** @type {number} */ flags;\n\n /** @type {number} */ blockSize;\n /** @type {Map<number, Uint8Array>} */ blocks;\n\n // Members below are only used for SQLITE_OPEN_MAIN_DB.\n\n /** @type {Transaction} */ viewTx; // last transaction incorporated\n /** @type {function?} */ viewReleaser;\n\n /** @type {BroadcastChannel} */ broadcastChannel;\n /** @type {Transaction[]} */ broadcastReceived;\n\n /** @type {number} */ lockState;\n /** @type {{write?: function, reserved?: function, hint?: function}} */ locks;\n\n /** @type {AbortController} */ abortController;\n\n /** @type {Transaction?} */ txActive;\n /** @type {boolean} */ txWriteHint;\n /** @type {boolean} */ txOverwrite;\n\n /** @type {string} */ synchronous;\n\n constructor(pathname, flags) {\n this.path = pathname;\n this.flags = flags;\n\n this.blockSize = 0;\n this.blocks = new Map();\n if (flags & VFS.SQLITE_OPEN_MAIN_DB) {\n this.viewTx = null;\n this.viewReleaser = null;\n this.broadcastChannel = new BroadcastChannel('mirror:' + pathname);\n this.broadcastReceived = [];\n this.lockState = VFS.SQLITE_LOCK_NONE;\n this.locks = {};\n this.txActive = null;\n this.txWriteHint = false;\n this.txOverwrite = false;\n this.synchronous = 'full';\n }\n }\n}\n\nexport class IDBMirrorVFS extends FacadeVFS {\n /** @type {Map<number, File>} */ #mapIdToFile = new Map();\n /** @type {Map<string, File>} */ #mapPathToFile = new Map();\n #lastError = null;\n\n /** @type {IDBDatabase} */ #idb;\n\n log = null; // console.log;\n\n /** @type {Promise} */ #isReady;\n\n static async create(name, module, options) {\n const instance = new IDBMirrorVFS(name, module, options);\n await instance.isReady();\n return instance;\n }\n\n constructor(name, module, options = {}) {\n super(name, module);\n this.#isReady = this.#initialize(name);\n }\n\n async #initialize(name) {\n // Open IndexedDB database, creating it if necessary.\n this.#idb = await new Promise((resolve, reject) => {\n const request = indexedDB.open(name, 1);\n request.onupgradeneeded = (event) => {\n const db = request.result;\n switch (event.oldVersion) {\n case 0:\n db.createObjectStore('blocks', { keyPath: ['path', 'offset'] });\n db.createObjectStore('tx', { keyPath: ['path', 'txId'] });\n break;\n }\n };\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n }\n\n close() {\n return this.#idb.close();\n }\n\n async isReady() {\n await super.isReady();\n return this.#isReady;\n }\n\n /**\n * @param {string?} zName \n * @param {number} fileId \n * @param {number} flags \n * @param {DataView} pOutFlags \n * @returns {Promise<number>}\n */\n async jOpen(zName, fileId, flags, pOutFlags) {\n try {\n const url = new URL(zName || Math.random().toString(36).slice(2), 'file://');\n const path = url.pathname;\n\n let file;\n if (flags & VFS.SQLITE_OPEN_MAIN_DB) {\n // TODO\n file = new File(path, flags);\n\n const idbTx = this.#idb.transaction(['blocks', 'tx'], 'readwrite');\n const blocks = idbTx.objectStore('blocks');\n if (await idbX(blocks.count([path, 0])) === 0) {\n // File does not yet exist.\n if (flags & VFS.SQLITE_OPEN_CREATE) {\n await idbX(blocks.put({ path, offset: 0, data: new Uint8Array(0) }));\n } else {\n throw new Error('File not found');\n }\n }\n \n // Load pages into memory from IndexedDB.\n await new Promise((resolve, reject) => {\n const range = IDBKeyRange.bound([path, 0], [path, Infinity]);\n const request = blocks.openCursor(range);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor) {\n const { offset, data } = cursor.value;\n file.blocks.set(offset, data);\n cursor.continue();\n } else {\n resolve();\n }\n };\n request.onerror = () => reject(request.error);\n });\n file.blockSize = file.blocks.get(0)?.byteLength ?? 0;\n\n // Get the last transaction id.\n const transactions = idbTx.objectStore('tx');\n file.viewTx = await new Promise((resolve, reject) => {\n const range = IDBKeyRange.bound([path, 0], [path, Infinity]);\n const request = transactions.openCursor(range, 'prev');\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor) {\n resolve(cursor.value);\n } else {\n resolve({ txId: 0 });\n }\n };\n request.onerror = () => reject(request.error);\n });\n\n // Publish our view of the database. This prevents other connections\n // from overwriting file data we still need.\n await this.#setView(file, file.viewTx);\n\n // Listen for broadcasts. Messages are cached until the database\n // is unlocked.\n file.broadcastChannel.addEventListener('message', event => {\n file.broadcastReceived.push(event.data);\n if (file.lockState === VFS.SQLITE_LOCK_NONE) {\n this.#processBroadcasts(file);\n }\n });\n } else {\n // Not a main database so not stored in IndexedDB.\n file = this.#mapPathToFile.get(path);\n if (!file) {\n if (flags & VFS.SQLITE_OPEN_CREATE) {\n file = new File(path, flags);\n file.blocks.set(0, new Uint8Array(0));\n } else {\n throw new Error('File not found');\n }\n }\n }\n\n pOutFlags.setInt32(0, flags, true);\n this.#mapIdToFile.set(fileId, file);\n this.#mapPathToFile.set(path, file);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.#lastError = e;\n return VFS.SQLITE_CANTOPEN;\n }\n }\n\n /**\n * @param {string} zName \n * @param {number} syncDir \n * @returns {Promise<number>}\n */\n async jDelete(zName, syncDir) {\n try {\n const url = new URL(zName, 'file://');\n const pathname = url.pathname;\n\n const result = await this.#deleteFile(pathname);\n if (syncDir) {\n await result;\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n return VFS.SQLITE_IOERR_DELETE;\n }\n }\n\n /**\n * @param {string} zName \n * @param {number} flags \n * @param {DataView} pResOut \n * @returns {Promise<number>}\n */\n async jAccess(zName, flags, pResOut) {\n try {\n const url = new URL(zName, 'file://');\n const pathname = url.pathname;\n\n // This test ignores main database files that have not been opened\n // with this connection. SQLite does not call jAccess() on main\n // database files, so avoiding an IndexedDB test saves time.\n const exists = this.#mapPathToFile.has(pathname);\n pResOut.setInt32(0, exists ? 1 : 0, true);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.#lastError = e;\n return VFS.SQLITE_IOERR_ACCESS;\n }\n }\n\n /**\n * @param {number} fileId \n * @returns {Promise<number>}\n */\n async jClose(fileId) {\n try {\n const file = this.#mapIdToFile.get(fileId);\n this.#mapIdToFile.delete(fileId);\n\n if (file?.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n file.broadcastChannel.close();\n file.viewReleaser?.();\n }\n\n if (file?.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) {\n this.#deleteFile(file.path);\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n return VFS.SQLITE_IOERR_CLOSE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number}\n */\n jRead(fileId, pData, iOffset) {\n try {\n const file = this.#mapIdToFile.get(fileId);\n\n let bytesRead = 0;\n let pDataOffset = 0;\n while (pDataOffset < pData.byteLength) {\n // File data is stored in fixed-size blocks. Get the next block\n // needed.\n const fileOffset = iOffset + pDataOffset;\n const blockIndex = Math.floor(fileOffset / file.blockSize);\n const blockOffset = fileOffset % file.blockSize;\n const block =\n file.txActive?.blocks.get(blockIndex * file.blockSize) ??\n file.blocks.get(blockIndex * file.blockSize);\n if (!block) {\n break;\n }\n\n // Copy block data to the read buffer.\n const blockLength = Math.min(\n block.byteLength - blockOffset,\n pData.byteLength - pDataOffset);\n pData.set(block.subarray(blockOffset, blockOffset + blockLength), pDataOffset);\n pDataOffset += blockLength;\n bytesRead += blockLength;\n }\n\n if (bytesRead < pData.byteLength) {\n pData.fill(0, bytesRead);\n return VFS.SQLITE_IOERR_SHORT_READ;\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n this.#lastError = e;\n return VFS.SQLITE_IOERR_READ;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number}\n */\n jWrite(fileId, pData, iOffset) {\n try {\n const file = this.#mapIdToFile.get(fileId);\n\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n this.#requireTxActive(file);\n // SQLite is not necessarily written sequentially, so fill in the\n // unwritten blocks here.\n for (let fillOffset = file.txActive.fileSize;\n fillOffset < iOffset; fillOffset += pData.byteLength) {\n file.txActive.blocks.set(fillOffset, new Uint8Array(pData.byteLength));\n }\n file.txActive.blocks.set(iOffset, pData.slice());\n file.txActive.fileSize = Math.max(file.txActive.fileSize, iOffset + pData.byteLength);\n file.blockSize = pData.byteLength;\n } else {\n // All files that are not main databases are stored in a single\n // block.\n let block = file.blocks.get(0);\n if (iOffset + pData.byteLength > block.byteLength) {\n // Resize the block buffer.\n const newSize = Math.max(iOffset + pData.byteLength, 2 * block.byteLength);\n const newBlock = new Uint8Array(newSize);\n newBlock.set(block);\n file.blocks.set(0, newBlock);\n block = newBlock;\n }\n // pData is a Uint8ArrayProxy, which has no indexed access, so set()\n // would read undefined at every index and store zeroes. subarray()\n // returns a real Uint8Array over the same bytes.\n block.set(pData.subarray(), iOffset);\n file.blockSize = Math.max(file.blockSize, iOffset + pData.byteLength);\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_WRITE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} iSize \n * @returns {number}\n */\n jTruncate(fileId, iSize) {\n try {\n const file = this.#mapIdToFile.get(fileId);\n\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n this.#requireTxActive(file);\n file.txActive.fileSize = iSize;\n } else {\n // All files that are not main databases are stored in a single\n // block.\n if (iSize < file.blockSize) {\n const block = file.blocks.get(0);\n file.blocks.set(0, block.subarray(0, iSize));\n file.blockSize = iSize;\n }\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n console.error(e);\n this.lastError = e;\n return VFS.SQLITE_IOERR_TRUNCATE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {DataView} pSize64 \n * @returns {number|Promise<number>}\n */\n jFileSize(fileId, pSize64) {\n const file = this.#mapIdToFile.get(fileId);\n const size = file.txActive?.fileSize ?? file.blockSize * file.blocks.size;\n pSize64.setBigInt64(0, BigInt(size), true);\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @param {number} lockType \n * @returns {Promise<number>}\n */\n async jLock(fileId, lockType) {\n const file = this.#mapIdToFile.get(fileId);\n if (lockType <= file.lockState) return VFS.SQLITE_OK;\n switch (lockType) {\n case VFS.SQLITE_LOCK_SHARED:\n if (file.txWriteHint) {\n // xFileControl() has hinted that this transaction will\n // write. Acquire the hint lock, which is required to reach\n // the RESERVED state.\n if (!await this.#lock(file, 'hint')) {\n return VFS.SQLITE_BUSY;\n }\n }\n break;\n case VFS.SQLITE_LOCK_RESERVED:\n // Ideally we should already have the hint lock, but if not\n // poll for it here.\n if (!file.locks.hint && !await this.#lock(file, 'hint', POLL_EXCLUSIVE)) {\n return VFS.SQLITE_BUSY;\n }\n\n if (!await this.#lock(file, 'reserved', POLL_EXCLUSIVE)) {\n file.locks.hint();\n return VFS.SQLITE_BUSY;\n }\n\n // In order to write, our view of the database must be up to date.\n // To check this, first fetch all transactions in IndexedDB equal to\n // or greater than our view.\n const idbTx = this.#idb.transaction(['blocks', 'tx']);\n const range = IDBKeyRange.bound(\n [file.path, file.viewTx.txId],\n [file.path, Infinity]);\n\n /** @type {Transaction[]} */\n const entries = await idbX(idbTx.objectStore('tx').getAll(range));\n\n // Ideally the fetched list of transactions should contain one\n // entry matching our view. If not then our view is out of date.\n if (entries.length && entries.at(-1).txId > file.viewTx.txId) {\n // There are newer transactions in IndexedDB that we haven't\n // seen via broadcast. Ensure that they are incorporated on unlock,\n // and force the application to retry.\n const blocks = idbTx.objectStore('blocks');\n for (const entry of entries) {\n // When transactions are stored to IndexedDB, the page data is\n // stripped to save time and space. Restore the page data here.\n for (const offset of Array.from(entry.blocks.keys())) {\n const value = await idbX(blocks.get([file.path, offset]));\n entry.blocks.set(offset, value.data);\n }\n }\n file.broadcastReceived.push(...entries);\n file.locks.reserved();\n return VFS.SQLITE_BUSY\n }\n\n console.assert(entries[0]?.txId === file.viewTx.txId || !file.viewTx.txId);\n break;\n case VFS.SQLITE_LOCK_EXCLUSIVE:\n await this.#lock(file, 'write');\n break;\n }\n file.lockState = lockType;\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @param {number} lockType \n * @returns {number}\n */\n jUnlock(fileId, lockType) {\n const file = this.#mapIdToFile.get(fileId);\n if (lockType >= file.lockState) return VFS.SQLITE_OK;\n switch (lockType) {\n case VFS.SQLITE_LOCK_SHARED:\n file.locks.write?.();\n file.locks.reserved?.();\n file.locks.hint?.();\n break;\n case VFS.SQLITE_LOCK_NONE:\n // Don't release the read lock here. It will be released on demand\n // when a broadcast notifies us that another connections wants to\n // VACUUM.\n this.#processBroadcasts(file);\n file.locks.write?.();\n file.locks.reserved?.();\n file.locks.hint?.();\n break;\n }\n file.lockState = lockType;\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId\n * @param {DataView} pResOut \n * @returns {Promise<number>}\n */\n async jCheckReservedLock(fileId, pResOut) {\n try {\n const file = this.#mapIdToFile.get(fileId);\n console.assert(file.flags & VFS.SQLITE_OPEN_MAIN_DB);\n if (await this.#lock(file, 'reserved', POLL_SHARED)) {\n // This looks backwards, but if we get the lock then no one\n // else had it.\n pResOut.setInt32(0, 0, true);\n file.locks.reserved();\n } else {\n pResOut.setInt32(0, 1, true);\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n console.error(e);\n this.lastError = e;\n return VFS.SQLITE_IOERR_LOCK;\n }\n }\n\n /**\n * @param {number} fileId\n * @param {number} op\n * @param {DataView} pArg\n * @returns {Promise<number>}\n */\n async jFileControl(fileId, op, pArg) {\n try {\n const file = this.#mapIdToFile.get(fileId);\n switch (op) {\n case VFS.SQLITE_FCNTL_PRAGMA:\n const key = cvtString(pArg, 4);\n const value = cvtString(pArg, 8);\n this.log?.('xFileControl', file.path, 'PRAGMA', key, value);\n switch (key.toLowerCase()) {\n case 'page_size':\n // Don't allow changing the page size.\n if (value && file.blockSize && Number(value) !== file.blockSize) {\n return VFS.SQLITE_ERROR;\n }\n break;\n case 'synchronous':\n // This VFS only recognizes 'full' and not 'full'.\n if (value) {\n switch (value.toLowerCase()) {\n case 'full':\n case '2':\n case 'extra':\n case '3':\n file.synchronous = 'full';\n break;\n case 'normal':\n case '1':\n file.synchronous = 'normal';\n break;\n default:\n console.warn(`unsupported synchronous mode: ${value}`);\n return VFS.SQLITE_ERROR;\n }\n }\n break;\n }\n break;\n case VFS.SQLITE_FCNTL_BEGIN_ATOMIC_WRITE:\n this.log?.('xFileControl', 'BEGIN_ATOMIC_WRITE', file.path);\n return VFS.SQLITE_OK;\n case VFS.SQLITE_FCNTL_COMMIT_ATOMIC_WRITE:\n this.log?.('xFileControl', 'COMMIT_ATOMIC_WRITE', file.path);\n return VFS.SQLITE_OK;\n case VFS.SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE:\n this.#dropTx(file);\n return VFS.SQLITE_OK;\n case VFS.SQLITE_FCNTL_SYNC:\n // Propagate database writes to IndexedDB and other clients. Most\n // often this is a SQLite transaction, but it can also be a\n // journal rollback.\n //\n // If SQLITE_FCNTL_OVERWRITE has been received then propagation is\n // deferred until SQLITE_FCNTL_COMMIT_PHASETWO for file truncation.\n this.log?.('xFileControl', 'SYNC', file.path);\n if (file.txActive && !file.txOverwrite) {\n await this.#commitTx(file);\n }\n break;\n case VFS.SQLITE_FCNTL_OVERWRITE:\n // Marks the beginning of a VACUUM.\n file.txOverwrite = true;\n break;\n case VFS.SQLITE_FCNTL_COMMIT_PHASETWO:\n // Commit database writes for VACUUM. Other writes will already\n // be propagated by SQLITE_FCNTL_SYNC.\n this.log?.('xFileControl', 'COMMIT_PHASETWO', file.path);\n if (file.txActive) {\n await this.#commitTx(file);\n }\n file.txOverwrite = false;\n break;\n }\n } catch (e) {\n this.#lastError = e;\n return VFS.SQLITE_IOERR;\n }\n return VFS.SQLITE_NOTFOUND;\n }\n\n /**\n * @param {number} fileId\n * @returns {number|Promise<number>}\n */\n jDeviceCharacteristics(fileId) {\n return 0\n | VFS.SQLITE_IOCAP_BATCH_ATOMIC\n | VFS.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN;\n }\n\n /**\n * @param {Uint8Array} zBuf \n * @returns {number}\n */\n jGetLastError(zBuf) {\n if (this.#lastError) {\n console.error(this.#lastError);\n const outputArray = zBuf.subarray(0, zBuf.byteLength - 1);\n const { written } = new TextEncoder().encodeInto(this.#lastError.message, outputArray);\n zBuf[written] = 0;\n }\n return VFS.SQLITE_OK\n }\n\n /**\n * \n * @param {File} file \n * @param {Transaction} tx \n */\n #acceptTx(file, tx) {\n // Add/update transaction pages.\n for (const [offset, data] of tx.blocks) {\n file.blocks.set(offset, data);\n if (file.blockSize === 0) {\n file.blockSize = data.byteLength;\n }\n }\n\n // Drop the blocks past the end of the file. The first of them starts at\n // fileSize, not one block beyond it, and they need not be contiguous.\n if (file.blockSize) {\n const end = Math.ceil(tx.fileSize / file.blockSize) * file.blockSize;\n for (const offset of [...file.blocks.keys()]) {\n if (offset >= end) {\n file.blocks.delete(offset);\n }\n }\n }\n\n file.viewTx = tx;\n }\n\n /**\n * @param {File} file \n */\n async #commitTx(file) {\n // Advance our own view. Even if we received our own broadcasts (we\n // don't), we want our view to be updated synchronously.\n this.#acceptTx(file, file.txActive);\n this.#setView(file, file.txActive);\n\n const oldestTxId = await this.#getOldestTxInUse(file);\n\n // Update IndexedDB page data.\n const idbTx = this.#idb.transaction(['blocks', 'tx'], 'readwrite');\n const blocks = idbTx.objectStore('blocks');\n for (const [offset, data] of file.txActive.blocks) {\n blocks.put({ path: file.path, offset, data });\n }\n\n // Delete blocks past the end of the file, which the view has just\n // dropped. Without this the store keeps every block a shrinking\n // transaction leaves behind.\n if (file.blockSize) {\n const end = Math.ceil(file.txActive.fileSize / file.blockSize) * file.blockSize;\n blocks.delete(IDBKeyRange.bound([file.path, end], [file.path, Infinity]));\n }\n\n // Delete obsolete transactions no longer needed.\n const oldRange = IDBKeyRange.bound(\n [file.path, -Infinity], [file.path, oldestTxId],\n false, true);\n idbTx.objectStore('tx').delete(oldRange);\n\n // Save transaction object. Omit page data as an optimization.\n const txSansData = Object.assign({}, file.txActive);\n txSansData.blocks = new Map(Array.from(file.txActive.blocks, ([k]) => [k, null]));\n idbTx.objectStore('tx').put(txSansData);\n\n // Broadcast transaction once it commits.\n const complete = new Promise((resolve, reject) => {\n const message = file.txActive;\n idbTx.oncomplete = () => {\n file.broadcastChannel.postMessage(message);\n resolve();\n };\n idbTx.onabort = () => reject(idbTx.error);\n idbTx.commit();\n });\n\n if (file.synchronous === 'full') {\n await complete;\n }\n\n file.txActive = null;\n file.txWriteHint = false;\n }\n\n /**\n * @param {File} file \n */\n #dropTx(file) {\n file.txActive = null;\n file.txWriteHint = false;\n }\n\n /**\n * @param {File} file \n */\n #requireTxActive(file) {\n if (!file.txActive) {\n file.txActive = {\n path: file.path,\n txId: file.viewTx.txId + 1,\n blocks: new Map(),\n fileSize: file.blockSize * file.blocks.size,\n };\n }\n }\n\n /**\n * @param {string} path \n * @returns {Promise}\n */\n async #deleteFile(path) {\n this.#mapPathToFile.delete(path);\n\n // Only main databases are stored in IndexedDB and SQLite never\n // deletes main databases, but delete blocks here anyway for\n // standalone use.\n const request = this.#idb.transaction(['blocks'], 'readwrite')\n .objectStore('blocks')\n .delete(IDBKeyRange.bound([path, 0], [path, Infinity]));\n await new Promise((resolve, reject) => {\n const idbTx = request.transaction;\n idbTx.oncomplete = resolve;\n idbTx.onerror = () => reject(idbTx.error);\n });\n }\n\n /**\n * @param {File} file \n * @returns {Promise<number>}\n */\n async #getOldestTxInUse(file) {\n // Each connection holds a shared Web Lock with a name that encodes\n // the latest transaction it knows about. We can find the oldest\n // transaction by listing the those locks and extracting the earliest\n // transaction id.\n const TX_LOCK_REGEX = /^(.*)@@\\[(\\d+)\\]$/;\n let oldestTxId = file.viewTx.txId;\n const locks = await navigator.locks.query();\n for (const { name } of locks.held) {\n const m = TX_LOCK_REGEX.exec(name);\n if (m && m[1] === file.path) {\n oldestTxId = Math.min(oldestTxId, Number(m[2]));\n }\n }\n return oldestTxId;\n }\n\n /**\n * Acquire one of the database file internal Web Locks.\n * @param {File} file \n * @param {'write'|'reserved'|'hint'} name \n * @param {LockOptions} options \n * @returns {Promise<boolean>}\n */\n #lock(file, name, options = {}) {\n return new Promise(resolve => {\n const lockName = `${file.path}@@${name}`;\n navigator.locks.request(lockName, options, lock => {\n if (lock) {\n return new Promise(release => {\n file.locks[name] = () => {\n release();\n file.locks[name] = null;\n };\n resolve(true);\n });\n } else {\n file.locks[name] = null;\n resolve(false);\n }\n }).catch(e => {\n if (e.name !== 'AbortError') throw e;\n });\n });\n }\n\n /**\n * Handle prevously received messages from other connections.\n * @param {File} file \n */\n #processBroadcasts(file) {\n // Sort transaction messages by id.\n file.broadcastReceived.sort((a, b) => a.txId - b.txId);\n\n let nHandled = 0;\n let newTx = file.viewTx;\n for (const message of file.broadcastReceived) {\n if (message.txId <= newTx.txId) {\n // This transaction is already incorporated into our view.\n } else if (message.txId === newTx.txId + 1) {\n // This is the next expected transaction.\n this.log?.(`accept tx ${message.txId}`);\n this.#acceptTx(file, message);\n newTx = message;\n } else {\n // There is a gap in the transaction sequence.\n console.warn(`missing tx ${newTx.txId + 1} (got ${message.txId})`);\n break;\n }\n nHandled++;\n }\n\n // Remove handled messages from the list.\n file.broadcastReceived.splice(0, nHandled);\n\n // Tell other connections about a change in our view.\n if (newTx.txId > file.viewTx.txId) {\n // No need to await here.\n this.#setView(file, newTx);\n }\n }\n\n /**\n * @param {File} file \n * @param {Transaction} tx \n */\n async #setView(file, tx) {\n // Publish our view of the database with a lock name that includes\n // the transaction id. As long as we hold the lock, no other connection\n // will overwrite data we are using.\n file.viewTx = tx;\n const lockName = `${file.path}@@[${tx.txId}]`;\n const newReleaser = await new Promise(resolve => {\n navigator.locks.request(lockName, SHARED, lock => {\n return new Promise(release => {\n resolve(release);\n });\n });\n });\n\n // The new lock is acquired so release the old one.\n file.viewReleaser?.();\n file.viewReleaser = newReleaser;\n }\n}\n\n/**\n * Wrap IndexedDB request with a Promise.\n * @param {IDBRequest} request \n * @returns \n */\nfunction idbX(request) {\n return new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n}\n\n/**\n * Extract a C string from WebAssembly memory.\n * @param {DataView} dataView \n * @param {number} offset \n * @returns \n */\nfunction cvtString(dataView, offset) {\n const p = dataView.getUint32(offset, true);\n if (p) {\n const chars = new Uint8Array(dataView.buffer, p);\n return new TextDecoder().decode(chars.subarray(0, chars.indexOf(0)));\n }\n return null;\n}\n","// Copyright 2024 Roy T. Hashimoto. All Rights Reserved.\nimport { FacadeVFS } from '../FacadeVFS.js';\nimport * as VFS from '../VFS.js';\nimport { WebLocksMixin } from '../WebLocksMixin.js';\n\nconst RETRYABLE_ERRORS = new Set([\n 'TransactionInactiveError',\n 'InvalidStateError'\n]);\n\n/**\n * @typedef Metadata\n * @property {string} name\n * @property {number} fileSize\n * @property {number} version\n * @property {number} [pendingVersion]\n */\n\nclass File {\n /** @type {string} */ path;\n /** @type {number} */ flags;\n\n /** @type {Metadata} */ metadata;\n /** @type {number} */ fileSize = 0;\n\n /** @type {boolean} */ needsMetadataSync = false;\n /** @type {Metadata} */ rollback = null;\n /** @type {Set<number>} */ changedPages = new Set();\n\n /** @type {string} */ synchronous = 'full';\n /** @type {IDBTransactionOptions} */ txOptions = { durability: 'strict' };\n\n constructor(path, flags, metadata) {\n this.path = path;\n this.flags = flags;\n this.metadata = metadata;\n }\n}\n\nexport class IDBBatchAtomicVFS extends WebLocksMixin(FacadeVFS) {\n /** @type {Map<number, File>} */ mapIdToFile = new Map();\n lastError = null;\n\n log = null; // console.log\n\n /** @type {Promise} */ #isReady;\n /** @type {IDBContext} */ #idb;\n\n static async create(name, module, options) {\n const vfs = new IDBBatchAtomicVFS(name, module, options);\n await vfs.isReady();\n return vfs;\n }\n\n constructor(name, module, options = {}) {\n super(name, module, options);\n this.#isReady = this.#initialize(options.idbName ?? name);\n }\n\n async #initialize(name) {\n this.#idb = await IDBContext.create(name);\n }\n\n close() {\n this.#idb.close();\n }\n \n async isReady() {\n await super.isReady();\n await this.#isReady;\n }\n\n getFilename(fileId) {\n const pathname = this.mapIdToFile.get(fileId).path;\n return `IDB(${this.name}):${pathname}`\n }\n \n /**\n * @param {string?} zName \n * @param {number} fileId \n * @param {number} flags \n * @param {DataView} pOutFlags \n * @returns {Promise<number>}\n */\n async jOpen(zName, fileId, flags, pOutFlags) {\n try {\n const url = new URL(zName || Math.random().toString(36).slice(2), 'file://');\n const path = url.pathname;\n\n let meta = await this.#idb.q(({ metadata }) => metadata.get(path));\n if (!meta && (flags & VFS.SQLITE_OPEN_CREATE)) {\n meta = {\n name: path,\n fileSize: 0,\n version: 0\n };\n await this.#idb.q(({ metadata }) => metadata.put(meta), 'rw');\n }\n \n if (!meta) {\n throw new Error(`File ${path} not found`);\n }\n\n const file = new File(path, flags, meta);\n this.mapIdToFile.set(fileId, file);\n pOutFlags.setInt32(0, flags, true);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_CANTOPEN;\n }\n }\n\n /**\n * @param {string} zName \n * @param {number} syncDir \n * @returns {Promise<number>}\n */\n async jDelete(zName, syncDir) {\n try {\n const url = new URL(zName, 'file://');\n const path = url.pathname;\n\n this.#idb.q(({ metadata, blocks }) => {\n const range = IDBKeyRange.bound([path, -Infinity], [path, Infinity]);\n blocks.delete(range);\n metadata.delete(path);\n }, 'rw');\n\n if (syncDir) {\n await this.#idb.sync(false);\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_DELETE;\n }\n }\n\n /**\n * @param {string} zName \n * @param {number} flags \n * @param {DataView} pResOut \n * @returns {Promise<number>}\n */\n async jAccess(zName, flags, pResOut) {\n try {\n const url = new URL(zName, 'file://');\n const path = url.pathname;\n\n const meta = await this.#idb.q(({ metadata }) => metadata.get(path));\n pResOut.setInt32(0, meta ? 1 : 0, true);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_ACCESS;\n } \n }\n\n /**\n * @param {number} fileId \n * @returns {Promise<number>}\n */\n async jClose(fileId) {\n try {\n const file = this.mapIdToFile.get(fileId);\n this.mapIdToFile.delete(fileId);\n\n if (file.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) {\n await this.#idb.q(({ metadata, blocks }) => {\n metadata.delete(file.path);\n blocks.delete(IDBKeyRange.bound([file.path, 0], [file.path, Infinity]));\n }, 'rw'); \n }\n\n if (file.needsMetadataSync) {\n this.#idb.q(({ metadata }) => metadata.put(file.metadata), 'rw');\n }\n await this.#idb.sync(file.synchronous === 'full');\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_CLOSE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {Promise<number>}\n */\n async jRead(fileId, pData, iOffset) {\n try {\n const file = this.mapIdToFile.get(fileId);\n\n let pDataOffset = 0;\n while (pDataOffset < pData.byteLength) {\n // Fetch the IndexedDB block for this file location.\n const fileOffset = iOffset + pDataOffset;\n const block = await this.#idb.q(({ blocks }) => {\n const range = IDBKeyRange.bound([file.path, -fileOffset], [file.path, Infinity]);\n return blocks.get(range);\n }); \n \n if (!block || block.data.byteLength - block.offset <= fileOffset) {\n pData.fill(0, pDataOffset);\n return VFS.SQLITE_IOERR_SHORT_READ;\n }\n\n // Copy block data.\n const dst = pData.subarray(pDataOffset);\n const srcOffset = fileOffset + block.offset;\n const nBytesToCopy = Math.min(\n Math.max(block.data.byteLength - srcOffset, 0),\n dst.byteLength);\n dst.set(block.data.subarray(srcOffset, srcOffset + nBytesToCopy));\n pDataOffset += nBytesToCopy;\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_READ;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number}\n */\n jWrite(fileId, pData, iOffset) {\n try {\n const file = this.mapIdToFile.get(fileId);\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n if (!file.rollback) {\n // Begin a new write transaction.\n // Add pendingVersion to the metadata in IndexedDB. If we crash\n // during the transaction, this lets subsequent connections\n // know to remove blocks from the failed transaction.\n const pending = Object.assign(\n { pendingVersion: file.metadata.version - 1 },\n file.metadata);\n this.#idb.q(({ metadata }) => metadata.put(pending), 'rw', file.txOptions);\n\n file.rollback = Object.assign({}, file.metadata);\n file.metadata.version--;\n }\n }\n\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n file.changedPages.add(iOffset);\n }\n\n const data = pData.slice();\n const version = file.metadata.version;\n const isOverwrite = iOffset < file.metadata.fileSize;\n if (!isOverwrite ||\n file.flags & VFS.SQLITE_OPEN_MAIN_DB ||\n file.flags & VFS.SQLITE_OPEN_TEMP_DB) {\n const block = {\n path: file.path,\n offset: -iOffset,\n version: version,\n data: pData.slice()\n };\n this.#idb.q(({ blocks }) => {\n blocks.put(block);\n file.changedPages.add(iOffset);\n }, 'rw', file.txOptions);\n } else {\n this.#idb.q(async ({ blocks }) => {\n // Walk the blocks this write covers, the way jRead does. A single\n // block starting exactly at iOffset and holding the whole write is\n // the common case, not a guarantee: SQLite writes its transient\n // files out of order, so nothing may start at iOffset at all, and it\n // rewrites parts of a journal header, so a block may be shorter than\n // what is written over it.\n let dataOffset = 0;\n while (dataOffset < data.byteLength) {\n const fileOffset = iOffset + dataOffset;\n const range = IDBKeyRange.bound(\n [file.path, -fileOffset],\n [file.path, Infinity]);\n const block = await blocks.get(range);\n\n if (!block || block.data.byteLength - block.offset <= fileOffset) {\n // No block reaches this offset. Store the rest as its own block,\n // as the branch above does for a file being extended.\n blocks.put({\n path: file.path,\n offset: -fileOffset,\n version: version,\n data: data.slice(dataOffset)\n });\n return;\n }\n\n // Modify the block data.\n const blockOffset = fileOffset + block.offset;\n const nBytes = Math.min(\n block.data.byteLength - blockOffset,\n data.byteLength - dataOffset);\n // @ts-ignore\n block.data.subarray(blockOffset, blockOffset + nBytes)\n .set(data.subarray(dataOffset, dataOffset + nBytes));\n\n // Write back.\n blocks.put(block);\n dataOffset += nBytes;\n }\n }, 'rw', file.txOptions);\n\n }\n\n if (file.metadata.fileSize < iOffset + pData.length) {\n file.metadata.fileSize = iOffset + pData.length;\n file.needsMetadataSync = true;\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_WRITE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} iSize \n * @returns {number}\n */\n jTruncate(fileId, iSize) {\n try {\n const file = this.mapIdToFile.get(fileId);\n if (iSize < file.metadata.fileSize) {\n this.#idb.q(({ blocks }) => {\n const range = IDBKeyRange.bound(\n [file.path, -Infinity],\n [file.path, -iSize, Infinity]);\n blocks.delete(range);\n }, 'rw', file.txOptions);\n file.metadata.fileSize = iSize;\n file.needsMetadataSync = true;\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_TRUNCATE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} flags \n * @returns {Promise<number>}\n */\n async jSync(fileId, flags) {\n try {\n const file = this.mapIdToFile.get(fileId);\n if (file.needsMetadataSync) {\n this.#idb.q(({ metadata }) => metadata.put(file.metadata), 'rw', file.txOptions);\n file.needsMetadataSync = false;\n }\n\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n // Sync is only needed here for durability. Visibility for other\n // connections is ensured in jUnlock().\n if (file.synchronous === 'full') {\n await this.#idb.sync(true);\n }\n } else {\n await this.#idb.sync(file.synchronous === 'full');\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_FSYNC;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {DataView} pSize64 \n * @returns {number}\n */\n jFileSize(fileId, pSize64) {\n try {\n const file = this.mapIdToFile.get(fileId);\n pSize64.setBigInt64(0, BigInt(file.metadata.fileSize), true);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_FSTAT;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} lockType \n * @returns {Promise<number>}\n */\n async jLock(fileId, lockType) {\n // Call the actual lock implementation.\n const file = this.mapIdToFile.get(fileId);\n const result = await super.jLock(fileId, lockType);\n\n if (lockType === VFS.SQLITE_LOCK_SHARED) {\n // Update metadata.\n file.metadata = await this.#idb.q(async ({ metadata, blocks }) => {\n // @ts-ignore\n /** @type {Metadata} */ const m = await metadata.get(file.path);\n if (m.pendingVersion) {\n console.warn(`removing failed transaction ${m.pendingVersion}`);\n await new Promise((resolve, reject) => {\n const range = IDBKeyRange.bound([m.name, -Infinity], [m.name, Infinity]);\n const request = blocks.openCursor(range);\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor) {\n const block = cursor.value;\n if (block.version < m.version) {\n cursor.delete();\n }\n cursor.continue();\n } else {\n resolve();\n }\n };\n request.onerror = () => reject(request.error);\n })\n\n delete m.pendingVersion;\n metadata.put(m);\n }\n return m;\n }, 'rw', file.txOptions);\n }\n return result;\n }\n\n /**\n * @param {number} fileId \n * @param {number} lockType \n * @returns {Promise<number>}\n */\n async jUnlock(fileId, lockType) {\n if (lockType === VFS.SQLITE_LOCK_NONE) {\n const file = this.mapIdToFile.get(fileId);\n await this.#idb.sync(file.synchronous === 'full');\n }\n\n // Call the actual unlock implementation.\n return super.jUnlock(fileId, lockType);\n }\n\n /**\n * @param {number} fileId\n * @param {number} op\n * @param {DataView} pArg\n * @returns {number|Promise<number>}\n */\n jFileControl(fileId, op, pArg) {\n try {\n const file = this.mapIdToFile.get(fileId);\n switch (op) {\n case VFS.SQLITE_FCNTL_PRAGMA:\n const key = extractString(pArg, 4);\n const value = extractString(pArg, 8);\n this.log?.('xFileControl', file.path, 'PRAGMA', key, value);\n const setPragmaResponse = response => {\n const encoded = new TextEncoder().encode(response);\n const out = this._module._sqlite3_malloc(encoded.byteLength);\n const outArray = this._module.HEAPU8.subarray(out, out + encoded.byteLength);\n outArray.set(encoded);\n pArg.setUint32(0, out, true);\n return VFS.SQLITE_ERROR;\n };\n switch (key.toLowerCase()) {\n case 'page_size':\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n // Don't allow changing the page size.\n if (value && file.metadata.fileSize) {\n return VFS.SQLITE_ERROR;\n }\n }\n break;\n case 'synchronous':\n if (value) {\n switch (value.toLowerCase()) {\n case '0':\n case 'off':\n file.synchronous = 'off';\n file.txOptions = { durability: 'relaxed' };\n break;\n case '1':\n case 'normal':\n file.synchronous = 'normal';\n file.txOptions = { durability: 'relaxed' };\n break;\n case '2':\n case '3':\n case 'full':\n case 'extra':\n file.synchronous = 'full';\n file.txOptions = { durability: 'strict' };\n break;\n }\n }\n break;\n case 'write_hint':\n return super.jFileControl(fileId, WebLocksMixin.WRITE_HINT_OP_CODE, null);\n }\n break;\n case VFS.SQLITE_FCNTL_SYNC:\n this.log?.('xFileControl', file.path, 'SYNC');\n if (file.rollback) {\n const commitMetadata = Object.assign({}, file.metadata);\n const prevFileSize = file.rollback.fileSize\n this.#idb.q(({ metadata, blocks }) => {\n metadata.put(commitMetadata);\n\n // Remove old page versions.\n for (const offset of file.changedPages) {\n if (offset < prevFileSize) {\n const range = IDBKeyRange.bound(\n [file.path, -offset, commitMetadata.version],\n [file.path, -offset, Infinity],\n true);\n blocks.delete(range);\n }\n }\n file.changedPages.clear();\n }, 'rw', file.txOptions);\n file.needsMetadataSync = false;\n file.rollback = null;\n }\n break;\n case VFS.SQLITE_FCNTL_BEGIN_ATOMIC_WRITE:\n // Every write transaction is atomic, so this is a no-op.\n this.log?.('xFileControl', file.path, 'BEGIN_ATOMIC_WRITE');\n return VFS.SQLITE_OK;\n case VFS.SQLITE_FCNTL_COMMIT_ATOMIC_WRITE:\n // Every write transaction is atomic, so this is a no-op.\n this.log?.('xFileControl', file.path, 'COMMIT_ATOMIC_WRITE');\n return VFS.SQLITE_OK;\n case VFS.SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE:\n this.log?.('xFileControl', file.path, 'ROLLBACK_ATOMIC_WRITE');\n file.metadata = file.rollback;\n const rollbackMetadata = Object.assign({}, file.metadata);\n this.#idb.q(({ metadata, blocks }) => {\n metadata.put(rollbackMetadata);\n\n // Remove pages.\n for (const offset of file.changedPages) {\n blocks.delete([file.path, -offset, rollbackMetadata.version - 1]);\n }\n file.changedPages.clear();\n }, 'rw', file.txOptions);\n file.needsMetadataSync = false;\n file.rollback = null;\n return VFS.SQLITE_OK;\n }\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR;\n }\n return super.jFileControl(fileId, op, pArg);\n }\n \n /**\n * @param {number} pFile\n * @returns {number|Promise<number>}\n */\n jDeviceCharacteristics(pFile) {\n return 0\n | VFS.SQLITE_IOCAP_BATCH_ATOMIC\n | VFS.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN;\n }\n\n /**\n * @param {Uint8Array} zBuf \n * @returns {number|Promise<number>}\n */\n jGetLastError(zBuf) {\n if (this.lastError) {\n console.error(this.lastError);\n const outputArray = zBuf.subarray(0, zBuf.byteLength - 1);\n const { written } = new TextEncoder().encodeInto(this.lastError.message, outputArray);\n zBuf[written] = 0;\n }\n return VFS.SQLITE_OK\n }\n}\n\nfunction extractString(dataView, offset) {\n const p = dataView.getUint32(offset, true);\n if (p) {\n const chars = new Uint8Array(dataView.buffer, p);\n return new TextDecoder().decode(chars.subarray(0, chars.indexOf(0)));\n }\n return null;\n}\n\nexport class IDBContext {\n /** @type {IDBDatabase} */ #database;\n\n /** @type {Promise} */ #chain = null;\n /** @type {Promise<any>} */ #txComplete = Promise.resolve();\n /** @type {IDBRequest?} */ #request = null;\n /** @type {WeakSet<IDBTransaction>} */ #txPending = new WeakSet();\n \n log = null;\n\n static async create(name) {\n const database = await new Promise((resolve, reject) => {\n const request = indexedDB.open(name, 6);\n request.onupgradeneeded = async event => {\n const db = request.result;\n if (event.oldVersion) {\n console.log(`Upgrading IndexedDB from version ${event.oldVersion}`);\n }\n switch (event.oldVersion) {\n case 0:\n // Start with the original schema.\n db.createObjectStore('blocks', { keyPath: ['path', 'offset', 'version']})\n .createIndex('version', ['path', 'version']);\n // fall through intentionally\n case 5:\n const tx = request.transaction;\n const blocks = tx.objectStore('blocks');\n blocks.deleteIndex('version');\n const metadata = db.createObjectStore('metadata', { keyPath: 'name' });\n\n await new Promise((resolve, reject) => {\n // Iterate over all the blocks.\n let lastBlock = {};\n const request = tx.objectStore('blocks').openCursor();\n request.onsuccess = () => {\n const cursor = request.result;\n if (cursor) {\n const block = cursor.value;\n if (typeof block.offset !== 'number' ||\n (block.path === lastBlock.path && block.offset === lastBlock.offset)) {\n // Remove superceded block (or the \"purge\" info).\n cursor.delete();\n } else if (block.offset === 0) {\n // Move metadata to its own store.\n metadata.put({\n name: block.path,\n fileSize: block.fileSize,\n version: block.version\n });\n\n delete block.fileSize;\n cursor.update(block);\n }\n lastBlock = block;\n cursor.continue();\n } else {\n resolve();\n }\n };\n request.onerror = () => reject(request.error);\n });\n break;\n }\n };\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n return new IDBContext(database);\n }\n\n constructor(database) {\n this.#database = database;\n }\n\n close() {\n this.#database.close();\n }\n\n /**\n * @param {(stores: Object.<string, IDBObjectStore>) => any} f \n * @param {'ro'|'rw'} mode \n * @returns {Promise<any>}\n */\n q(f, mode = 'ro', options = {}) {\n /** @type {IDBTransactionMode} */\n const txMode = mode === 'ro' ? 'readonly' : 'readwrite';\n const txOptions = Object.assign({\n /** @type {IDBTransactionDurability} */ durability: 'default'\n }, options);\n\n // Ensure that queries run sequentially. If any function rejects,\n // or any request has an error, or the transaction does not commit,\n // then no subsequent functions will run until sync() or reset().\n this.#chain = (this.#chain || Promise.resolve())\n .then(() => this.#q(f, txMode, txOptions));\n return this.#chain;\n }\n\n /**\n * @param {(stores: Object.<string, IDBObjectStore>) => any} f \n * @param {IDBTransactionMode} mode \n * @param {IDBTransactionOptions} options\n * @returns {Promise<any>}\n */\n async #q(f, mode, options) {\n /** @type {IDBTransaction} */ let tx;\n if (this.#request &&\n this.#txPending.has(this.#request.transaction) &&\n this.#request.transaction.mode >= mode &&\n this.#request.transaction.durability === options.durability) {\n // The previous request transaction is compatible and has\n // not yet completed.\n tx = this.#request.transaction;\n\n // If the previous request is pending, wait for it to complete.\n // This ensures that the transaction will be active.\n if (this.#request.readyState === 'pending') {\n await new Promise(resolve => {\n this.#request.addEventListener('success', resolve, { once: true });\n this.#request.addEventListener('error', resolve, { once: true });\n });\n }\n }\n\n for (let i = 0; i < 2; ++i) {\n if (!tx) {\n // The current transaction is missing or doesn't match so\n // replace it with a new one. wait for the previous\n // transaction to complete so the lifetimes do not overlap.\n await this.#txComplete;\n\n // Create the new transaction.\n // @ts-ignore\n tx = this.#database.transaction(this.#database.objectStoreNames, mode, options);\n this.log?.('IDBTransaction open', mode);\n this.#txPending.add(tx);\n this.#txComplete = new Promise((resolve, reject) => {\n tx.addEventListener('complete', () => {\n this.log?.('IDBTransaction complete');\n this.#txPending.delete(tx);\n resolve();\n });\n tx.addEventListener('abort', () => {\n this.#txPending.delete(tx);\n reject(new Error('transaction aborted'));\n });\n });\n }\n\n try {\n // @ts-ignore\n // Create object store proxies.\n const objectStores = [...tx.objectStoreNames].map(name => {\n return [name, this.proxyStoreOrIndex(tx.objectStore(name))];\n });\n\n // Execute the function.\n return await f(Object.fromEntries(objectStores));\n } catch (e) {\n // Use a new transaction if this one was inactive. This will\n // happen if the last request in the transaction completed\n // in a previous task but the transaction has not yet committed.\n if (!i && RETRYABLE_ERRORS.has(e.name)) {\n this.log?.(`${e.name}, retrying`);\n tx = null;\n continue;\n }\n throw e;\n }\n }\n }\n\n /**\n * Object store methods that return an IDBRequest, except for cursor\n * creation, are wrapped to return a Promise. In addition, the\n * request is used internally for chaining.\n * @param {IDBObjectStore} objectStore \n * @returns \n */\n proxyStoreOrIndex(objectStore) {\n return new Proxy(objectStore, {\n get: (target, property, receiver) => {\n const result = Reflect.get(target, property, receiver);\n if (typeof result === 'function') {\n return (...args) => {\n const maybeRequest = Reflect.apply(result, target, args);\n // @ts-ignore\n if (maybeRequest instanceof IDBRequest && !property.endsWith('Cursor')) {\n // // Debug logging.\n // this.log?.(`${target.name}.${String(property)}`, args);\n // maybeRequest.addEventListener('success', () => {\n // this.log?.(`${target.name}.${String(property)} success`, maybeRequest.result);\n // });\n // maybeRequest.addEventListener('error', () => {\n // this.log?.(`${target.name}.${String(property)} error`, maybeRequest.error);\n // });\n \n // Save the request.\n this.#request = maybeRequest;\n\n // Abort the transaction on error.\n maybeRequest.addEventListener('error', () => {\n console.error(maybeRequest.error);\n maybeRequest.transaction.abort();\n }, { once: true }); \n\n // Return a Promise.\n return wrap(maybeRequest);\n }\n return maybeRequest;\n }\n }\n return result;\n }\n });\n }\n\n /**\n * @param {boolean} durable \n */\n async sync(durable) {\n if (this.#chain) {\n // This waits for all IndexedDB calls to be made.\n await this.#chain;\n if (durable) {\n // This waits for the final transaction to commit.\n await this.#txComplete;\n }\n this.reset();\n }\n }\n\n reset() {\n this.#chain = null;\n this.#txComplete = Promise.resolve();\n this.#request = null;\n }\n}\n\n/**\n * @param {IDBRequest} request \n * @returns {Promise}\n */\nfunction wrap(request) {\n return new Promise((resolve, reject) => {\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n}\n\n","// Copyright 2023 Roy T. Hashimoto. All Rights Reserved.\nimport { FacadeVFS } from '../FacadeVFS.js';\nimport * as VFS from '../VFS.js';\n\nconst SECTOR_SIZE = 4096;\n\n// Each OPFS file begins with a fixed-size header with metadata. The\n// contents of the file follow immediately after the header.\nconst HEADER_MAX_PATH_SIZE = 512;\nconst HEADER_FLAGS_SIZE = 4;\nconst HEADER_DIGEST_SIZE = 8;\nconst HEADER_CORPUS_SIZE = HEADER_MAX_PATH_SIZE + HEADER_FLAGS_SIZE;\nconst HEADER_OFFSET_FLAGS = HEADER_MAX_PATH_SIZE;\nconst HEADER_OFFSET_DIGEST = HEADER_CORPUS_SIZE;\nconst HEADER_OFFSET_DATA = SECTOR_SIZE;\n\n// These file types are expected to persist in the file system outside\n// a session. Other files will be removed on VFS start.\nconst PERSISTENT_FILE_TYPES =\n VFS.SQLITE_OPEN_MAIN_DB |\n VFS.SQLITE_OPEN_MAIN_JOURNAL |\n VFS.SQLITE_OPEN_SUPER_JOURNAL |\n VFS.SQLITE_OPEN_WAL;\n\nconst DEFAULT_CAPACITY = 6;\n\n/**\n * This VFS uses the updated Access Handle API with all synchronous methods\n * on FileSystemSyncAccessHandle (instead of just read and write). It will\n * work with the regular SQLite WebAssembly build, i.e. the one without\n * Asyncify.\n */\nexport class AccessHandlePoolVFS extends FacadeVFS {\n log = null; //function(...args) { console.log(`[${contextName}]`, ...args) };\n\n // All the OPFS files the VFS uses are contained in one flat directory\n // specified in the constructor. No other files should be written here.\n #directoryPath;\n #directoryHandle;\n\n // The OPFS files all have randomly-generated names that do not match\n // the SQLite files whose data they contain. This map links those names\n // with their respective OPFS access handles.\n #mapAccessHandleToName = new Map();\n\n // When a SQLite file is associated with an OPFS file, that association\n // is kept in #mapPathToAccessHandle. Each access handle is in exactly\n // one of #mapPathToAccessHandle or #availableAccessHandles.\n #mapPathToAccessHandle = new Map();\n #availableAccessHandles = new Set();\n\n #mapIdToFile = new Map();\n\n static async create(name, module) {\n const vfs = new AccessHandlePoolVFS(name, module);\n await vfs.isReady();\n return vfs;\n }\n \n constructor(name, module) {\n super(name, module);\n this.#directoryPath = name;\n }\n\n /**\n * @param {string?} zName \n * @param {number} fileId \n * @param {number} flags \n * @param {DataView} pOutFlags \n * @returns {number}\n */\n jOpen(zName, fileId, flags, pOutFlags) {\n try {\n // First try to open a path that already exists in the file system.\n const path = zName ? this.#getPath(zName) : Math.random().toString(36);\n let accessHandle = this.#mapPathToAccessHandle.get(path);\n if (!accessHandle && (flags & VFS.SQLITE_OPEN_CREATE)) {\n // File not found so try to create it.\n if (this.getSize() < this.getCapacity()) {\n // Choose an unassociated OPFS file from the pool.\n ([accessHandle] = this.#availableAccessHandles.keys());\n this.#setAssociatedPath(accessHandle, path, flags);\n } else {\n // Out of unassociated files. This can be fixed by calling\n // addCapacity() from the application.\n throw new Error('cannot create file');\n }\n }\n if (!accessHandle) {\n throw new Error('file not found');\n }\n // Subsequent methods are only passed the fileId, so make sure we have\n // a way to get the file resources.\n const file = { path, flags, accessHandle };\n this.#mapIdToFile.set(fileId, file);\n\n pOutFlags.setInt32(0, flags, true);\n return VFS.SQLITE_OK;\n } catch (e) {\n console.error(e.message);\n return VFS.SQLITE_CANTOPEN;\n }\n }\n\n /**\n * @param {number} fileId \n * @returns {number}\n */\n jClose(fileId) {\n const file = this.#mapIdToFile.get(fileId);\n if (file) {\n file.accessHandle.flush();\n this.#mapIdToFile.delete(fileId);\n if (file.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) {\n this.#deletePath(file.path);\n }\n }\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number}\n */\n jRead(fileId, pData, iOffset) {\n const file = this.#mapIdToFile.get(fileId);\n const nBytes = file.accessHandle.read(\n pData.subarray(),\n { at: HEADER_OFFSET_DATA + iOffset });\n if (nBytes < pData.byteLength) {\n pData.fill(0, nBytes, pData.byteLength);\n return VFS.SQLITE_IOERR_SHORT_READ;\n }\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number}\n */\n jWrite(fileId, pData, iOffset) {\n const file = this.#mapIdToFile.get(fileId);\n const nBytes = file.accessHandle.write(\n pData.subarray(),\n { at: HEADER_OFFSET_DATA + iOffset });\n return nBytes === pData.byteLength ? VFS.SQLITE_OK : VFS.SQLITE_IOERR;\n }\n\n /**\n * @param {number} fileId \n * @param {number} iSize \n * @returns {number}\n */\n jTruncate(fileId, iSize) {\n const file = this.#mapIdToFile.get(fileId);\n file.accessHandle.truncate(HEADER_OFFSET_DATA + iSize);\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @param {number} flags \n * @returns {number}\n */\n jSync(fileId, flags) {\n const file = this.#mapIdToFile.get(fileId);\n file.accessHandle.flush();\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @param {DataView} pSize64 \n * @returns {number}\n */\n jFileSize(fileId, pSize64) {\n const file = this.#mapIdToFile.get(fileId);\n const size = file.accessHandle.getSize() - HEADER_OFFSET_DATA;\n pSize64.setBigInt64(0, BigInt(size), true);\n return VFS.SQLITE_OK;\n }\n\n jSectorSize(fileId) {\n return SECTOR_SIZE;\n }\n\n jDeviceCharacteristics(fileId) {\n return VFS.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN;\n }\n\n /**\n * @param {string} zName \n * @param {number} flags \n * @param {DataView} pResOut \n * @returns {number}\n */\n jAccess(zName, flags, pResOut) {\n const path = this.#getPath(zName);\n pResOut.setInt32(0, this.#mapPathToAccessHandle.has(path) ? 1 : 0, true);\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {string} zName \n * @param {number} syncDir \n * @returns {number}\n */\n jDelete(zName, syncDir) {\n const path = this.#getPath(zName);\n this.#deletePath(path);\n return VFS.SQLITE_OK;\n }\n\n async close() {\n await this.#releaseAccessHandles();\n }\n\n async isReady() {\n if (!this.#directoryHandle) {\n // All files are stored in a single directory.\n let handle = await navigator.storage.getDirectory();\n for (const d of this.#directoryPath.split('/')) {\n if (d) {\n handle = await handle.getDirectoryHandle(d, { create: true });\n }\n }\n this.#directoryHandle = handle;\n\n await this.#acquireAccessHandles();\n if (this.getCapacity() === 0) {\n await this.addCapacity(DEFAULT_CAPACITY);\n }\n }\n return true;\n }\n\n /**\n * Returns the number of SQLite files in the file system.\n * @returns {number}\n */\n getSize() {\n return this.#mapPathToAccessHandle.size;\n }\n\n /**\n * Returns the maximum number of SQLite files the file system can hold.\n * @returns {number}\n */\n getCapacity() {\n return this.#mapAccessHandleToName.size;\n }\n\n /**\n * Increase the capacity of the file system by n.\n * @param {number} n \n * @returns {Promise<number>} \n */\n async addCapacity(n) {\n for (let i = 0; i < n; ++i) {\n const name = Math.random().toString(36).replace('0.', '');\n const handle = await this.#directoryHandle.getFileHandle(name, { create: true });\n const accessHandle = await handle.createSyncAccessHandle();\n this.#mapAccessHandleToName.set(accessHandle, name);\n\n this.#setAssociatedPath(accessHandle, '', 0);\n }\n return n;\n }\n\n /**\n * Decrease the capacity of the file system by n. The capacity cannot be\n * decreased to fewer than the current number of SQLite files in the\n * file system.\n * @param {number} n \n * @returns {Promise<number>}\n */\n async removeCapacity(n) {\n let nRemoved = 0;\n for (const accessHandle of Array.from(this.#availableAccessHandles)) {\n if (nRemoved == n || this.getSize() === this.getCapacity()) return nRemoved;\n\n const name = this.#mapAccessHandleToName.get(accessHandle);\n await accessHandle.close();\n await this.#directoryHandle.removeEntry(name);\n this.#mapAccessHandleToName.delete(accessHandle);\n this.#availableAccessHandles.delete(accessHandle);\n ++nRemoved;\n }\n return nRemoved;\n }\n\n async #acquireAccessHandles() {\n // Enumerate all the files in the directory.\n const files = [];\n for await (const [name, handle] of this.#directoryHandle) {\n if (handle.kind === 'file') {\n files.push([name, handle]);\n }\n }\n\n // Open access handles in parallel, separating associated and unassociated.\n await Promise.all(files.map(async ([name, handle]) => {\n const accessHandle = await handle.createSyncAccessHandle();\n this.#mapAccessHandleToName.set(accessHandle, name);\n const path = this.#getAssociatedPath(accessHandle);\n if (path) {\n this.#mapPathToAccessHandle.set(path, accessHandle);\n } else {\n this.#availableAccessHandles.add(accessHandle);\n }\n }));\n }\n\n #releaseAccessHandles() {\n for (const accessHandle of this.#mapAccessHandleToName.keys()) {\n accessHandle.close();\n }\n this.#mapAccessHandleToName.clear();\n this.#mapPathToAccessHandle.clear();\n this.#availableAccessHandles.clear();\n }\n\n /**\n * Read and return the associated path from an OPFS file header.\n * Empty string is returned for an unassociated OPFS file.\n * @param accessHandle FileSystemSyncAccessHandle\n * @returns {string} path or empty string\n */\n #getAssociatedPath(accessHandle) {\n // Read the path and digest of the path from the file.\n const corpus = new Uint8Array(HEADER_CORPUS_SIZE);\n accessHandle.read(corpus, { at: 0 })\n\n // Delete files not expected to be present.\n const dataView = new DataView(corpus.buffer, corpus.byteOffset);\n const flags = dataView.getUint32(HEADER_OFFSET_FLAGS);\n if (corpus[0] &&\n ((flags & VFS.SQLITE_OPEN_DELETEONCLOSE) ||\n (flags & PERSISTENT_FILE_TYPES) === 0)) {\n console.warn(`Remove file with unexpected flags ${flags.toString(16)}`);\n this.#setAssociatedPath(accessHandle, '', 0);\n return '';\n }\n\n const fileDigest = new Uint32Array(HEADER_DIGEST_SIZE / 4);\n accessHandle.read(fileDigest, { at: HEADER_OFFSET_DIGEST });\n\n // Verify the digest.\n const computedDigest = this.#computeDigest(corpus);\n if (fileDigest.every((value, i) => value === computedDigest[i])) {\n // Good digest. Decode the null-terminated path string.\n const pathBytes = corpus.findIndex(value => value === 0);\n if (pathBytes === 0) {\n // Ensure that unassociated files are empty. Unassociated files are\n // truncated in #setAssociatedPath after the header is written. If\n // an interruption occurs right before the truncation then garbage\n // may remain in the file.\n accessHandle.truncate(HEADER_OFFSET_DATA);\n }\n return new TextDecoder().decode(corpus.subarray(0, pathBytes));\n } else {\n // Bad digest. Repair this header.\n console.warn('Disassociating file with bad digest.');\n this.#setAssociatedPath(accessHandle, '', 0);\n return '';\n }\n }\n\n /**\n * Set the path on an OPFS file header.\n * @param accessHandle FileSystemSyncAccessHandle\n * @param {string} path\n * @param {number} flags\n */\n #setAssociatedPath(accessHandle, path, flags) {\n // Convert the path string to UTF-8.\n const corpus = new Uint8Array(HEADER_CORPUS_SIZE);\n const encodedResult = new TextEncoder().encodeInto(path, corpus);\n if (encodedResult.written >= HEADER_MAX_PATH_SIZE) {\n throw new Error('path too long');\n }\n\n // Add the creation flags.\n const dataView = new DataView(corpus.buffer, corpus.byteOffset);\n dataView.setUint32(HEADER_OFFSET_FLAGS, flags);\n\n // Write the OPFS file header, including the digest.\n const digest = this.#computeDigest(corpus);\n accessHandle.write(corpus, { at: 0 });\n accessHandle.write(digest, { at: HEADER_OFFSET_DIGEST });\n accessHandle.flush();\n\n if (path) {\n this.#mapPathToAccessHandle.set(path, accessHandle);\n this.#availableAccessHandles.delete(accessHandle);\n } else {\n // This OPFS file doesn't represent any SQLite file so it doesn't\n // need to keep any data.\n accessHandle.truncate(HEADER_OFFSET_DATA);\n this.#availableAccessHandles.add(accessHandle);\n }\n }\n\n /**\n * We need a synchronous digest function so can't use WebCrypto.\n * Adapted from https://github.com/bryc/code/blob/master/jshash/experimental/cyrb53.js\n * @param {Uint8Array} corpus \n * @returns {ArrayBuffer} 64-bit digest\n */\n #computeDigest(corpus) {\n if (!corpus[0]) {\n // Optimization for deleted file.\n return new Uint32Array([0xfecc5f80, 0xaccec037]);\n }\n\n let h1 = 0xdeadbeef;\n let h2 = 0x41c6ce57;\n \n for (const value of corpus) {\n h1 = Math.imul(h1 ^ value, 2654435761);\n h2 = Math.imul(h2 ^ value, 1597334677);\n }\n \n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n \n return new Uint32Array([h1 >>> 0, h2 >>> 0]);\n };\n \n /**\n * Convert a bare filename, path, or URL to a UNIX-style path.\n * @param {string|URL} nameOrURL\n * @returns {string} path\n */\n #getPath(nameOrURL) {\n const url = typeof nameOrURL === 'string' ?\n new URL(nameOrURL, 'file://localhost/') :\n nameOrURL;\n return url.pathname;\n }\n\n /**\n * Remove the association between a path and an OPFS file.\n * @param {string} path \n */\n #deletePath(path) {\n const accessHandle = this.#mapPathToAccessHandle.get(path);\n if (accessHandle) {\n // Un-associate the SQLite path from the OPFS file.\n this.#mapPathToAccessHandle.delete(path);\n this.#setAssociatedPath(accessHandle, '', 0);\n }\n }\n}","// Copyright 2024 Roy T. Hashimoto. All Rights Reserved.\nimport { FacadeVFS } from '../FacadeVFS.js';\nimport * as VFS from '../VFS.js';\n\nconst DEFAULT_TEMPORARY_FILES = 10;\nconst LOCK_NOTIFY_INTERVAL = 1000;\n\nconst DB_RELATED_FILE_SUFFIXES = ['', '-journal', '-wal'];\n\nconst finalizationRegistry = new FinalizationRegistry(releaser => releaser());\n\nclass File {\n /** @type {string} */ path\n /** @type {number} */ flags;\n /** @type {FileSystemSyncAccessHandle} */ accessHandle;\n\n /** @type {PersistentFile?} */ persistentFile;\n\n constructor(path, flags) {\n this.path = path;\n this.flags = flags;\n }\n}\n\nclass PersistentFile {\n /** @type {FileSystemFileHandle} */ fileHandle\n /** @type {FileSystemSyncAccessHandle} */ accessHandle = null\n\n // The following properties are for main database files.\n\n /** @type {boolean} */ isLockBusy = false;\n /** @type {boolean} */ isFileLocked = false;\n /** @type {boolean} */ isRequestInProgress = false;\n /** @type {function} */ handleLockReleaser = null;\n\n /** @type {BroadcastChannel} */ handleRequestChannel;\n /** @type {boolean} */ isHandleRequested = false;\n\n constructor(fileHandle) {\n this.fileHandle = fileHandle;\n }\n}\n\nexport class OPFSCoopSyncVFS extends FacadeVFS {\n /** @type {Map<number, File>} */ mapIdToFile = new Map();\n\n lastError = null;\n log = null; //function(...args) { console.log(`[${contextName}]`, ...args) };\n \n /** @type {Map<string, PersistentFile>} */ persistentFiles = new Map();\n /** @type {Map<string, FileSystemSyncAccessHandle>} */ boundAccessHandles = new Map();\n /** @type {Set<FileSystemSyncAccessHandle>} */ unboundAccessHandles = new Set();\n /** @type {Set<string>} */ accessiblePaths = new Set();\n releaser = null;\n\n static async create(name, module) {\n const vfs = new OPFSCoopSyncVFS(name, module);\n await Promise.all([\n vfs.isReady(),\n vfs.#initialize(DEFAULT_TEMPORARY_FILES),\n ]);\n return vfs;\n }\n\n constructor(name, module) {\n super(name, module);\n }\n\n async #initialize(nTemporaryFiles) {\n // Delete temporary directories no longer in use.\n const root = await navigator.storage.getDirectory();\n // @ts-ignore\n for await (const entry of root.values()) {\n if (entry.kind === 'directory' && entry.name.startsWith('.ahp-')) {\n // A lock with the same name as the directory protects it from\n // being deleted.\n await navigator.locks.request(entry.name, { ifAvailable: true }, async lock => {\n if (lock) {\n this.log?.(`Deleting temporary directory ${entry.name}`);\n // Another instance initializing at the same time may have\n // deleted it between our listing and our lock.\n await root.removeEntry(entry.name, { recursive: true }).catch(e => {\n if (e?.name !== 'NotFoundError') throw e;\n });\n } else {\n this.log?.(`Temporary directory ${entry.name} is in use`);\n }\n });\n }\n }\n\n // Create our temporary directory.\n const tmpDirName = `.ahp-${Math.random().toString(36).slice(2)}`;\n this.releaser = await new Promise(resolve => {\n navigator.locks.request(tmpDirName, () => {\n return new Promise(release => {\n resolve(release);\n });\n });\n });\n finalizationRegistry.register(this, this.releaser);\n const tmpDir = await root.getDirectoryHandle(tmpDirName, { create: true });\n\n // Populate temporary directory.\n for (let i = 0; i < nTemporaryFiles; i++) {\n const tmpFile = await tmpDir.getFileHandle(`${i}.tmp`, { create: true });\n const tmpAccessHandle = await tmpFile.createSyncAccessHandle();\n this.unboundAccessHandles.add(tmpAccessHandle);\n }\n }\n\n /**\n * @param {string?} zName \n * @param {number} fileId \n * @param {number} flags \n * @param {DataView} pOutFlags \n * @returns {number}\n */\n jOpen(zName, fileId, flags, pOutFlags) {\n try {\n const url = new URL(zName || Math.random().toString(36).slice(2), 'file://');\n const path = url.pathname;\n\n if (flags & VFS.SQLITE_OPEN_MAIN_DB) {\n const persistentFile = this.persistentFiles.get(path);\n if (persistentFile?.isRequestInProgress) {\n // Should not reach here unless SQLite itself retries an open.\n // Otherwise, asynchronous operations started on a previous\n // open try should have completed.\n return VFS.SQLITE_BUSY;\n } else if (!persistentFile) {\n // This is the usual starting point for opening a database.\n // Register a Promise that resolves when the database and related\n // files are ready to be used.\n this.log?.(`creating persistent file for ${path}`);\n const create = !!(flags & VFS.SQLITE_OPEN_CREATE);\n this._module.retryOps.push((async () => {\n try {\n // Get the path directory handle.\n let dirHandle = await navigator.storage.getDirectory();\n const directories = path.split('/').filter(d => d);\n const filename = directories.pop();\n for (const directory of directories) {\n dirHandle = await dirHandle.getDirectoryHandle(directory, { create });\n }\n\n // Get file handles for the database and related files,\n // and create persistent file instances.\n for (const suffix of DB_RELATED_FILE_SUFFIXES) {\n const fileHandle = await dirHandle.getFileHandle(filename + suffix, { create });\n await this.#createPersistentFile(fileHandle);\n }\n\n // Get access handles for the files.\n const file = new File(path, flags);\n file.persistentFile = this.persistentFiles.get(path);\n await this.#requestAccessHandle(file);\n } catch (e) {\n // Use an invalid persistent file to signal this error\n // for the retried open.\n const persistentFile = new PersistentFile(null);\n this.persistentFiles.set(path, persistentFile);\n console.error(e);\n }\n })());\n return VFS.SQLITE_BUSY;\n } else if (!persistentFile.fileHandle) {\n // The asynchronous open operation failed.\n this.persistentFiles.delete(path);\n return VFS.SQLITE_CANTOPEN;\n } else if (!persistentFile.accessHandle) {\n // This branch is reached if the database was previously opened\n // and closed.\n this._module.retryOps.push((async () => {\n const file = new File(path, flags);\n file.persistentFile = this.persistentFiles.get(path);\n await this.#requestAccessHandle(file);\n })());\n return VFS.SQLITE_BUSY;\n }\n }\n\n if (!this.accessiblePaths.has(path) &&\n !(flags & VFS.SQLITE_OPEN_CREATE)) {\n throw new Error(`File ${path} not found`);\n }\n\n const file = new File(path, flags);\n this.mapIdToFile.set(fileId, file);\n\n if (this.persistentFiles.has(path)) {\n file.persistentFile = this.persistentFiles.get(path);\n } else if (this.boundAccessHandles.has(path)) {\n // This temporary file was previously created and closed. Reopen\n // the same access handle.\n file.accessHandle = this.boundAccessHandles.get(path);\n } else if (this.unboundAccessHandles.size) {\n // Associate an unbound access handle to this file.\n file.accessHandle = this.unboundAccessHandles.values().next().value;\n file.accessHandle.truncate(0);\n this.unboundAccessHandles.delete(file.accessHandle);\n this.boundAccessHandles.set(path, file.accessHandle);\n }\n this.accessiblePaths.add(path);\n \n pOutFlags.setInt32(0, flags, true);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_CANTOPEN;\n }\n }\n\n /**\n * @param {string} zName \n * @param {number} syncDir \n * @returns {number}\n */\n jDelete(zName, syncDir) {\n try {\n const url = new URL(zName, 'file://');\n const path = url.pathname;\n if (this.persistentFiles.has(path)) {\n const persistentFile = this.persistentFiles.get(path);\n persistentFile.accessHandle.truncate(0);\n } else {\n this.boundAccessHandles.get(path)?.truncate(0);\n }\n this.accessiblePaths.delete(path);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_DELETE;\n }\n }\n\n /**\n * @param {string} zName \n * @param {number} flags \n * @param {DataView} pResOut \n * @returns {number}\n */\n jAccess(zName, flags, pResOut) {\n try {\n const url = new URL(zName, 'file://');\n const path = url.pathname;\n pResOut.setInt32(0, this.accessiblePaths.has(path) ? 1 : 0, true);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_ACCESS;\n } \n }\n\n /**\n * @param {number} fileId \n * @returns {number}\n */\n jClose(fileId) {\n try {\n const file = this.mapIdToFile.get(fileId);\n this.mapIdToFile.delete(fileId);\n\n if (file?.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n if (file.persistentFile?.handleLockReleaser) {\n this.#releaseAccessHandle(file);\n }\n } else if (file?.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) {\n file.accessHandle.truncate(0);\n this.accessiblePaths.delete(file.path);\n if (!this.persistentFiles.has(file.path)) {\n this.boundAccessHandles.delete(file.path);\n this.unboundAccessHandles.add(file.accessHandle);\n }\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_CLOSE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number}\n */\n jRead(fileId, pData, iOffset) {\n try {\n const file = this.mapIdToFile.get(fileId);\n\n // On Chrome (at least), passing pData to accessHandle.read() is\n // an error because pData is a Proxy of a Uint8Array. Calling\n // subarray() produces a real Uint8Array and that works.\n const accessHandle = file.accessHandle || file.persistentFile.accessHandle;\n const bytesRead = accessHandle.read(pData.subarray(), { at: iOffset });\n\n // Opening a database file performs one read without a xLock call.\n if ((file.flags & VFS.SQLITE_OPEN_MAIN_DB) && !file.persistentFile.isFileLocked) {\n this.#releaseAccessHandle(file);\n }\n\n if (bytesRead < pData.byteLength) {\n pData.fill(0, bytesRead);\n return VFS.SQLITE_IOERR_SHORT_READ;\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_READ;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number}\n */\n jWrite(fileId, pData, iOffset) {\n try {\n const file = this.mapIdToFile.get(fileId);\n\n // On Chrome (at least), passing pData to accessHandle.write() is\n // an error because pData is a Proxy of a Uint8Array. Calling\n // subarray() produces a real Uint8Array and that works.\n const accessHandle = file.accessHandle || file.persistentFile.accessHandle;\n const nBytes = accessHandle.write(pData.subarray(), { at: iOffset });\n if (nBytes !== pData.byteLength) throw new Error('short write');\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_WRITE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} iSize \n * @returns {number}\n */\n jTruncate(fileId, iSize) {\n try {\n const file = this.mapIdToFile.get(fileId);\n const accessHandle = file.accessHandle || file.persistentFile.accessHandle;\n accessHandle.truncate(iSize);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_TRUNCATE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} flags \n * @returns {number}\n */\n jSync(fileId, flags) {\n try {\n const file = this.mapIdToFile.get(fileId);\n const accessHandle = file.accessHandle || file.persistentFile.accessHandle;\n accessHandle.flush();\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_FSYNC;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {DataView} pSize64 \n * @returns {number}\n */\n jFileSize(fileId, pSize64) {\n try {\n const file = this.mapIdToFile.get(fileId);\n const accessHandle = file.accessHandle || file.persistentFile.accessHandle;\n const size = accessHandle.getSize();\n pSize64.setBigInt64(0, BigInt(size), true);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_FSTAT;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} lockType \n * @returns {number}\n */\n jLock(fileId, lockType) {\n const file = this.mapIdToFile.get(fileId);\n if (file.persistentFile.isRequestInProgress) {\n file.persistentFile.isLockBusy = true;\n return VFS.SQLITE_BUSY;\n }\n\n file.persistentFile.isFileLocked = true;\n if (!file.persistentFile.handleLockReleaser) {\n // Start listening for notifications from other connections.\n // This is before we actually get access handles, but waiting to\n // listen until then allows a race condition where notifications\n // are missed. \n file.persistentFile.handleRequestChannel.onmessage = () => {\n this.log?.(`received notification for ${file.path}`);\n if (file.persistentFile.isFileLocked) {\n // We're still using the access handle, so mark it to be\n // released when we're done.\n file.persistentFile.isHandleRequested = true;\n } else {\n // Release the access handles immediately.\n this.#releaseAccessHandle(file);\n }\n file.persistentFile.handleRequestChannel.onmessage = null;\n };\n\n this.#requestAccessHandle(file);\n this.log?.('returning SQLITE_BUSY');\n file.persistentFile.isLockBusy = true;\n return VFS.SQLITE_BUSY;\n }\n file.persistentFile.isLockBusy = false;\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @param {number} lockType \n * @returns {number}\n */\n jUnlock(fileId, lockType) {\n const file = this.mapIdToFile.get(fileId);\n if (lockType === VFS.SQLITE_LOCK_NONE) {\n // Don't change any state if this unlock is because xLock returned\n // SQLITE_BUSY.\n if (!file.persistentFile.isLockBusy) {\n file.persistentFile.isFileLocked = false;\n if (file.persistentFile.isHandleRequested) {\n // Another connection wants the access handle. Hand it over only\n // once the current call has returned: SQLite can lock again within\n // the same call (re-preparing a statement whose schema changed, or\n // a function running statements of its own), and that lock would\n // find the handle gone and return SQLITE_BUSY to a call that\n // retry() has already tried twice. A task rather than a microtask:\n // the JSPI build suspends at every VFS call, which runs microtasks\n // in the middle of the call.\n setTimeout(() => {\n if (!file.persistentFile.isFileLocked &&\n file.persistentFile.isHandleRequested) {\n this.#releaseAccessHandle(file);\n file.persistentFile.isHandleRequested = false;\n }\n });\n }\n }\n }\n return VFS.SQLITE_OK;\n }\n \n /**\n * @param {number} fileId\n * @param {number} op\n * @param {DataView} pArg\n * @returns {number|Promise<number>}\n */\n jFileControl(fileId, op, pArg) {\n try {\n const file = this.mapIdToFile.get(fileId);\n switch (op) {\n case VFS.SQLITE_FCNTL_PRAGMA:\n const key = extractString(pArg, 4);\n const value = extractString(pArg, 8);\n this.log?.('xFileControl', file.path, 'PRAGMA', key, value);\n switch (key.toLowerCase()) {\n case 'journal_mode':\n if (value &&\n !['off', 'memory', 'delete', 'wal'].includes(value.toLowerCase())) {\n throw new Error('journal_mode must be \"off\", \"memory\", \"delete\", or \"wal\"');\n }\n break;\n }\n break;\n }\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR;\n }\n return VFS.SQLITE_NOTFOUND;\n }\n\n /**\n * @param {Uint8Array} zBuf \n * @returns \n */\n jGetLastError(zBuf) {\n if (this.lastError) {\n console.error(this.lastError);\n const outputArray = zBuf.subarray(0, zBuf.byteLength - 1);\n const { written } = new TextEncoder().encodeInto(this.lastError.message, outputArray);\n zBuf[written] = 0;\n }\n return VFS.SQLITE_OK\n }\n\n /**\n * @param {FileSystemFileHandle} fileHandle \n * @returns {Promise<PersistentFile>}\n */\n async #createPersistentFile(fileHandle) {\n const persistentFile = new PersistentFile(fileHandle);\n const root = await navigator.storage.getDirectory();\n const relativePath = await root.resolve(fileHandle);\n const path = `/${relativePath.join('/')}`;\n persistentFile.handleRequestChannel = new BroadcastChannel(`ahp:${path}`);\n this.persistentFiles.set(path, persistentFile);\n\n const f = await fileHandle.getFile();\n if (f.size) {\n this.accessiblePaths.add(path);\n }\n return persistentFile;\n }\n\n /**\n * @param {File} file \n */\n #requestAccessHandle(file) {\n console.assert(!file.persistentFile.handleLockReleaser);\n if (!file.persistentFile.isRequestInProgress) {\n file.persistentFile.isRequestInProgress = true;\n this._module.retryOps.push((async () => {\n // Acquire the Web Lock.\n file.persistentFile.handleLockReleaser = await this.#acquireLock(file.persistentFile);\n try {\n // Get access handles for the database and releated files in parallel.\n this.log?.(`creating access handles for ${file.path}`)\n // Settle them all before reporting a failure: Promise.all rejects as\n // soon as one does, while the others are still in flight, so the\n // cleanup in the catch below runs too early to see them. Those\n // acquisitions then complete and assign to persistent files nothing\n // will close, leaking one access handle per attempt - which makes\n // every later open of the same database fail on a sidecar file it\n // holds itself.\n const results = await Promise.allSettled(\n DB_RELATED_FILE_SUFFIXES.map(async suffix => {\n const persistentFile = this.persistentFiles.get(file.path + suffix);\n if (persistentFile) {\n persistentFile.accessHandle =\n await persistentFile.fileHandle.createSyncAccessHandle();\n }\n }));\n const failure = results.find(result => result.status === 'rejected');\n if (failure) throw failure.reason;\n } catch (e) {\n this.log?.(`failed to create access handles for ${file.path}`, e);\n // Close any of the potentially opened access handles\n this.#releaseAccessHandle(file);\n throw e;\n } finally {\n file.persistentFile.isRequestInProgress = false;\n }\n })());\n return this._module.retryOps.at(-1);\n }\n return Promise.resolve();\n }\n\n /**\n * @param {File} file \n */\n #releaseAccessHandle(file) {\n DB_RELATED_FILE_SUFFIXES.forEach(suffix => {\n const persistentFile = this.persistentFiles.get(file.path + suffix);\n if (persistentFile) {\n persistentFile.accessHandle?.close();\n persistentFile.accessHandle = null;\n }\n });\n this.log?.(`access handles closed for ${file.path}`)\n\n file.persistentFile.handleLockReleaser?.();\n file.persistentFile.handleLockReleaser = null;\n this.log?.(`lock released for ${file.path}`)\n }\n\n /**\n * @param {PersistentFile} persistentFile \n * @returns {Promise<function>} lock releaser\n */\n #acquireLock(persistentFile) {\n return new Promise(resolve => {\n // Tell other connections we want the access handle.\n const lockName = persistentFile.handleRequestChannel.name;\n const notify = () => {\n this.log?.(`notifying for ${lockName}`);\n persistentFile.handleRequestChannel.postMessage(null);\n }\n const notifyId = setInterval(notify, LOCK_NOTIFY_INTERVAL);\n setTimeout(notify);\n\n this.log?.(`lock requested: ${lockName}`)\n navigator.locks.request(lockName, lock => {\n // We have the lock. Stop asking other connections for it.\n this.log?.(`lock acquired: ${lockName}`, lock);\n clearInterval(notifyId);\n return new Promise(resolve);\n });\n });\n }\n}\n\nfunction extractString(dataView, offset) {\n const p = dataView.getUint32(offset, true);\n if (p) {\n const chars = new Uint8Array(dataView.buffer, p);\n return new TextDecoder().decode(chars.subarray(0, chars.indexOf(0)));\n }\n return null;\n}","// This is a convenience wrapper for the Web Locks API.\nexport class Lock {\n #name;\n /** @type {LockMode?} */ #mode = null;\n /** @type {Promise<Function|null>} */ #releaser = Promise.resolve(null);\n #isAcquiring = false;\n\n /**\n * @param {string} name \n */\n constructor(name) {\n this.#name = name;\n }\n\n get name() { return this.#name; }\n get mode() { return this.#mode; }\n\n close() {\n this.release();\n }\n \n /**\n * @param {'shared'|'exclusive'} mode \n * @param {number} timeout -1 for infinite, 0 for poll, >0 for milliseconds\n * @return {Promise<boolean>} true if lock acquired, false on failed poll\n */\n async acquire(mode, timeout = -1) {\n if (this.#isAcquiring) throw new Error('Lock is already being acquired');\n this.#isAcquiring = true;\n try {\n if (this.#mode) {\n throw new Error(`Lock ${this.#name} is already acquired`);\n }\n\n this.#releaser = new Promise((resolve, reject) => {\n /** @type {LockOptions} */\n const options = { mode, ifAvailable: timeout === 0 };\n if (timeout > 0) {\n options.signal = AbortSignal.timeout(timeout);\n }\n\n navigator.locks.request(this.#name, options, lock => {\n if (lock === null) {\n // Polling (with timeout = 0) did not acquire the lock.\n return resolve(null);\n }\n\n // Lock acquired. The lock is released when this returned\n // Promise is resolved.\n this.#mode = mode;\n return new Promise(releaser => {\n resolve(releaser);\n })\n }).catch(e => {\n return reject(e);\n });\n });\n\n return this.#releaser.then(releaser => !!releaser)\n } finally {\n this.#isAcquiring = false;\n }\n }\n\n release() {\n this.#releaser.then(releaser => releaser?.(), () => {});\n this.#mode = null;\n }\n}\n","import { Lock } from './Lock.js';\n\nexport class LazyLock extends Lock {\n #channel;\n #isBusy = false;\n #hasReleaseRequest = false;\n\n /**\n * @param {string} name \n */\n constructor(name) {\n super(name);\n this.#channel = new BroadcastChannel(name);\n this.#channel.onmessage = (event) => {\n if (this.#isBusy) {\n // We're using the lock so postpone the release.\n this.#hasReleaseRequest = true;\n } else {\n this.release();\n }\n }\n }\n\n close() {\n super.close();\n this.#channel.onmessage = null;\n this.#channel.close();\n }\n\n /**\n * @param {LockMode} mode \n * @param {number} timeout \n * @returns {Promise<boolean>}\n */\n async acquire(mode, timeout = -1) {\n this.#isBusy = true;\n try {\n if (mode === this.mode) {\n // We never had to release the lock.\n return true;\n }\n\n if (this.mode) {\n // Release the lock to acquire it in a different mode.\n super.release();\n } else {\n // Poll for the lock. This isn't necessary but if it works it avoids\n // the BroadcastChannel traffic.\n if (await super.acquire(mode, 0)) {\n return true;\n }\n }\n\n // Request the lock.\n const pResult = super.acquire(mode, timeout)\n this.#channel.postMessage({});\n\n return await pResult;\n } catch (e) {\n this.release();\n throw e;\n }\n }\n\n /**\n * @param {LockMode} mode \n * @returns {boolean}\n */\n acquireIfHeld(mode) {\n if (mode === this.mode) {\n this.#isBusy = true;\n return true;\n }\n return false;\n }\n\n release() {\n super.release();\n this.#isBusy = false;\n this.#hasReleaseRequest = false;\n }\n\n releaseLazy() {\n // Release the lock only if someone else wants it.\n this.#isBusy = false;\n if (this.#hasReleaseRequest) {\n this.release();\n }\n }\n}","import { Lock } from './Lock.js';\n\nconst DEFAULT_JOURNAL_SIZE_LIMIT = 1000;\nconst DEFAULT_BACKSTOP_INTERVAL = 30_000;\n\nconst MAGIC = 0x377f0684;\nconst FILE_HEADER_SIZE = 32;\nconst FRAME_HEADER_SIZE = 32;\nconst FRAME_TYPE_PAGE = 0;\nconst FRAME_TYPE_COMMIT = 1;\nconst FRAME_TYPE_END = 2;\nconst FRAME_COMMIT_PAGE_SIZE_MASK = 1 << 0;\nconst FRAME_COMMIT_CHANGE_FILE_MASK = 1 << 1;\n\n/**\n * @typedef PageEntry\n * @property {number} waOffset location in WAL file\n * @property {number} waSalt1 WAL2 file identifier\n * @property {number} pageSize\n * @property {Uint8Array} [pageData]\n */\n\n/**\n * @typedef Transaction\n * @property {number} id\n * @property {Map<number, PageEntry>} pages address to page data mapping\n * @property {number} dbFileSize\n * @property {number} [newPageSize]\n * @property {number} waSalt1 WAL2 file identifier\n * @property {number} waOffsetEnd\n */\n\n/**\n * @typedef WriteAheadOptions\n * @property {number} [autoCheckpoint]\n * @property {number} [backstopInterval]\n * @property {number} [journalSizeLimit]\n */\n\nexport class WriteAhead {\n\n log = null;\n /** @type {WriteAheadOptions} */ options = {\n autoCheckpoint: 1,\n backstopInterval: DEFAULT_BACKSTOP_INTERVAL,\n journalSizeLimit: DEFAULT_JOURNAL_SIZE_LIMIT,\n };\n\n #zName;\n #dbHandle;\n\n /** @type {FileSystemSyncAccessHandle[]} */ #waHandles;\n /** @type {FileSystemSyncAccessHandle} */ #activeHandle;\n /** @type {{nextTxId: number, salt1: number, salt2: number}} */ #activeHeader;\n /** @type {number} */ #activeOffset;\n /** @type {number} */ #txId = 0;\n /** @type {Transaction} */ #txInProgress = null;\n\n #dbFileSize = 0;\n\n /** @type {Promise<any>} */ #ready;\n /** @type {'read'|'write'} */ #isolationState = null;\n\n /** @type {Lock} */ #txIdLock = null;\n\n /** @type {Map<number, PageEntry>} */ #waOverlay = new Map();\n /** @type {Map<number, Transaction>} */ #mapIdToTx = new Map();\n /** @type {Map<number, Transaction>} */ #mapIdToPendingTx = new Map();\n\n // This is the total number of pages in #mapIdToTx, i.e. the number\n // of pages in transactions that have not been checkpointed. This may\n // not exactly match the number of pages in the WAL files because a\n // page can be written multiple times in a transaction but will only\n // be counted once here.\n #approxPageCount = 0;\n\n // The sum across this array tracks the number of pages in the active\n // WAL file. The element corresponding to the inactive WAL file will\n // always be zero; it will *not* contain the number of pages in the\n // inactive WAL file.\n #activeHandlePageCounts = [0, 0];\n\n /** @type {BroadcastChannel} */ #broadcastChannel;\n\n /** @type {number} */ #backstopTimer;\n /** @type {number} */ #backstopTimestamp = 0;\n\n #abortController = new AbortController();\n\n /**\n * @param {string} zName\n * @param {FileSystemSyncAccessHandle} dbHandle\n * @param {FileSystemSyncAccessHandle[]} waHandles\n * @param {WriteAheadOptions} options\n */\n constructor(zName, dbHandle, waHandles, options = {}) {\n this.#zName = zName;\n this.#dbHandle = dbHandle;\n this.#waHandles = waHandles;\n this.options = Object.assign(this.options, options);\n\n // All the asynchronous initialization is done here.\n this.#ready = (async () => {\n // Acquire the checkpoint lock in case the database is newly created\n // and we have to initialize a WAL file.\n const { fileHeader } =\n await navigator.locks.request(`${this.#zName}#ckpt`, async () => {\n // Set our advertised txId to zero until we know the proper value.\n // This will also prevent other connections from checkpointing\n // after we release the #ckpt lock.\n await this.#updateTxIdLock();\n\n // Read headers from both WAL files and use the one with the\n // lower nextTxId. If neither header is valid, create a new header.\n const fileHeader = this.#waHandles\n .map(handle => this.#readFileHeader(handle))\n .filter(h => h)\n .sort((a, b) => a.nextTxId - b.nextTxId)[0]\n ?? this.#writeFileHeader(Math.floor(Math.random() * 0xffffffff));\n return { fileHeader };\n });\n\n // The checkpoint lock has been released, but checkpointing will not\n // happen until read the WAL files and advance our txId.\n this.#activeHeader = fileHeader;\n this.#activeHandle = this.#waHandles[fileHeader.salt1 & 1];\n this.#activeOffset = FILE_HEADER_SIZE;\n this.#txId = fileHeader.nextTxId - 1;\n\n // Listen for transactions and checkpoints from other connections.\n this.#broadcastChannel = new BroadcastChannel(`${zName}#wa`);\n this.#broadcastChannel.onmessage = (event) => {\n this.#handleMessage(event);\n };\n\n // Load all the transactions from the WAL.\n for (const tx of this.#readAllTx()) {\n this.#activateTx(tx);\n }\n this.#updateTxIdLock(); // doesn't need await\n\n // Schedule backstop. The backstop is a guard against a crash in\n // another context between persisting a transaction and broadcasting\n // it.\n this.#backstopTimestamp = performance.now();\n this.#backstop();\n })();\n }\n\n /**\n * @returns {Promise<void>}\n */\n ready() {\n return this.#ready;\n }\n\n close() {\n this.#abortController.abort();\n\n // Stop asynchronous maintenance.\n this.#broadcastChannel.onmessage = null;\n clearTimeout(this.#backstopTimer);\n\n this.#txIdLock?.release();\n this.#broadcastChannel.close();\n }\n\n /**\n * Freeze our view of the database.\n * The view includes the transactions received so far but is not\n * guaranteed to be completely up to date. Unfreeze the view with rejoin().\n */\n isolateForRead() {\n if (this.#isolationState !== null) {\n throw new Error('Already in isolated state');\n }\n this.#isolationState = 'read';\n\n // Disable backstop during isolation.\n clearTimeout(this.#backstopTimer);\n this.#backstopTimer = null;\n }\n\n /**\n * Freeze our view of the database for writing.\n * The view includes all transactions. Unfreeze the view with rejoin().\n */\n isolateForWrite() {\n if (this.#isolationState !== null) {\n throw new Error('Already in isolated state');\n }\n this.#isolationState = 'write';\n\n // Disable backstop during isolation.\n clearTimeout(this.#backstopTimer);\n this.#backstopTimer = null;\n\n // A writer needs all previous transactions assimilated.\n this.#advanceTxId({ readToCurrent: true });\n }\n\n rejoin() {\n if (this.#isolationState === 'read') {\n // Catch up on new transactions that arrived while isolated.\n this.#advanceTxId({ autoCheckpoint: true });\n }\n this.#isolationState = null;\n\n // Resume backstop after isolation.\n this.#backstop();\n }\n\n /**\n * @param {number} offset\n * @return {Uint8Array?}\n */\n read(offset) {\n // First look for the page in any write transaction in progress.\n // If the page is not found in the transaction overlay, look in the\n // write-ahead overlay.\n const pageEntry = this.#txInProgress?.pages.get(offset) ?? this.#waOverlay.get(offset);\n if (pageEntry) {\n if (pageEntry.pageData) {\n // Page data is cached.\n this.log?.(`%cread page at ${offset} from WAL ${pageEntry.waSalt1 & 1}:${pageEntry.waOffset} (cached)`, 'color: black; background-color: gold;');\n return pageEntry.pageData;\n }\n\n // Read the page from the WAL file.\n this.log?.(`%cread page at ${offset} from WAL ${pageEntry.waSalt1 & 1}:${pageEntry.waOffset}`, 'color: black; background-color: gold;');\n return this.#fetchPage(pageEntry);\n }\n return null;\n }\n\n /**\n * @param {number} offset\n * @param {Uint8Array} data\n * @param {{dstPageSize: number?}} options\n */\n write(offset, data, options) {\n if (this.#isolationState !== 'write') {\n throw new Error('Not in write isolated state');\n }\n\n if (!this.#txInProgress) {\n this.#beginTx();\n if (options.dstPageSize !== data.byteLength) {\n // This is a VACUUM to a new page size. The incoming writes are at\n // the old page size, but we want to write to the WAL with the new\n // size.\n this.#txInProgress.newPageSize = options.dstPageSize;\n }\n }\n\n if (this.#txInProgress.newPageSize) {\n // The incoming data is not a single page because the page size\n // is changing. The two cases are when the new page size is\n // smaller or larger than the old page size.\n const frameSize = FRAME_HEADER_SIZE + this.#txInProgress.newPageSize;\n if (data.byteLength > this.#txInProgress.newPageSize) {\n // New page size is smaller. Write multiple pages of the new\n // page size.\n for (let i = 0; i < data.byteLength; i += this.#txInProgress.newPageSize) {\n const pageData = data.slice(i, i + this.#txInProgress.newPageSize);\n const waOffset = this.#writePage(offset + i, pageData);\n this.log?.(`%cwrite page at ${offset + i} to WAL ${this.#activeHeader.salt1 & 1}:${waOffset}`, 'color: black; background-color: lightskyblue;');\n }\n } else {\n // New page size is larger. Save the page data to the WAL file\n // so it can be read back and rewritten as frames with the new\n // page size.\n const pageOffset = offset % this.#txInProgress.newPageSize;\n const waOffset = this.#activeOffset +\n (offset - pageOffset) / this.#txInProgress.newPageSize * frameSize +\n FRAME_HEADER_SIZE +\n pageOffset;\n this.#activeHandle.write(data.subarray(), { at: waOffset });\n this.log?.(`%cwrite page at ${offset} to WAL ${this.#activeHeader.salt1 & 1}:${waOffset}`, 'color: black; background-color: lightskyblue;');\n }\n } else {\n // This is the normal case without a page size change.\n const waOffset = this.#writePage(offset, data.slice());\n this.log?.(`%cwrite page at ${offset} to WAL ${this.#activeHeader.salt1 & 1}:${waOffset}`, 'color: black; background-color: lightskyblue;');\n }\n }\n\n /**\n * @param {number} newSize\n */\n truncate(newSize) {\n // Ignore truncation that happens outside of a transaction. That\n // only happens (e.g. post-VACUUM) to ensure the file size matches\n // the database header.\n if (this.#txInProgress) {\n // Remove any pages past the truncation point.\n for (const offset of this.#txInProgress.pages.keys()) {\n if (offset >= newSize) {\n this.#txInProgress.pages.delete(offset);\n }\n }\n }\n }\n\n getFileSize() {\n return this.#txInProgress?.dbFileSize ?? this.#dbFileSize;\n }\n\n commit() {\n const tx = this.#txInProgress;\n if (tx.newPageSize && tx.pages.size === 0) {\n // This transaction is a VACUUM with a page size increase. All\n // the database pages have been written to the WAL file at their\n // new size with blank frame headers. Read the page data back\n // from the WAL file and rewrite as frames.\n let pageCount = 1; // to be replaced on the first iteration\n for (let i = 0; i < pageCount; i++) {\n // Read the page data.\n const pageData = new Uint8Array(tx.newPageSize);\n const waOffset = this.#activeOffset +\n i * (FRAME_HEADER_SIZE + tx.newPageSize) +\n FRAME_HEADER_SIZE;\n this.#activeHandle.read(pageData, { at: waOffset });\n\n if (i === 0) {\n // Get the actual page count from the file header.\n const headerView = new DataView(pageData.buffer);\n pageCount = headerView.getUint32(28);\n }\n\n // Write back as a frame.\n this.#writePage(i * tx.newPageSize, pageData);\n }\n }\n\n const page1 = this.#txInProgress.pages.get(0)?.pageData;\n if (page1) {\n const page1View = new DataView(page1.buffer, page1.byteOffset, page1.byteLength);\n const pageCount = page1View.getUint32(28);\n this.#txInProgress.dbFileSize = pageCount * page1.byteLength;\n } else {\n // The transaction doesn't include page 1, so this must be a\n // non-batch-atomic rollback.\n this.rollback();\n return;\n }\n\n // Check whether to move to the other WAL file. The other WAL file must\n // be empty, and the active WAL file size (in pages) must exceed the\n // configured threshold.\n let changeFile = false;\n if (this.#isInactiveFileEmpty()) {\n const walFilePageCount =\n this.#activeHandlePageCounts[0] + this.#activeHandlePageCounts[1];\n const nPageThreshold = this.options.journalSizeLimit > 0 ?\n this.options.journalSizeLimit :\n DEFAULT_JOURNAL_SIZE_LIMIT;\n if (walFilePageCount >= nPageThreshold) {\n this.log?.(`%cchange WAL file at ${walFilePageCount} pages`, 'color: black; background-color: lightskyblue;');\n changeFile = true;\n }\n }\n\n // Persist the final pending transaction page with the database size.\n this.#commitTx(changeFile);\n\n // Incorporate the transaction locally.\n this.#activateTx(tx);\n this.#updateTxIdLock();\n\n // Send the transaction to other connections.\n const payload = { type: 'tx', tx };\n this.#broadcastChannel.postMessage(payload);\n\n this.#autoCheckpoint();\n this.#backstopTimestamp = performance.now();\n }\n\n rollback() {\n // Discard transaction pages.\n this.#abortTx();\n }\n\n /**\n * @param {{durability: 'strict'|'relaxed'}} options\n */\n sync(options) {\n if (options.durability === 'strict') {\n this.#flushActiveFile();\n }\n }\n\n /**\n * Move pages from write-ahead to main database file.\n *\n * @param {{isPassive: boolean}} options\n */\n async checkpoint(options = { isPassive: true }) {\n // Passive checkpointing is abandoned if another connection is\n // already checkpointing.\n const lockOptions = {\n ifAvailable: options.isPassive,\n };\n\n await navigator.locks.request(`${this.#zName}#ckpt`, lockOptions, async lock => {\n if (!lock) return;\n if (this.#abortController.signal.aborted) return;\n\n let ckptId = this.#getActiveFileStartingTxId() - 1;\n if (options.isPassive) {\n if (!this.#mapIdToTx.has(ckptId)) {\n // There are no transactions to checkpoint.\n return;\n }\n\n // Scan the txId locks to find the oldest txId.\n const busyTxId = (await this.#getTxIdLocks())\n .reduce((min, value) => Math.min(min, value.maxTxId), this.#txId);\n\n if (busyTxId < ckptId) {\n // The inactive WAL file is still being used.\n return;\n }\n } else {\n // Wait for all connections to reach the current txId.\n await this.#waitForTxIdLocks(value => value.maxTxId >= this.#txId);\n ckptId = this.#txId;\n }\n this.log?.(`%ccheckpoint through txId ${ckptId}`, 'color: black; background-color: lightgreen;');\n\n // Sync the WAL file. This ensures that if there is a crash after\n // part of the WAL has been copied, the uncopied part will still be\n // available afterwards.\n this.#flushInactiveFile();\n if (!options.isPassive) {\n this.#flushActiveFile();\n }\n\n // Starting at ckptId and going backwards (higher to lower txId),\n // write transaction pages to the main database file. Do not overwrite\n // a page written by a more recent transaction.\n const writtenOffsets = new Set();\n let dbFileSize = this.#dbHandle.getSize();\n for (let tx = this.#mapIdToTx.get(ckptId); tx; tx = this.#mapIdToTx.get(tx.id - 1)) {\n if (tx.id === ckptId && dbFileSize !== tx.dbFileSize) {\n // Set the file size from the latest transaction.\n dbFileSize = tx.dbFileSize;\n this.#dbHandle.truncate(dbFileSize);\n }\n\n for (const [offset, pageEntry] of tx.pages) {\n if (offset < dbFileSize && !writtenOffsets.has(offset)) {\n // Fetch the page data from the WAL file if not cached.\n const pageData = pageEntry.pageData ?? this.#fetchPage(pageEntry);\n\n // Write the page to the database file.\n const nWritten = this.#dbHandle.write(pageData, { at: offset });\n if (nWritten !== pageData.byteLength) {\n throw new Error('Checkpoint write failed');\n }\n writtenOffsets.add(offset);\n this.log?.(`%ccheckpoint wrote txId ${tx.id} page at ${offset} to database`, 'color: black; background-color: lightgreen;');\n }\n }\n\n if (tx.newPageSize) {\n // This transaction used a new page size to overwrite the entire\n // database file so no older pages need to be written. This is\n // not just an optimization; it prevents incorrectly writing\n // older smaller pages at addresses that aren't multiples of\n // the new page size.\n break;\n }\n }\n\n // Ensure that database writes are durable.\n this.log?.(`%ccheckpoint flush database file`, 'color: black; background-color: lightgreen;');\n this.#dbHandle.flush();\n\n // Notify other connections and ourselves of the checkpoint.\n this.#broadcastChannel.postMessage({\n type: 'ckpt',\n ckptId,\n });\n this.#handleCheckpoint(ckptId);\n\n // Wait for all connections to update their overlay.\n this.log?.(`%ccheckpoint waiting for connection updates`, 'color: black; background-color: lightgreen;');\n await this.#waitForTxIdLocks(value => value.minTxId > ckptId);\n\n // Truncate the inactive WAL file. This prevents new connections from\n // unnecessarily reading checkpointed data, and allows writers to make\n // it active when their conditions are met.\n this.#truncateInactiveFile();\n this.log?.(`%ccheckpoint complete`, 'color: black; background-color: lightgreen;');\n });\n }\n\n /**\n * Return the approximate number of write-ahead pages. This is the\n * sum of the number of unique page indices for each transaction,\n * so it can be fewer than the number of pages if any transaction\n * contains multiple frames for the same page.\n * @returns {number}\n */\n getWriteAheadSize() {\n return this.#approxPageCount;\n }\n\n isTransactionPending() {\n return !!this.#txInProgress;\n }\n\n setBackstopInterval(intervalMillis) {\n this.options.backstopInterval = intervalMillis;\n if (intervalMillis > 0 && this.#isolationState) {\n this.#backstop();\n }\n }\n\n /**\n * Incorporate a transaction into our view of the database.\n * @param {Transaction} tx\n */\n #activateTx(tx) {\n // Transfer to the active collection of transactions.\n this.#mapIdToTx.set(tx.id, tx);\n\n // Track the number of pages in the active WAL file.\n const page1 = tx.pages.get(0);\n const activeIndex = page1.waSalt1 & 0x1;\n this.#activeHandlePageCounts[activeIndex] += tx.pages.size;\n this.#activeHandlePageCounts[1 - activeIndex] = 0;\n\n this.#approxPageCount += tx.pages.size;\n\n // Add transaction pages to the write-ahead overlay.\n for (const [offset, pageEntry] of tx.pages) {\n this.#waOverlay.set(offset, pageEntry);\n }\n this.#dbFileSize = tx.dbFileSize;\n }\n\n /**\n * Advance the local view of the database. By default, advance to the\n * last broadcast transaction. Optionally, also advance through any\n * additional transactions in the WAL file to be fully current.\n *\n * @param {{readToCurrent?: boolean, autoCheckpoint?: boolean}} options\n */\n #advanceTxId(options = {}) {\n let didAdvance = false;\n while (this.#mapIdToPendingTx.size) {\n // Fetch the next transaction in sequence. Usually this will come\n // from pendingTx, but if it is missing then read it from the file.\n const nextTxId = this.#txId + 1;\n let tx;\n if (this.#mapIdToPendingTx.has(nextTxId)) {\n // This transaction arrived via message.\n tx = this.#mapIdToPendingTx.get(nextTxId);\n this.#mapIdToPendingTx.delete(tx.id);\n\n // Move the WAL file offset past this transaction.\n this.#skipTx(tx);\n } else {\n // Read the transaction from the WAL file.\n tx = this.#readTx();\n }\n\n this.#activateTx(tx);\n didAdvance = true;\n }\n\n if (options.readToCurrent) {\n // Read all additional transactions from the WAL file.\n for (const tx of this.#readAllTx()) {\n this.#activateTx(tx);\n didAdvance = true;\n }\n }\n\n if (didAdvance) {\n // Publish our new view txId.\n this.#updateTxIdLock();\n\n if (options.autoCheckpoint) {\n this.#autoCheckpoint();\n }\n }\n\n if (options.readToCurrent || didAdvance) {\n // The WAL has been accessed, so reset the backstop.\n // Calling #backstop() here is not necessary because if we are\n // in an isolated state then rejoin() will schedule the next call,\n // and if we are not in an isolated state then the next call\n // should already be scheduled.\n this.#backstopTimestamp = performance.now();\n }\n }\n\n #autoCheckpoint() {\n if (this.options.autoCheckpoint > 0) {\n this.checkpoint({ isPassive: true });\n }\n }\n\n /**\n * After a checkpoint, remove checkpointed pages from write-ahead.\n * The checkpoint may be been done locally or by another connection.\n * @param {number} ckptId\n */\n #handleCheckpoint(ckptId) {\n this.log?.(`%capply checkpoint through txId ${ckptId}`, 'color: black; background-color: lightgreen;');\n\n // Loop backwards from ckptId.\n for (let tx = this.#mapIdToTx.get(ckptId); tx; tx = this.#mapIdToTx.get(tx.id - 1)) {\n // Remove pages from write-ahead overlay.\n for (const [offset, pageEntry] of tx.pages.entries()) {\n // Be sure not to remove a newer version of the page.\n const overlayEntry = this.#waOverlay.get(offset);\n if (overlayEntry === pageEntry) {\n this.log?.(`%cremove txId ${tx.id} page at offset ${offset}`, 'color: black; background-color: lightgreen;');\n this.#waOverlay.delete(offset);\n }\n }\n\n // Remove transaction.\n this.#mapIdToTx.delete(tx.id);\n this.#approxPageCount -= tx.pages.size;\n }\n this.#updateTxIdLock();\n }\n\n /**\n * @param {MessageEvent} event\n */\n #handleMessage(event) {\n if (event.data.type === 'tx') {\n // New transaction from another connection. Don't use it if we\n // already have it.\n /** @type {Transaction} */ const tx = event.data.tx;\n if (tx.id > this.#txId) {\n this.#mapIdToPendingTx.set(tx.id, tx);\n if (this.#isolationState === null) {\n // Not in an isolated state, so advance our view of the database.\n this.#advanceTxId({ autoCheckpoint: true });\n }\n }\n } else if (event.data.type === 'ckpt') {\n // Checkpoint notification from another connection.\n /** @type {number} */ const ckptId = event.data.ckptId;\n this.#handleCheckpoint(ckptId);\n }\n }\n\n /**\n * Periodic check for recovering from lost transaction broadcasts.\n */\n #backstop() {\n if (this.options.backstopInterval <= 0) {\n // Backstop is disabled.\n return;\n }\n\n if (this.#isolationState) {\n throw new Error('Backstop was invoked in an isolated state');\n }\n\n const now = performance.now();\n if (now >= this.#backstopTimestamp + this.options.backstopInterval) {\n // The time since the last WAL access (read, write, or skip) has\n // exceeded the backstop interval. Check for transactions in the\n // write-ahead log that have not arrived via message.\n const oldTxId = this.#txId;\n this.#advanceTxId({ readToCurrent: true });\n if (this.#txId > oldTxId) {\n this.log?.(`%cbackstop txId ${oldTxId} -> ${this.#txId}`, 'color: black; background-color: lightyellow;');\n }\n this.#backstopTimestamp = performance.now();\n }\n\n // Schedule next backstop.\n const delay = this.#backstopTimestamp + this.options.backstopInterval - performance.now();\n clearTimeout(this.#backstopTimer);\n this.#backstopTimer = self.setTimeout(() => {\n this.#backstop();\n }, delay);\n }\n\n /**\n * Update the lock that publishes our current txId.\n */\n async #updateTxIdLock() {\n // Our view of the database, i.e. the txId, is encoded into the name\n // of a lock so other connections can see it. When our txId changes,\n // we acquire a new lock and release the old one. We must not release\n // the old lock until the new one is in place.\n const oldLock = this.#txIdLock;\n const newLockName = this.#encodeTxIdLockName();\n if (oldLock?.name !== newLockName) {\n this.#txIdLock = new Lock(newLockName);\n await this.#txIdLock.acquire('shared').then(() => {\n // The new lock is acquired.\n oldLock?.release();\n });\n\n if (this.log) {\n const { minTxId, maxTxId } = this.#decodeTxIdLockName(newLockName);\n this.log?.(`%ctxId to ${minTxId}:${maxTxId}`, 'color: black; background-color: pink;');\n }\n }\n }\n\n /**\n * Get all txId locks for this database.\n * @returns {Promise<{name: string, minTxId: number, maxTxId: number, encoded: string}[]>}\n */\n async #getTxIdLocks() {\n const { held } = await navigator.locks.query();\n return held\n .map(lock => this.#decodeTxIdLockName(lock.name))\n .filter(value => value !== null);\n }\n\n /**\n * @returns {string}\n */\n #encodeTxIdLockName() {\n // The maxTxId is our current view of the database. The minTxId is\n // the lowest txId we get pages from the WAL for, which is the lowest\n // key in mapIdToTx. If mapIdToTx is empty then we aren't reading\n // from the WAL at all - in this case we arbitrarily set minTxId to\n // invalid value maxTxId + 1.\n //\n // Use radix 36 to encode integer values to reduce the lock name length.\n const maxTxId = this.#txId;\n const minTxId = this.#mapIdToTx.keys().next().value ?? (maxTxId + 1);\n return `${this.#zName}-txId<${minTxId.toString(36)}:${maxTxId.toString(36)}>`;\n }\n\n /**\n * @param {string} lockName\n * @returns {{name: string, minTxId: number, maxTxId: number, encoded: string}?}\n */\n #decodeTxIdLockName(lockName) {\n const match = lockName.match(/^(.*)-txId<([0-9a-z]+):([0-9a-z]+)>$/);\n if (match?.[1] === this.#zName) {\n // This txId lock is for this database.\n return {\n name: match[1],\n minTxId: parseInt(match[2], 36),\n maxTxId: parseInt(match[3], 36),\n encoded: lockName\n };\n }\n return null;\n }\n\n /**\n * Wait for all txId locks that fail the provided predicate.\n * @param {(lock: {name: string, minTxId: number, maxTxId: number}) => boolean} predicate\n */\n async #waitForTxIdLocks(predicate) {\n /** @type {string[]} */ let failingLockNames = [];\n do {\n // Wait for all connections that fail the predicate.\n if (failingLockNames.length > 0) {\n await Promise.all(\n failingLockNames.map(name => navigator.locks.request(name, async () => {}))\n );\n }\n\n // Refresh the list of failing locks.\n failingLockNames = (await this.#getTxIdLocks())\n .filter(value => !predicate(value))\n .map(value => value.encoded);\n } while (failingLockNames.length > 0);\n }\n\n /**\n * @param {PageEntry} pageEntry\n * @returns {Uint8Array}\n */\n #fetchPage(pageEntry) {\n // Get the appropriate access handle based on salt parity.\n const accessHandle = this.#waHandles[pageEntry.waSalt1 & 1];\n\n // Read the page.\n const pageData = new Uint8Array(pageEntry.pageSize);\n const nBytesRead = accessHandle.read(pageData, { at: pageEntry.waOffset });\n\n if (nBytesRead !== pageEntry.pageSize) {\n throw new Error(`Short WAL read: expected ${pageEntry.pageSize} bytes, got ${nBytesRead}`);\n }\n return pageData;\n }\n\n *#readAllTx() {\n while (true) {\n const tx = this.#readTx();\n if (!tx) break;\n yield tx;\n }\n }\n\n /**\n * @returns {Transaction?}\n */\n #readTx() {\n // Read the next complete transaction or return null.\n /** @type {Transaction} */ const tx = {\n id: 0, // placeholder\n pages: new Map(),\n dbFileSize: 0, // placeholder\n waSalt1: 0, // placeholder\n waOffsetEnd: 0, // placeholder\n };\n\n // The property this.#activeOffset is only advanced on a successful\n // transition to the other WAL file or on reading a complete\n // transaction. Use a local variable to track our progress.\n let offset = this.#activeOffset;\n while (true) {\n const frame = this.#readFrame(offset);\n if (!frame) return null;\n\n if (frame.frameType === FRAME_TYPE_PAGE) {\n tx.pages.set(\n frame.pageOffset,\n {\n pageSize: frame.pageData.byteLength,\n waOffset: offset + FRAME_HEADER_SIZE,\n waSalt1: this.#activeHeader.salt1,\n }\n );\n } else if (frame.frameType === FRAME_TYPE_COMMIT) {\n // The transaction is complete. Update the instance state.\n this.#txId += 1;\n this.#activeOffset = offset + frame.byteLength;\n\n // Finalize the transaction fields and return it.\n tx.id = this.#txId;\n tx.dbFileSize = frame.dbFileSize;\n tx.waSalt1 = this.#activeHeader.salt1;\n tx.newPageSize =\n (frame.flags & FRAME_COMMIT_PAGE_SIZE_MASK) ? tx.pages.get(0).pageSize : null;\n if (frame.fileHeader) {\n // The commit and destination header form one reader-visible\n // transition. Only update active state after both are valid.\n this.#followFileChange(frame.fileHeader);\n tx.waSalt1 = this.#activeHeader.salt1;\n tx.waOffsetEnd = this.#activeOffset;\n }\n return tx;\n } else if (frame.frameType === FRAME_TYPE_END) {\n // A WAL file change is now marked by a commit frame with the\n // change-file flag set, but the end frame is still written and\n // read for backward compatibility.\n //\n // No more transactions on the current WAL file. Switch to the\n // other file.\n this.#followFileChange(frame.fileHeader);\n offset = this.#activeOffset;\n continue;\n }\n\n offset += frame.byteLength;\n }\n }\n\n /**\n * This method is called when transaction(s) have been received by other\n * means than readTx(), e.g. via BroadcastChannel.\n *\n * @param {Transaction} tx\n */\n #skipTx(tx) {\n if (tx.waSalt1 !== this.#activeHeader.salt1) {\n // This transaction is on the other WAL file.\n const fileHeader = this.#followFileChange(null);\n if (!fileHeader || fileHeader.salt1 !== tx.waSalt1) {\n throw new Error('invalid WAL file');\n }\n }\n\n this.#txId = tx.id;\n this.#activeOffset = tx.waOffsetEnd;\n }\n\n /**\n * @param {{overwrite?: boolean}} options\n * @returns {Transaction}\n */\n #beginTx(options = {}) {\n this.#txInProgress = {\n id: this.#txId + 1,\n pages: new Map(),\n dbFileSize: this.#dbFileSize,\n waSalt1: this.#activeHeader.salt1,\n waOffsetEnd: this.#activeOffset,\n };\n return this.#txInProgress;\n }\n\n /**\n * Write a page frame to the WAL file.\n *\n * @param {number} pageOffset\n * @param {Uint8Array} pageData\n */\n #writePage(pageOffset, pageData) {\n const headerView = new DataView(new ArrayBuffer(FRAME_HEADER_SIZE));\n headerView.setUint8(0, FRAME_TYPE_PAGE);\n headerView.setUint16(2, pageData.byteLength === 65536 ? 1 : pageData.byteLength);\n headerView.setBigUint64(8, BigInt(pageOffset));\n headerView.setUint32(16, this.#activeHeader.salt1);\n headerView.setUint32(20, this.#activeHeader.salt2);\n\n const checksum = new Checksum();\n checksum.update(new Uint8Array(headerView.buffer, 0, FRAME_HEADER_SIZE - 8));\n checksum.update(pageData);\n headerView.setUint32(24, checksum.s0);\n headerView.setUint32(28, checksum.s1);\n\n const bytesWritten =\n this.#activeHandle.write(headerView, { at: this.#txInProgress.waOffsetEnd }) +\n this.#activeHandle.write(pageData, {\n at: this.#txInProgress.waOffsetEnd + FRAME_HEADER_SIZE,\n });\n if (bytesWritten !== headerView.byteLength + pageData.byteLength) {\n throw new Error('write failed');\n }\n\n // Cache page 1 as a performance optimization and to exercise the\n // cache code path.\n const pageEntry = {\n pageSize: pageData.byteLength,\n waOffset: this.#txInProgress.waOffsetEnd + FRAME_HEADER_SIZE,\n waSalt1: this.#activeHeader.salt1,\n pageData: pageOffset === 0 ? pageData : undefined\n };\n this.#txInProgress.pages.set(pageOffset, pageEntry);\n this.#txInProgress.waOffsetEnd += bytesWritten;\n\n return pageEntry.waOffset;\n }\n\n /**\n * @param {boolean} changeFile\n * @returns {Transaction}\n */\n #commitTx(changeFile) {\n // Write a commit frame - which is a special frame header with no body -\n // to the WAL file.\n const headerView = new DataView(new ArrayBuffer(FRAME_HEADER_SIZE));\n headerView.setUint8(0, FRAME_TYPE_COMMIT);\n headerView.setUint8(1,\n (this.#txInProgress.newPageSize ? FRAME_COMMIT_PAGE_SIZE_MASK : 0) |\n (changeFile ? FRAME_COMMIT_CHANGE_FILE_MASK : 0)\n );\n headerView.setBigUint64(8, BigInt(this.#txInProgress.dbFileSize));\n headerView.setUint32(16, this.#activeHeader.salt1);\n headerView.setUint32(20, this.#activeHeader.salt2);\n\n const checksum = new Checksum();\n checksum.update(new Uint8Array(headerView.buffer, 0, FRAME_HEADER_SIZE - 8));\n headerView.setUint32(24, checksum.s0);\n headerView.setUint32(28, checksum.s1);\n\n const bytesWritten = this.#activeHandle.write(headerView, {\n at: this.#txInProgress.waOffsetEnd,\n });\n if (bytesWritten !== headerView.byteLength) {\n throw new Error('write failed');\n }\n this.#txInProgress.waOffsetEnd += bytesWritten;\n\n const tx = this.#txInProgress;\n this.#txInProgress = null;\n this.#activeOffset = tx.waOffsetEnd;\n this.#txId = tx.id;\n\n if (changeFile) {\n this.#swapActiveFile();\n\n // Move the transaction WAL position to the new file. This ensures that\n // once all connections have reached this transaction, the other WAL\n // file can be checkpointed and truncated.\n tx.waSalt1 = this.#activeHeader.salt1;\n tx.waOffsetEnd = this.#activeOffset;\n }\n\n return tx;\n }\n\n #abortTx() {\n this.#txInProgress = null;\n this.#activeHandle.truncate(this.#activeOffset);\n }\n\n /**\n * Switch the active WAL file prior to writing the next transaction.\n */\n #swapActiveFile() {\n // Write an end frame for readers that do not understand the commit\n // change-file flag.\n const frameView = new DataView(new ArrayBuffer(FRAME_HEADER_SIZE));\n frameView.setUint8(0, FRAME_TYPE_END);\n frameView.setUint32(16, this.#activeHeader.salt1);\n frameView.setUint32(20, this.#activeHeader.salt2);\n\n const checksum = new Checksum();\n checksum.update(new Uint8Array(frameView.buffer, 0, FRAME_HEADER_SIZE - 8));\n frameView.setUint32(24, checksum.s0);\n frameView.setUint32(28, checksum.s1);\n\n const bytesWritten = this.#activeHandle.write(frameView, { at: this.#activeOffset });\n if (bytesWritten !== frameView.byteLength) {\n throw new Error('write failed');\n }\n\n // Initialize the other WAL file and make it active.\n this.#activeHeader = this.#writeFileHeader();\n this.#activeHandle = this.#getInactiveHandle();\n this.#activeOffset = FILE_HEADER_SIZE;\n }\n\n #getActiveFileStartingTxId() {\n return this.#activeHeader.nextTxId;\n }\n\n #flushActiveFile() {\n this.#activeHandle.flush();\n }\n\n #flushInactiveFile() {\n const accessHandle = this.#getInactiveHandle();\n accessHandle.flush();\n }\n\n #isInactiveFileEmpty() {\n if (this.#mapIdToTx.has(this.#activeHeader.nextTxId - 1)) {\n // At least one transaction on the inactive file has not been\n // checkpointed.\n return false;\n }\n\n const inactiveHandle = this.#getInactiveHandle();\n if (inactiveHandle.getSize() < FILE_HEADER_SIZE) {\n // The inactive file is smaller than the minimum size for a valid\n // WAL file.\n return true;\n }\n\n // This test is sufficient by itself but the previous tests are\n // less expensive.\n return this.#readFileHeader(inactiveHandle) === null;\n }\n\n #truncateInactiveFile() {\n const accessHandle = this.#getInactiveHandle();\n accessHandle.truncate(0);\n }\n\n /**\n * This method is called after reading an end frame to switch to the\n * other WAL file.\n * @param {{nextTxId: number, salt1: number, salt2: number}?} fileHeader\n */\n #followFileChange(fileHeader) {\n // As an optimization, the file header can be passed as an argument\n // if it has already been read and validated. Otherwise that is\n // done here.\n const accessHandle = this.#getInactiveHandle();\n if (!fileHeader) {\n fileHeader = this.#readFileHeader(accessHandle);\n if (fileHeader?.salt1 !== ((this.#activeHeader.salt1 + 1) >>> 0)) return null;\n }\n\n this.#activeHandle = accessHandle;\n this.#activeHeader = fileHeader;\n this.#activeOffset = FILE_HEADER_SIZE;\n return fileHeader;\n }\n\n #getInactiveHandle() {\n return this.#activeHandle !== this.#waHandles[0] ?\n this.#waHandles[0] :\n this.#waHandles[1];\n }\n\n /**\n * @param {FileSystemSyncAccessHandle} accessHandle\n */\n #readFileHeader(accessHandle) {\n const headerView = new DataView(new ArrayBuffer(FILE_HEADER_SIZE));\n if (accessHandle.read(headerView, { at: 0 }) !== headerView.byteLength) {\n return null;\n }\n\n if (headerView.getUint32(0) !== MAGIC) return null;\n\n const checksum = new Checksum();\n checksum.update(new Uint8Array(headerView.buffer, 0, FILE_HEADER_SIZE - 8));\n if (!checksum.matches(headerView.getUint32(24), headerView.getUint32(28))) {\n return null;\n }\n\n return {\n nextTxId: Number(headerView.getBigUint64(8)),\n salt1: headerView.getUint32(16),\n salt2: headerView.getUint32(20),\n };\n }\n\n /**\n * @param {number} offset\n */\n #readFrame(offset) {\n const headerView = new DataView(new ArrayBuffer(FRAME_HEADER_SIZE));\n if (this.#activeHandle.read(headerView, { at: offset }) !== headerView.byteLength) {\n // EOF, not an error.\n return null;\n }\n\n // Verify the frame header salt values match the file header.\n const frameSalt1 = headerView.getUint32(16);\n const frameSalt2 = headerView.getUint32(20);\n if (frameSalt1 !== this.#activeHeader.salt1 || frameSalt2 !== this.#activeHeader.salt2) {\n // Not necessarily an error, could be from a restart without truncation.\n return null;\n }\n\n const payloadSize = (size => size === 1 ? 65536 : size)(headerView.getUint16(2));\n /** @type {Uint8Array} */ let payloadData;\n if (payloadSize) {\n payloadData = new Uint8Array(payloadSize);\n const payloadBytesRead = this.#activeHandle.read(\n payloadData,\n { at: offset + FRAME_HEADER_SIZE }\n );\n if (payloadBytesRead !== payloadSize) return null;\n }\n\n const checksum = new Checksum();\n checksum.update(new Uint8Array(headerView.buffer, 0, FRAME_HEADER_SIZE - 8));\n if (payloadData) {\n checksum.update(payloadData);\n }\n if (!checksum.matches(headerView.getUint32(24), headerView.getUint32(28))) {\n // Not necessarily an error, could be from a restart without truncation.\n return null;\n }\n\n const frameType = headerView.getUint8(0);\n if (frameType === FRAME_TYPE_PAGE) {\n return {\n frameType,\n byteLength: FRAME_HEADER_SIZE + payloadSize,\n pageOffset: Number(headerView.getBigUint64(8)),\n pageData: payloadData,\n };\n } else if (frameType === FRAME_TYPE_COMMIT) {\n const flags = headerView.getUint8(1);\n let fileHeader;\n if (flags & FRAME_COMMIT_CHANGE_FILE_MASK) {\n // Handling the flagged commit and new file header must be atomic, so\n // validate the destination before returning the frame. A corrupt\n // header should be repaired by the next writer that swaps files.\n fileHeader = this.#readFileHeader(this.#getInactiveHandle());\n if (fileHeader?.salt1 !== ((this.#activeHeader.salt1 + 1) >>> 0)) {\n return null;\n }\n }\n\n return {\n frameType,\n byteLength: FRAME_HEADER_SIZE,\n flags,\n dbFileSize: Number(headerView.getBigUint64(8)),\n fileHeader,\n };\n } else if (frameType === FRAME_TYPE_END) {\n // A commit frame with the change-file flag is now used to mark\n // a WAL file change, but the end frame is still written and read\n // for backward compatibility.\n \n // Handling the end frame and new file header must be atomic, so\n // we validate the new file header before returning the frame.\n // If the file header is corrupt, the end frame effectively does\n // not exist.\n //\n // A corrupt file header should be repaired by the next writer\n // that attempts to swap WAL files.\n const fileHeader = this.#readFileHeader(this.#getInactiveHandle());\n if (fileHeader?.salt1 !== ((this.#activeHeader.salt1 + 1) >>> 0)) {\n return null;\n }\n\n return {\n frameType,\n byteLength: FRAME_HEADER_SIZE,\n fileHeader,\n };\n }\n throw new Error(`Invalid frame type: ${frameType}`);\n }\n\n #writeFileHeader(prevSalt1 = this.#activeHeader.salt1) {\n // Derive new values from the previous values.\n const nextTxId = this.#txId + 1;\n const salt1 = (prevSalt1 + 1) >>> 0;\n const salt2 = Math.floor(Math.random() * 0xffffffff) >>> 0;\n const headerView = new DataView(new ArrayBuffer(FILE_HEADER_SIZE));\n headerView.setUint32(0, MAGIC);\n headerView.setBigUint64(8, BigInt(nextTxId));\n headerView.setUint32(16, salt1);\n headerView.setUint32(20, salt2);\n\n const checksum = new Checksum();\n checksum.update(new Uint8Array(headerView.buffer, 0, FILE_HEADER_SIZE - 8));\n headerView.setUint32(24, checksum.s0);\n headerView.setUint32(28, checksum.s1);\n\n // The even/odd parity of salt1 determines which file is written to.\n const accessHandle = this.#waHandles[salt1 & 1];\n const bytesWritten = accessHandle.write(headerView, { at: 0 });\n if (bytesWritten !== headerView.byteLength) {\n throw new Error('write failed');\n }\n\n return { nextTxId, salt1, salt2 };\n }\n}\n\n// https://www.sqlite.org/fileformat.html#checksum_algorithm\nclass Checksum {\n /** @type {number} */ s0 = 0;\n /** @type {number} */ s1 = 0;\n\n /**\n * @param {ArrayBuffer|ArrayBufferView} data\n */\n update(data) {\n if ((data.byteLength % 8) !== 0) throw new Error('Data must be a multiple of 8 bytes');\n const words = ArrayBuffer.isView(data) ?\n new Uint32Array(data.buffer, data.byteOffset, data.byteLength / 4) :\n new Uint32Array(data);\n for (let i = 0; i < words.length; i += 2) {\n this.s0 = (this.s0 + words[i] + this.s1) >>> 0;\n this.s1 = (this.s1 + words[i + 1] + this.s0) >>> 0;\n }\n }\n\n matches(s0, s1) {\n return this.s0 === s0 && this.s1 === s1;\n }\n}\n","import { FacadeVFS } from \"../FacadeVFS.js\";\nimport * as VFS from '../VFS.js';\nimport { LazyLock } from \"./LazyLock.js\";\nimport { WriteAhead } from \"./WriteAhead.js\";\n\nconst LIBRARY_FILES_ROOT = '.wa-sqlite';\nconst DEFAULT_TEMP_FILES = 6;\n\nconst finalizationRegistry = new FinalizationRegistry((/** @type {() => void} */ f) => f());\n\n/**\n * @typedef FileEntry\n * @property {string} zName\n * @property {number} flags\n * @property {FileSystemSyncAccessHandle} [accessHandle]\n\n * Main database file properties:\n * @property {*} [retryResult]\n * @property {FileSystemSyncAccessHandle[]} [waHandles]\n * \n * @property {'reserved'|'exclusive'|null} [writeHint]\n * @property {'normal'|'exclusive'} [lockingMode]\n * @property {number} [lockState] SQLITE_LOCK_*\n * @property {LazyLock} [readLock]\n * @property {LazyLock} [writeLock]\n * @property {'none'|'read'|'write'|'readwrite'} [useLazyLock]\n * @property {number} [timeout]\n * @property {0|1|2|3} [synchronous]\n * @property {number?} [pageSize]\n * @property {boolean} [overwrite]\n * \n * @property {WriteAhead} [writeAhead]\n */\n\n/**\n * @typedef OPFSWriteAheadOptions\n * @property {number} [nTmpFiles]\n * @property {number} [autoCheckpoint]\n * @property {number} [backstopInterval]\n */\n\nexport class OPFSWriteAheadVFS extends FacadeVFS {\n lastError = null;\n log = null;\n \n /** @type {Map<number, FileEntry>} */ mapIdToFile = new Map();\n /** @type {Map<string, FileEntry>} */ mapPathToFile = new Map();\n\n /** @type {Map<string, FileSystemSyncAccessHandle>} */ boundTempFiles = new Map();\n /** @type {Set<FileSystemSyncAccessHandle>} */ unboundTempFiles = new Set();\n /** @type {OPFSWriteAheadOptions} */ options = {\n nTmpFiles: DEFAULT_TEMP_FILES\n };\n\n _ready;\n\n static async create(name, module, options) {\n const vfs = new OPFSWriteAheadVFS(name, module);\n Object.assign(vfs.options, options);\n await vfs.isReady();\n return vfs;\n }\n\n constructor(name, module) {\n super(name, module);\n this._ready = (async () => {\n // Ensure the library files root directory exists.\n let dirHandle = await navigator.storage.getDirectory();\n dirHandle = await dirHandle.getDirectoryHandle(LIBRARY_FILES_ROOT, { create: true });\n\n // Clean up any stale session directories.\n // @ts-ignore\n for await (const name of dirHandle.keys()) {\n if (name.startsWith('.session-')) {\n // Acquire a lock on the session directory to ensure it is not in use.\n await navigator.locks.request(name, { ifAvailable: true }, async lock => {\n if (lock) {\n // This directory is not in use.\n try {\n await dirHandle.removeEntry(name, { recursive: true });\n } catch (e) {\n // Ignore errors, will try again next time.\n }\n }\n });\n }\n }\n\n // Create our session directory.\n const dirName = `.session-${Math.random().toString(16).slice(2)}`;\n await new Promise(resolve => {\n navigator.locks.request(dirName, () => {\n // @ts-ignore\n resolve();\n return new Promise(release => {\n // @ts-ignore\n finalizationRegistry.register(this, release);\n });\n });\n });\n dirHandle = await dirHandle.getDirectoryHandle(dirName, { create: true });\n\n // Create temporary files.\n for (let i = 0; i < this.options.nTmpFiles; i++) {\n const fileHandle= await dirHandle.getFileHandle(i.toString(), { create: true });\n const accessHandle = await fileHandle.createSyncAccessHandle();\n finalizationRegistry.register(this, () => accessHandle.close());\n this.unboundTempFiles.add(accessHandle);\n }\n })();\n }\n\n isReady() {\n return Promise.all([super.isReady(), this._ready]).then(() => true);\n }\n\n /**\n * @param {string?} zName \n * @param {number} fileId \n * @param {number} flags \n * @param {DataView} pOutFlags \n * @returns {number}\n */\n jOpen(zName, fileId, flags, pOutFlags) {\n try {\n if (zName === null) {\n // Generate a temporary filename. This will only be used as a\n // key to map to a pre-opened temporary file access handle.\n zName = Math.random().toString(16).slice(2);\n }\n\n const file = this.mapPathToFile.get(zName) ?? {\n zName,\n flags,\n retryResult: null,\n };\n this.mapPathToFile.set(zName, file);\n\n if (flags & VFS.SQLITE_OPEN_MAIN_DB) {\n // Open database and journal files with a retry operation.\n if (file.retryResult === null) {\n // This is the initial open attempt. Start the asynchronous task\n // and return SQLITE_BUSY to force a retry.\n this._module.retryOps.push(this.#retryOpen(zName, flags, fileId, pOutFlags));\n return VFS.SQLITE_BUSY;\n } else if (file.retryResult instanceof Error) {\n const e = file.retryResult;\n file.retryResult = null;\n throw e;\n }\n\n // Initialize database file state.\n file.accessHandle = file.retryResult.accessHandle;\n file.waHandles = file.retryResult.waHandles;\n file.writeAhead = file.retryResult.writeAhead;\n file.retryResult = null;\n\n file.lockState = VFS.SQLITE_LOCK_NONE;\n file.lockingMode = 'normal';\n file.readLock = new LazyLock(`${zName}#read`);\n file.writeLock = new LazyLock(`${zName}#write`);\n file.useLazyLock = 'readwrite';\n file.timeout = -1;\n file.synchronous = 1; // NORMAL\n file.writeHint = null;\n file.pageSize = null;\n file.overwrite = false;\n } else if (flags & (VFS.SQLITE_OPEN_WAL | VFS.SQLITE_OPEN_SUPER_JOURNAL)) {\n throw new Error('WAL and super-journal files are not supported');\n } else if (file.accessHandle) {\n // This temporary file already has an access handle, which happens\n // only for tests. Just use it as is.\n } else {\n // This is a temporary file. Use an unbound pre-opened accessHandle.\n if (!(flags & VFS.SQLITE_OPEN_CREATE)) throw new Error('file not found');\n file.accessHandle = this.#openTemporaryFile(zName);\n }\n\n this.mapIdToFile.set(fileId, file);\n pOutFlags.setInt32(0, flags, true);\n return VFS.SQLITE_OK;\n } catch (e) {\n console.error(e.stack);\n this.lastError = e;\n this.mapPathToFile.delete(zName);\n return VFS.SQLITE_CANTOPEN;\n }\n }\n\n /**\n * @param {string} zName \n * @param {number} syncDir \n * @returns {number}\n */\n jDelete(zName, syncDir) {\n try {\n if (this.boundTempFiles.has(zName)) {\n const file = this.mapPathToFile.get(zName);\n this.#deleteTemporaryFile(file);\n } else {\n throw new Error(`unexpected file deletion: ${zName}`);\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n console.error(e.stack);\n this.lastError = e;\n return VFS.SQLITE_IOERR_DELETE;\n }\n }\n\n /**\n * @param {string} zName \n * @param {number} flags \n * @param {DataView} pResOut \n * @returns {number}\n */\n jAccess(zName, flags, pResOut) {\n try {\n const file = this.mapPathToFile.get(zName);\n pResOut.setInt32(0, file ? 1 : 0, true);\n return VFS.SQLITE_OK;\n } catch (e) {\n console.error(e.stack);\n this.lastError = e;\n return VFS.SQLITE_IOERR_ACCESS;\n }\n }\n\n /**\n * @param {number} fileId \n * @returns {number}\n */\n jClose(fileId) {\n try {\n const file = this.mapIdToFile.get(fileId);\n if (file?.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n file.writeAhead.close();\n file.accessHandle.close();\n file.waHandles.forEach(handle => handle.close());\n this.mapPathToFile.delete(file?.zName);\n\n file.readLock.close();\n file.writeLock.close();\n } else if (file?.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) {\n this.#deleteTemporaryFile(file);\n }\n\n // Disassociate fileId from file entry.\n this.mapIdToFile.delete(fileId);\n return VFS.SQLITE_OK;\n } catch (e) {\n console.error(e.stack);\n this.lastError = e;\n return VFS.SQLITE_IOERR_CLOSE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number}\n */\n jRead(fileId, pData, iOffset) {\n try {\n const file = this.mapIdToFile.get(fileId);\n\n let bytesRead = null;\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n // Try reading from the write-ahead overlays first. A read on the\n // database file is always a complete page, except when reading\n // from the 100-byte header.\n const pageOffset = iOffset < 100 ? iOffset : 0;\n const page = file.writeAhead.read(iOffset - pageOffset);\n if (page) {\n const readData = page.subarray(pageOffset, pageOffset + pData.byteLength);\n pData.set(readData);\n bytesRead = readData.byteLength;\n }\n }\n\n if (bytesRead === null) {\n // Read directly from the OPFS file.\n\n // On Chrome (at least), passing pData to accessHandle.read() is\n // an error because pData is a Proxy of a Uint8Array. Calling\n // subarray() produces a real Uint8Array and that works.\n bytesRead = file.accessHandle.read(pData.subarray(), { at: iOffset });\n }\n\n if (bytesRead < pData.byteLength) {\n pData.fill(0, bytesRead);\n return VFS.SQLITE_IOERR_SHORT_READ;\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n console.error(e.stack);\n this.lastError = e;\n return VFS.SQLITE_IOERR_READ;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number}\n */\n jWrite(fileId, pData, iOffset) {\n try {\n const file = this.mapIdToFile.get(fileId);\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n // Write to the write-ahead overlay.\n const isPageResize = file.overwrite && file.pageSize !== pData.byteLength;\n file.writeAhead.write(iOffset, pData, {\n dstPageSize: isPageResize ? file.pageSize : null\n });\n return VFS.SQLITE_OK;\n }\n\n // On Chrome (at least), passing pData to accessHandle.write() is\n // an error because pData is a Proxy of a Uint8Array. Calling\n // subarray() produces a real Uint8Array and that works.\n file.accessHandle.write(pData.subarray(), { at: iOffset });\n return VFS.SQLITE_OK;\n } catch (e) {\n console.error(e.stack);\n this.lastError = e;\n return VFS.SQLITE_IOERR_WRITE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} iSize \n * @returns {number}\n */\n jTruncate(fileId, iSize) {\n try {\n const file = this.mapIdToFile.get(fileId);\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n file.writeAhead.truncate(iSize);\n return VFS.SQLITE_OK;\n }\n file.accessHandle.truncate(iSize);\n return VFS.SQLITE_OK;\n } catch (e) {\n console.error(e.stack);\n this.lastError = e;\n return VFS.SQLITE_IOERR_TRUNCATE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} flags \n * @returns {number}\n */\n jSync(fileId, flags) {\n try {\n const file = this.mapIdToFile.get(fileId);\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n const durability = file.synchronous > 1 ? 'strict' : 'relaxed';\n file.writeAhead.sync({ durability });\n } else {\n // This is a temporary file so sync is not needed.\n // Temporary journals are only used for rollback by the\n // connection that created them, not for recovery.\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n console.error(e.stack);\n this.lastError = e;\n return VFS.SQLITE_IOERR_FSYNC;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {DataView} pSize64 \n * @returns {number}\n */\n jFileSize(fileId, pSize64) {\n try {\n const file = this.mapIdToFile.get(fileId);\n\n let size;\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n size = file.writeAhead.getFileSize() || file.accessHandle.getSize();\n } else {\n size = file.accessHandle.getSize();\n }\n pSize64.setBigInt64(0, BigInt(size), true);\n return VFS.SQLITE_OK;\n } catch (e) {\n console.error(e.stack);\n this.lastError = e;\n return VFS.SQLITE_IOERR_FSTAT;\n }\n }\n\n /**\n * @param {number} pFile \n * @param {number} lockType \n * @returns {number|Promise<number>}\n */\n jLock(pFile, lockType) {\n try {\n const file = this.mapIdToFile.get(pFile);\n if (file.lockState === VFS.SQLITE_LOCK_NONE && lockType === VFS.SQLITE_LOCK_SHARED) {\n // We do all our locking work in this transition.\n if (file.retryResult === null) {\n if (file.lockingMode === 'exclusive') {\n // Exclusive locking mode is treated as a write, and the\n // read lock is also acquired to block readers.\n file.retryResult = {};\n this._module.retryOps.push(this.#retryLockWrite(file));\n return VFS.SQLITE_BUSY;\n }\n\n // With WAL, read and write transactions use separate locks. In\n // each case if the required lock is already held then we can\n // proceed synchronously. Otherwise we need to acquire state\n // asynchronously and retry.\n if (file.writeHint) {\n // Write transaction.\n if (!file.writeLock.acquireIfHeld('exclusive')) {\n file.retryResult = {};\n this._module.retryOps.push(this.#retryLockWrite(file));\n return VFS.SQLITE_BUSY;\n } else {\n file.writeAhead.isolateForWrite();\n }\n } else {\n // Read transaction.\n if (!file.readLock.acquireIfHeld('shared')) {\n file.retryResult = {};\n this._module.retryOps.push(this.#retryLockRead(file));\n return VFS.SQLITE_BUSY;\n } else {\n file.writeAhead.isolateForRead();\n }\n }\n } else if (file.retryResult instanceof Error) {\n const e = file.retryResult;\n file.retryResult = null;\n throw e;\n }\n\n // We have acquired the needed locks, either synchronously or\n // via retry.\n file.retryResult = null;\n } else if (lockType >= VFS.SQLITE_LOCK_RESERVED && !file.writeLock.mode) {\n // This is a write transaction but we don't already have the write\n // lock. This happens when the write hint was not used, which this\n // VFS treats as an error.\n throw new Error('Write transaction cannot use BEGIN DEFERRED');\n }\n file.lockState = lockType;\n return VFS.SQLITE_OK;\n } catch (e) {\n if (e.name === 'TimeoutError') {\n return VFS.SQLITE_BUSY;\n }\n\n console.error(e.stack);\n this.lastError = e;\n return VFS.SQLITE_IOERR_LOCK;\n }\n }\n\n /**\n * @param {number} pFile \n * @param {number} lockType \n * @returns {number}\n */\n jUnlock(pFile, lockType) {\n try {\n const file = this.mapIdToFile.get(pFile);\n\n // If retryResult is non-null, an asynchronous lock operation is in\n // progress. In that case, don't change any locks.\n if (!file.retryResult && lockType === VFS.SQLITE_LOCK_NONE) {\n // In this VFS, this is the only unlock transition that matters.\n // Exit write-ahead isolation.\n file.writeAhead.rejoin();\n\n // Release any locks.\n switch (file.useLazyLock) {\n case 'none':\n file.writeLock.release();\n file.readLock.release();\n break;\n case 'read':\n file.writeLock.release();\n file.readLock.releaseLazy();\n break;\n case 'write':\n file.writeLock.releaseLazy();\n file.readLock.release();\n break;\n case 'readwrite':\n file.writeLock.releaseLazy();\n file.readLock.releaseLazy();\n break;\n }\n\n // Reset state for the next transaction.\n file.writeHint = null;\n }\n file.lockState = lockType;\n } catch (e) {\n console.error(e.stack);\n this.lastError = e;\n return VFS.SQLITE_IOERR_UNLOCK;\n }\n }\n\n /**\n * @param {number} pFile \n * @param {DataView} pResOut \n * @returns {number}\n */\n jCheckReservedLock(pFile, pResOut) {\n // A hot journal cannot exist so this method should never be called.\n console.assert(false, 'unexpected');\n pResOut.setInt32(0, 0, true);\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} pFile\n * @param {number} op\n * @param {DataView} pArg\n * @returns {number}\n */\n jFileControl(pFile, op, pArg) {\n try {\n const file = this.mapIdToFile.get(pFile);\n switch (op) {\n case VFS.SQLITE_FCNTL_PRAGMA:\n const key = this._module.UTF8ToString(pArg.getUint32(4, true));\n const valueAddress = pArg.getUint32(8, true);\n const value = valueAddress ? this._module.UTF8ToString(valueAddress) : null;\n this.log?.(`PRAGMA ${key} ${value}`);\n switch (key.toLowerCase()) {\n case 'experimental_pragma_20251114':\n // After entering the SHARED locking state on the next\n // transaction, SQLite intends to immediately transition to\n // RESERVED if value is '1', or EXCLUSIVE if value is '2'.\n switch (value) {\n case '1':\n file.writeHint = 'reserved';\n break;\n case '2':\n file.writeHint = 'exclusive';\n break;\n default:\n throw new Error(`unexpected write hint value: ${value}`);\n }\n break;\n case 'backstop_interval':\n if (value !== null) {\n const millis = parseInt(value);\n file.writeAhead.setBackstopInterval(millis);\n } else {\n // Return current interval.\n const s = file.writeAhead.options.backstopInterval.toString();\n const ptr = this._module._sqlite3_malloc64(s.length + 1);\n this._module.stringToUTF8(s, ptr, s.length + 1);\n pArg.setUint32(0, ptr, true);\n }\n return VFS.SQLITE_OK;\n case 'busy_timeout':\n // Override SQLite's handling of busy timeouts with our\n // blocking lock timeouts.\n if (value !== null) {\n file.timeout = parseInt(value);\n } else {\n // Return current timeout.\n const s = file.timeout.toString();\n const ptr = this._module._sqlite3_malloc64(s.length + 1);\n this._module.stringToUTF8(s, ptr, s.length + 1);\n pArg.setUint32(0, ptr, true);\n }\n return VFS.SQLITE_OK;\n case 'journal_size_limit':\n if (value !== null) {\n const nPages = parseInt(value);\n file.writeAhead.options.journalSizeLimit = nPages;\n }\n break;\n case 'locking_mode':\n // Track SQLite locking mode. Exclusive mode requires a\n // write lock.\n switch (value?.toLowerCase()) {\n case 'normal':\n file.lockingMode = 'normal';\n break;\n case 'exclusive':\n file.lockingMode = 'exclusive';\n break;\n }\n break;\n case 'page_size':\n if (value !== null) {\n // Valid page sizes are 1 (which maps to 65536) or powers of\n // two from 512 to 32768.\n const n = parseInt(value);\n if (n === 1 || (n >= 512 && n <= 32768 && (n & (n - 1)) === 0)) {\n file.pageSize = n === 1 ? 65536 : n;\n }\n }\n break;\n case 'synchronous':\n // Track SQLite synchronous mode. Write-ahead transactions\n // trade durability for performance on values 1 (NORMAL) or\n // lower.\n if (value !== null) {\n switch (value.toLowerCase()) {\n case 'off':\n case '0':\n file.synchronous = 0;\n break;\n case 'normal':\n case '1':\n file.synchronous = 1;\n break;\n case 'full':\n case '2':\n file.synchronous = 2;\n break;\n case 'extra':\n case '3':\n file.synchronous = 3;\n break;\n default:\n throw new Error(`unexpected synchronous value: ${value}`);\n }\n }\n break;\n case 'vfs_trace':\n // This is a trace feature for debugging only.\n if (value !== null) {\n this.log = parseInt(value) !== 0 ? console.debug : null;\n file.writeAhead.log = this.log;\n }\n return VFS.SQLITE_OK;\n case 'wal_autocheckpoint':\n // A setting greater than zero enables automatic checkpoints\n // with this connection (enabled by default).\n if (value !== null) {\n file.writeAhead.options.autoCheckpoint = parseInt(value);\n }\n break;\n case 'wal_checkpoint':\n const checkpointMode = (value ?? 'passive').toLowerCase();\n switch (checkpointMode) {\n case 'passive':\n this._module.pendingOps.push(this.#pendingCheckpoint(file, checkpointMode));\n break;\n case 'full':\n case 'restart':\n case 'truncate':\n if (file.writeAhead.isTransactionPending()) {\n throw new Error('invalid while a transaction is in progress');\n }\n this._module.pendingOps.push(this.#pendingCheckpoint(file, checkpointMode));\n break;\n case 'noop':\n break;\n default:\n throw new Error(`unexpected wal_checkpoint mode: ${value}`);\n }\n\n // Return the approximate number of pages in the WAL before\n // checkpointing. SQLite returns different information, but\n // that is not feasible from a VFS.\n {\n const s = file.writeAhead.getWriteAheadSize().toString();\n const ptr = this._module._sqlite3_malloc64(s.length + 1);\n this._module.stringToUTF8(s, ptr, s.length + 1);\n pArg.setUint32(0, ptr, true);\n }\n return VFS.SQLITE_OK;\n case 'lazy_lock':\n // Lazy locks don't actually release their Web Lock until\n // they receive a message requesting it. Typically a setting\n // of 'readwrite' (default) or 'read' is best.\n if (value !== null) {\n const useLazyLock = value.toLowerCase();\n switch (useLazyLock) {\n case 'read':\n case 'write':\n case 'readwrite':\n case 'none':\n file.useLazyLock = useLazyLock;\n break;\n default:\n throw new Error(`unexpected value for lazy_lock: ${value}`);\n }\n }\n {\n const s = file.useLazyLock;\n const ptr = this._module._sqlite3_malloc64(s.length + 1);\n this._module.stringToUTF8(s, ptr, s.length + 1);\n pArg.setUint32(0, ptr, true);\n }\n return VFS.SQLITE_OK;\n }\n break;\n\n // Support SQLite batch atomic write transactions.\n case VFS.SQLITE_FCNTL_BEGIN_ATOMIC_WRITE:\n case VFS.SQLITE_FCNTL_COMMIT_ATOMIC_WRITE:\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n return VFS.SQLITE_OK;\n }\n break;\n case VFS.SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE:\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n file.writeAhead.rollback();\n return VFS.SQLITE_OK;\n }\n break;\n\n case VFS.SQLITE_FCNTL_SYNC:\n if (file.flags & VFS.SQLITE_OPEN_MAIN_DB) {\n file.writeAhead.commit();\n }\n break;\n\n case VFS.SQLITE_FCNTL_OVERWRITE:\n file.overwrite = true;\n break;\n }\n } catch (e) {\n console.error(e.stack);\n this.lastError = e;\n return VFS.SQLITE_IOERR;\n }\n return VFS.SQLITE_NOTFOUND;\n }\n\n /**\n * @param {number} pFile\n * @returns {number}\n */\n jDeviceCharacteristics(pFile) {\n return VFS.SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN\n | VFS.SQLITE_IOCAP_BATCH_ATOMIC;\n }\n\n /**\n * @param {Uint8Array} zBuf \n * @returns {number}\n */\n jGetLastError(zBuf) {\n if (this.lastError) {\n console.error(this.lastError);\n const outputArray = zBuf.subarray(0, zBuf.byteLength - 1);\n const { written } = new TextEncoder().encodeInto(this.lastError.message, outputArray);\n zBuf[written] = 0;\n }\n return VFS.SQLITE_OK\n }\n\n /**\n * @param {string} zName \n * @returns {FileSystemSyncAccessHandle}\n */\n #openTemporaryFile(zName) {\n if (this.unboundTempFiles.size === 0) {\n throw new Error('no temporary files available');\n }\n\n // Bind an access handle from the temporary pool.\n const accessHandle = this.unboundTempFiles.values().next().value;\n this.unboundTempFiles.delete(accessHandle);\n this.boundTempFiles.set(zName, accessHandle);\n return accessHandle;\n }\n\n /**\n * @param {FileEntry} file \n */\n #deleteTemporaryFile(file) {\n file.accessHandle.truncate(0);\n\n // Temporary files are not actually deleted, just returned to the pool.\n this.mapPathToFile.delete(file.zName);\n this.unboundTempFiles.add(file.accessHandle);\n this.boundTempFiles.delete(file.zName);\n }\n\n /**\n * @param {string} dbName \n * @param {number} i \n * @returns {string}\n */\n #getWriteAheadNameFromDbName(dbName, i) {\n // Our WAL file is not compatible with SQLite WAL, so use a distinct name.\n return `${dbName}-wa${i}`;\n }\n\n /**\n * Asynchronous PRAGMA operation to checkpoint the write-ahead log.\n * @param {FileEntry} file \n * @param {'passive'|'full'|'restart'|'truncate'} mode \n */\n async #pendingCheckpoint(file, mode) {\n const onFinally = [];\n try {\n if (mode !== 'passive' && file.lockState === VFS.SQLITE_LOCK_NONE) {\n await file.writeLock.acquire('exclusive');\n onFinally.push(() => file.writeLock.release());\n\n file.writeAhead.isolateForWrite();\n onFinally.push(() => file.writeAhead.rejoin());\n }\n \n await file.writeAhead.checkpoint({ isPassive: mode === 'passive' });\n } catch (e) {\n if (e.name === 'AbortError') {\n e.code = VFS.SQLITE_BUSY;\n }\n throw e;\n } finally {\n while (onFinally.length) {\n onFinally.pop()();\n }\n }\n }\n\n /**\n * @param {FileEntry} file \n */\n async #retryLockRead(file) {\n const onError = [];\n try {\n await file.readLock.acquire('shared', file.timeout);\n onError.push(() => file.readLock.release());\n\n file.writeAhead.isolateForRead();\n file.retryResult = {};\n } catch (e) {\n while (onError.length) {\n onError.pop()();\n }\n file.retryResult = e;\n }\n }\n\n /**\n * @param {FileEntry} file \n */\n async #retryLockWrite(file) {\n const onError = [];\n try {\n // Exclusive locking mode requires both read and write locks.\n // Otherwise, only the write lock is needed.\n if (file.lockingMode === 'exclusive') {\n await file.readLock.acquire('exclusive', file.timeout);\n onError.push(() => file.readLock.release());\n }\n\n await file.writeLock.acquire('exclusive', file.timeout);\n onError.push(() => file.writeLock.release());\n\n file.writeAhead.isolateForWrite();\n file.retryResult = {};\n } catch (e) {\n while (onError.length) {\n onError.pop()();\n }\n file.retryResult = e;\n }\n }\n\n /**\n * Handle asynchronous jOpen() tasks.\n * @param {string} zName \n * @param {number} flags \n * @param {number} fileId \n * @param {DataView} pOutFlags \n * @returns {Promise<void>}\n */\n async #retryOpen(zName, flags, fileId, pOutFlags) {\n /** @type {(() => void)[]} */ const onError = [];\n const file = this.mapPathToFile.get(zName);\n try {\n const { accessHandle, waHandles } =\n await navigator.locks.request(`${zName}#open`, async lock => {\n // Parse the path components.\n const directoryNames = zName.split('/').filter(d => d);\n const dbName = directoryNames.pop();\n\n // Get the OPFS directory handle.\n let dirHandle = await navigator.storage.getDirectory();\n const create = !!(flags & VFS.SQLITE_OPEN_CREATE);\n for (const directoryName of directoryNames) {\n dirHandle = await dirHandle.getDirectoryHandle(directoryName, { create });\n }\n\n const isNewDatabase = create && await (async function() {\n try {\n await dirHandle.getFileHandle(dbName);\n return false;\n } catch (e) {\n if (e.name === 'NotFoundError') {\n return true;\n }\n throw e;\n }\n })();\n\n // Convenience function for opening access handles.\n async function openFile(\n /** @type {string} */ filename,\n /** @type {FileSystemGetFileOptions} */ options) {\n const fileHandle = await dirHandle.getFileHandle(filename, options);\n // @ts-ignore\n const accessHandle = await fileHandle.createSyncAccessHandle({\n mode: 'readwrite-unsafe'\n });\n onError.push(() => {\n accessHandle.close();\n if (isNewDatabase) {\n dirHandle.removeEntry(filename);\n }\n });\n return accessHandle;\n }\n\n // Open the main database OPFS file.\n const accessHandle = await openFile(dbName, { create });\n\n // Open WAL files.\n const waHandles = await Promise.all([0, 1].map(async i => {\n const waName = this.#getWriteAheadNameFromDbName(dbName, i);\n const waHandle = await openFile(waName, { create: true });\n if (isNewDatabase) {\n waHandle.truncate(0);\n }\n return waHandle;\n }));\n return { accessHandle, waHandles };\n });\n\n // Create the write-ahead manager.\n const writeAhead = new WriteAhead(zName, accessHandle, waHandles);\n await writeAhead.ready();\n\n file.retryResult = { accessHandle, waHandles, writeAhead };\n } catch (e) {\n while (onError.length) {\n onError.pop()();\n }\n file.retryResult = e;\n }\n }\n}\n","// Copyright 2024 Roy T. Hashimoto. All Rights Reserved.\nimport { FacadeVFS } from '../FacadeVFS.js';\nimport * as VFS from '../VFS.js';\nimport { WebLocksMixin } from '../WebLocksMixin.js';\n\nconst LOCK_NOTIFY_INTERVAL = 1000;\n\nconst hasUnsafeAccessHandle =\n globalThis.FileSystemSyncAccessHandle.prototype.hasOwnProperty('mode');\n\n/**\n * @param {string} pathname \n * @param {boolean} create \n * @returns {Promise<[FileSystemDirectoryHandle, string]>}\n */\nasync function getPathComponents(pathname, create) {\n const [_, directories, filename] = pathname.match(/[/]?(.*)[/](.*)$/);\n\n let directoryHandle = await navigator.storage.getDirectory();\n for (const directory of directories.split('/')) {\n if (directory) {\n directoryHandle = await directoryHandle.getDirectoryHandle(directory, { create });\n }\n }\n return [directoryHandle, filename];\n};\n\nclass File {\n /** @type {string} */ pathname;\n /** @type {number} */ flags;\n /** @type {FileSystemFileHandle} */ fileHandle;\n /** @type {FileSystemSyncAccessHandle} */ accessHandle;\n\n // The rest of the properties are for platforms without readwrite-unsafe\n // access handles. Only one connection can have an open access handle\n // so coordination is needed in addition to the SQLite locking model.\n //\n // Opening and closing the access handle is expensive so we leave the\n // handle open unless another connection signals on BroadcastChannel.\n /** @type {BroadcastChannel} */ handleRequestChannel;\n /** @type {function} */ handleLockReleaser = null;\n /** @type {boolean} */ isHandleRequested = false;\n /** @type {boolean} */ isFileLocked = false;\n\n // SQLite makes one read on file open that is not protected by a lock.\n // This needs to be handled as a special case.\n /** @type {function} */ openLockReleaser = null;\n\n constructor(pathname, flags) {\n this.pathname = pathname;\n this.flags = flags;\n }\n}\n\nexport class OPFSAdaptiveVFS extends WebLocksMixin(FacadeVFS) {\n /** @type {Map<number, File>} */ mapIdToFile = new Map();\n lastError = null;\n\n log = null;\n\n static async create(name, module, options) {\n const vfs = new OPFSAdaptiveVFS(name, module, options);\n await vfs.isReady();\n return vfs;\n }\n\n constructor(name, module, options = {}) {\n super(name, module, options);\n }\n \n getFilename(fileId) {\n const pathname = this.mapIdToFile.get(fileId).pathname;\n return `OPFS:${pathname}`\n }\n\n /**\n * @param {string?} zName \n * @param {number} fileId \n * @param {number} flags \n * @param {DataView} pOutFlags \n * @returns {Promise<number>}\n */\n async jOpen(zName, fileId, flags, pOutFlags) {\n try {\n const url = new URL(zName || Math.random().toString(36).slice(2), 'file://');\n const pathname = url.pathname;\n\n const file = new File(pathname, flags);\n this.mapIdToFile.set(fileId, file);\n\n const create = !!(flags & VFS.SQLITE_OPEN_CREATE);\n const [directoryHandle, filename] = await getPathComponents(pathname, create);\n file.fileHandle = await directoryHandle.getFileHandle(filename, { create });\n\n if ((flags & VFS.SQLITE_OPEN_MAIN_DB) && !hasUnsafeAccessHandle) {\n file.handleRequestChannel = new BroadcastChannel(this.getFilename(fileId));\n\n // Acquire the access handle lock. The first read of a database\n // file is done outside xLock/xUnlock so we get that lock here.\n function notify() {\n file.handleRequestChannel.postMessage(null);\n }\n const notifyId = setInterval(notify, LOCK_NOTIFY_INTERVAL);\n setTimeout(notify);\n\n file.openLockReleaser = await new Promise((resolve, reject) => {\n navigator.locks.request(this.getFilename(fileId), lock => {\n clearInterval(notifyId);\n if (!lock) return reject();\n return new Promise(release => {\n resolve(release);\n });\n });\n });\n this.log?.('access handle acquired for open');\n }\n\n // @ts-ignore\n file.accessHandle = await file.fileHandle.createSyncAccessHandle({\n mode: 'readwrite-unsafe'\n });\n \n pOutFlags.setInt32(0, flags, true);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_CANTOPEN;\n }\n }\n\n /**\n * @param {string} zName \n * @param {number} syncDir \n * @returns {Promise<number>}\n */\n async jDelete(zName, syncDir) {\n try {\n const url = new URL(zName, 'file://');\n const pathname = url.pathname;\n \n const [directoryHandle, name] = await getPathComponents(pathname, false);\n const result = directoryHandle.removeEntry(name, { recursive: false });\n if (syncDir) {\n await result;\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n return VFS.SQLITE_IOERR_DELETE;\n }\n }\n\n /**\n * @param {string} zName \n * @param {number} flags \n * @param {DataView} pResOut \n * @returns {Promise<number>}\n */\n async jAccess(zName, flags, pResOut) {\n try {\n const url = new URL(zName, 'file://');\n const pathname = url.pathname;\n\n const [directoryHandle, dbName] = await getPathComponents(pathname, false);\n const fileHandle = await directoryHandle.getFileHandle(dbName, { create: false });\n pResOut.setInt32(0, 1, true);\n return VFS.SQLITE_OK;\n } catch (e) {\n if (e.name === 'NotFoundError') {\n pResOut.setInt32(0, 0, true);\n return VFS.SQLITE_OK;\n }\n this.lastError = e;\n return VFS.SQLITE_IOERR_ACCESS;\n }\n }\n\n /**\n * @param {number} fileId \n * @returns {Promise<number>}\n */\n async jClose(fileId) {\n try {\n const file = this.mapIdToFile.get(fileId);\n this.mapIdToFile.delete(fileId);\n await file?.accessHandle?.close();\n\n if (file?.flags & VFS.SQLITE_OPEN_DELETEONCLOSE) {\n const [directoryHandle, name] = await getPathComponents(file.pathname, false);\n await directoryHandle.removeEntry(name, { recursive: false });\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n return VFS.SQLITE_IOERR_DELETE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number}\n */\n jRead(fileId, pData, iOffset) {\n try {\n const file = this.mapIdToFile.get(fileId);\n\n // On Chrome (at least), passing pData to accessHandle.read() is\n // an error because pData is a Proxy of a Uint8Array. Calling\n // subarray() produces a real Uint8Array and that works.\n const bytesRead = file.accessHandle.read(pData.subarray(), { at: iOffset });\n if (file.openLockReleaser) {\n // We obtained the access handle on file open.\n file.accessHandle.close();\n file.accessHandle = null;\n file.openLockReleaser();\n file.openLockReleaser = null;\n this.log?.('access handle released for open');\n }\n\n if (bytesRead < pData.byteLength) {\n pData.fill(0, bytesRead);\n return VFS.SQLITE_IOERR_SHORT_READ;\n }\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_READ;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {Uint8Array} pData \n * @param {number} iOffset\n * @returns {number}\n */\n jWrite(fileId, pData, iOffset) {\n try {\n const file = this.mapIdToFile.get(fileId);\n\n // On Chrome (at least), passing pData to accessHandle.write() is\n // an error because pData is a Proxy of a Uint8Array. Calling\n // subarray() produces a real Uint8Array and that works.\n file.accessHandle.write(pData.subarray(), { at: iOffset });\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_WRITE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} iSize \n * @returns {number}\n */\n jTruncate(fileId, iSize) {\n try {\n const file = this.mapIdToFile.get(fileId);\n file.accessHandle.truncate(iSize);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_TRUNCATE;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} flags \n * @returns {number}\n */\n jSync(fileId, flags) {\n try {\n const file = this.mapIdToFile.get(fileId);\n file.accessHandle.flush();\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_FSYNC;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {DataView} pSize64 \n * @returns {number}\n */\n jFileSize(fileId, pSize64) {\n try {\n const file = this.mapIdToFile.get(fileId);\n const size = file.accessHandle.getSize();\n pSize64.setBigInt64(0, BigInt(size), true);\n return VFS.SQLITE_OK;\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR_FSTAT;\n }\n }\n\n /**\n * @param {number} fileId \n * @param {number} lockType \n * @returns {Promise<number>}\n */\n async jLock(fileId, lockType) {\n if (hasUnsafeAccessHandle) return super.jLock(fileId, lockType);\n\n const file = this.mapIdToFile.get(fileId);\n if (!file.isFileLocked) {\n file.isFileLocked = true;\n if (!file.handleLockReleaser) {\n // Listen for other connections wanting the access handle.\n file.handleRequestChannel.onmessage = event => {\n if(!file.isFileLocked) {\n // We have the access handle but the file is not locked.\n // Release the access handle for the requester.\n file.accessHandle.close();\n file.accessHandle = null;\n file.handleLockReleaser();\n file.handleLockReleaser = null;\n this.log?.('access handle requested and released');\n } else {\n // We're still using the access handle, so mark it to be\n // released when we're done.\n file.isHandleRequested = true;\n this.log?.('access handle requested');\n }\n file.handleRequestChannel.onmessage = null;\n };\n\n // We don't have the access handle. First acquire the lock.\n file.handleLockReleaser = await new Promise((resolve, reject) => {\n // Tell everyone we want the access handle.\n function notify() {\n file.handleRequestChannel.postMessage(null);\n }\n const notifyId = setInterval(notify, LOCK_NOTIFY_INTERVAL);\n setTimeout(notify);\n\n navigator.locks.request(this.getFilename(fileId), lock => {\n clearInterval(notifyId);\n if (!lock) return reject();\n return new Promise(release => {\n resolve(release);\n });\n });\n });\n\n // The access handle should now be available.\n file.accessHandle = await file.fileHandle.createSyncAccessHandle();\n this.log?.('access handle acquired');\n }\n\n }\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId \n * @param {number} lockType \n * @returns {Promise<number>}\n */\n async jUnlock(fileId, lockType) {\n if (hasUnsafeAccessHandle) return super.jUnlock(fileId, lockType);\n\n if (lockType === VFS.SQLITE_LOCK_NONE) {\n const file = this.mapIdToFile.get(fileId);\n if (file.isHandleRequested) {\n if (file.handleLockReleaser) {\n // Another connection wants the access handle.\n file.accessHandle.close();\n file.accessHandle = null;\n file.handleLockReleaser();\n file.handleLockReleaser = null;\n this.log?.('access handle released');\n }\n file.isHandleRequested = false;\n }\n file.isFileLocked = false;\n }\n return VFS.SQLITE_OK;\n }\n\n /**\n * @param {number} fileId\n * @param {number} op\n * @param {DataView} pArg\n * @returns {number|Promise<number>}\n */\n jFileControl(fileId, op, pArg) {\n try {\n const file = this.mapIdToFile.get(fileId);\n switch (op) {\n case VFS.SQLITE_FCNTL_PRAGMA:\n const key = extractString(pArg, 4);\n const value = extractString(pArg, 8);\n this.log?.('xFileControl', file.pathname, 'PRAGMA', key, value);\n switch (key.toLowerCase()) {\n case 'journal_mode':\n if (value &&\n !hasUnsafeAccessHandle && \n !['off', 'memory', 'delete', 'wal'].includes(value.toLowerCase())) {\n throw new Error('journal_mode must be \"off\", \"memory\", \"delete\", or \"wal\"');\n }\n break;\n case 'write_hint':\n return super.jFileControl(fileId, WebLocksMixin.WRITE_HINT_OP_CODE, null);\n }\n break;\n }\n } catch (e) {\n this.lastError = e;\n return VFS.SQLITE_IOERR;\n }\n return super.jFileControl(fileId, op, pArg);\n }\n\n jGetLastError(zBuf) {\n if (this.lastError) {\n console.error(this.lastError);\n const outputArray = zBuf.subarray(0, zBuf.byteLength - 1);\n const { written } = new TextEncoder().encodeInto(this.lastError.message, outputArray);\n zBuf[written] = 0;\n }\n return VFS.SQLITE_OK\n }\n}\n\nfunction extractString(dataView, offset) {\n const p = dataView.getUint32(offset, true);\n if (p) {\n const chars = new Uint8Array(dataView.buffer, p);\n return new TextDecoder().decode(chars.subarray(0, chars.indexOf(0)));\n }\n return null;\n}","// Copyright 2021 Roy T. Hashimoto. All Rights Reserved.\n\nimport * as SQLite from './sqlite-constants.js';\nexport * from './sqlite-constants.js';\n\nconst MAX_INT64 = 0x7fffffffffffffffn;\nconst MIN_INT64 = -0x8000000000000000n;\n\nconst AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;\n\nexport class SQLiteError extends Error {\n constructor(message, code) {\n super(message);\n this.code = code;\n }\n}\n\nconst async = true;\n\n/**\n * Builds a Javascript API from the Emscripten module. This API is still\n * low-level and closely corresponds to the C API exported by the module,\n * but differs in some specifics like throwing exceptions on errors.\n * @param {*} Module SQLite Emscripten module\n * @returns {SQLiteAPI}\n */\nexport function Factory(Module) {\n /** @type {SQLiteAPI} */ const sqlite3 = {};\n\n Module.retryOps = [];\n Module.pendingOps = [];\n const sqliteFreeAddress = Module._getSqliteFree();\n\n // Allocate some space for 32-bit returned values.\n const tmp = Module._malloc(8);\n const tmpPtr = [tmp, tmp + 4];\n\n const textEncoder = new TextEncoder();\n // Convert a JS string to a C string. sqlite3_malloc is used to allocate\n // memory (use sqlite3_free to deallocate).\n function createUTF8(s) {\n if (typeof s !== 'string') return 0;\n const utf8 = textEncoder.encode(s);\n const zts = Module._sqlite3_malloc(utf8.byteLength + 1);\n Module.HEAPU8.set(utf8, zts);\n Module.HEAPU8[zts + utf8.byteLength] = 0;\n return zts;\n }\n\n /**\n * Concatenate 32-bit numbers into a 64-bit (signed) BigInt.\n * @param {number} lo32\n * @param {number} hi32\n * @returns {bigint}\n */\n function cvt32x2ToBigInt(lo32, hi32) {\n return (BigInt(hi32) << 32n) | (BigInt(lo32) & 0xffffffffn);\n }\n\n /**\n * Concatenate 32-bit numbers and return as number or BigInt, depending\n * on the value.\n * @param {number} lo32 \n * @param {number} hi32 \n * @returns {number|bigint}\n */\n const cvt32x2AsSafe = (function() {\n const hiMax = BigInt(Number.MAX_SAFE_INTEGER) >> 32n;\n const hiMin = BigInt(Number.MIN_SAFE_INTEGER) >> 32n;\n\n return function(lo32, hi32) {\n if (hi32 > hiMax || hi32 < hiMin) {\n // Can't be expressed as a Number so use BigInt.\n return cvt32x2ToBigInt(lo32, hi32);\n } else {\n // Combine the upper and lower 32-bit numbers. The complication is\n // that lo32 is a signed integer which makes manipulating its bits\n // a little tricky - the sign bit gets handled separately.\n return (hi32 * 0x100000000) + (lo32 & 0x7fffffff) - (lo32 & 0x80000000);\n }\n }\n })();\n\n const databases = new Set();\n function verifyDatabase(db) {\n if (!databases.has(db)) {\n throw new SQLiteError('not a database', SQLite.SQLITE_MISUSE);\n }\n }\n\n const mapStmtToDB = new Map();\n function verifyStatement(stmt) {\n if (!mapStmtToDB.has(stmt)) {\n throw new SQLiteError('not a statement', SQLite.SQLITE_MISUSE);\n }\n }\n\n sqlite3.bind_collection = function(stmt, bindings) {\n verifyStatement(stmt);\n const isArray = Array.isArray(bindings);\n const nBindings = sqlite3.bind_parameter_count(stmt);\n for (let i = 1; i <= nBindings; ++i) {\n const key = isArray ? i - 1 : sqlite3.bind_parameter_name(stmt, i);\n const value = bindings[key];\n if (value !== undefined) {\n sqlite3.bind(stmt, i, value);\n }\n }\n return SQLite.SQLITE_OK;\n };\n\n sqlite3.bind = function(stmt, i, value) {\n verifyStatement(stmt);\n switch (typeof value) {\n case 'number':\n if (value === (value | 0)) {\n return sqlite3.bind_int(stmt, i, value);\n } else {\n return sqlite3.bind_double(stmt, i, value);\n }\n case 'string':\n return sqlite3.bind_text(stmt, i, value);\n case \"boolean\":\n return sqlite3.bind_int(stmt, i, value ? 1 : 0);\n default:\n if (value instanceof Uint8Array || Array.isArray(value)) {\n return sqlite3.bind_blob(stmt, i, value);\n } else if (value === null) {\n return sqlite3.bind_null(stmt, i);\n } else if (typeof value === 'bigint') {\n return sqlite3.bind_int64(stmt, i, value);\n } else if (value === undefined) {\n // Existing binding (or NULL) will be used.\n return SQLite.SQLITE_NOTICE;\n } else {\n console.warn('unknown binding converted to null', value);\n return sqlite3.bind_null(stmt, i);\n }\n }\n };\n\n sqlite3.bind_blob = (function() {\n const fname = 'sqlite3_bind_blob';\n const f = Module.cwrap(fname, ...decl('nnnnn:n'));\n return function(stmt, i, value) {\n verifyStatement(stmt);\n // @ts-ignore\n const byteLength = value.byteLength ?? value.length;\n const ptr = Module._sqlite3_malloc(byteLength);\n Module.HEAPU8.subarray(ptr).set(value);\n const result = f(stmt, i, ptr, byteLength, sqliteFreeAddress);\n return check(fname, result, mapStmtToDB.get(stmt));\n };\n })();\n\n sqlite3.bind_parameter_count = (function() {\n const fname = 'sqlite3_bind_parameter_count';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(stmt) {\n verifyStatement(stmt);\n const result = f(stmt);\n return result;\n };\n })();\n\n sqlite3.bind_double = (function() {\n const fname = 'sqlite3_bind_double';\n const f = Module.cwrap(fname, ...decl('nnn:n'));\n return function(stmt, i, value) {\n verifyStatement(stmt);\n const result = f(stmt, i, value);\n return check(fname, result, mapStmtToDB.get(stmt));\n };\n })();\n\n sqlite3.bind_int = (function() {\n const fname = 'sqlite3_bind_int';\n const f = Module.cwrap(fname, ...decl('nnn:n'));\n return function(stmt, i, value) {\n verifyStatement(stmt);\n if (value > 0x7fffffff || value < -0x80000000) return SQLite.SQLITE_RANGE;\n\n const result = f(stmt, i, value);\n return check(fname, result, mapStmtToDB.get(stmt));\n };\n })();\n\n sqlite3.bind_int64 = (function() {\n const fname = 'sqlite3_bind_int64';\n const f = Module.cwrap(fname, ...decl('nnnn:n'));\n return function(stmt, i, value) {\n verifyStatement(stmt);\n if (value > MAX_INT64 || value < MIN_INT64) return SQLite.SQLITE_RANGE;\n\n const lo32 = value & 0xffffffffn;\n const hi32 = value >> 32n;\n const result = f(stmt, i, Number(lo32), Number(hi32));\n return check(fname, result, mapStmtToDB.get(stmt));\n };\n })();\n\n sqlite3.bind_null = (function() {\n const fname = 'sqlite3_bind_null';\n const f = Module.cwrap(fname, ...decl('nn:n'));\n return function(stmt, i) {\n verifyStatement(stmt);\n const result = f(stmt, i);\n return check(fname, result, mapStmtToDB.get(stmt));\n };\n })();\n\n sqlite3.bind_parameter_name = (function() {\n const fname = 'sqlite3_bind_parameter_name';\n const f = Module.cwrap(fname, ...decl('n:s'));\n return function(stmt, i) {\n verifyStatement(stmt);\n const result = f(stmt, i);\n return result;\n };\n })();\n\n sqlite3.bind_text = (function() {\n const fname = 'sqlite3_bind_text';\n const f = Module.cwrap(fname, ...decl('nnnnn:n'));\n return function(stmt, i, value) {\n verifyStatement(stmt);\n const ptr = createUTF8(value);\n const result = f(stmt, i, ptr, -1, sqliteFreeAddress);\n return check(fname, result, mapStmtToDB.get(stmt));\n };\n })();\n\n sqlite3.changes = (function() {\n const fname = 'sqlite3_changes';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(db) {\n verifyDatabase(db);\n const result = f(db);\n return result;\n };\n })();\n\n sqlite3.clear_bindings = (function() {\n const fname = 'sqlite3_clear_bindings';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(stmt) {\n verifyStatement(stmt);\n const result = f(stmt);\n return check(fname, result, mapStmtToDB.get(stmt));\n };\n })();\n \n sqlite3.close = (function() {\n const fname = 'sqlite3_close';\n const f = Module.cwrap(fname, ...decl('n:n'), { async });\n return async function(db) {\n verifyDatabase(db);\n const result = await f(db);\n databases.delete(db);\n return check(fname, result, db);\n };\n })();\n\n sqlite3.column = function(stmt, iCol) {\n verifyStatement(stmt);\n const type = sqlite3.column_type(stmt, iCol);\n switch (type) {\n case SQLite.SQLITE_BLOB:\n return sqlite3.column_blob(stmt, iCol);\n case SQLite.SQLITE_FLOAT:\n return sqlite3.column_double(stmt, iCol);\n case SQLite.SQLITE_INTEGER:\n const lo32 = sqlite3.column_int(stmt, iCol);\n const hi32 = Module.getTempRet0();\n return cvt32x2AsSafe(lo32, hi32);\n case SQLite.SQLITE_NULL:\n return null;\n case SQLite.SQLITE_TEXT:\n return sqlite3.column_text(stmt, iCol);\n default:\n throw new SQLiteError('unknown type', type);\n }\n };\n\n sqlite3.column_blob = (function() {\n const fname = 'sqlite3_column_blob';\n const f = Module.cwrap(fname, ...decl('nn:n'));\n return function(stmt, iCol) {\n verifyStatement(stmt);\n const nBytes = sqlite3.column_bytes(stmt, iCol);\n const address = f(stmt, iCol);\n const result = Module.HEAPU8.subarray(address, address + nBytes);\n return result;\n };\n })();\n\n sqlite3.column_bytes = (function() {\n const fname = 'sqlite3_column_bytes';\n const f = Module.cwrap(fname, ...decl('nn:n'));\n return function(stmt, iCol) {\n verifyStatement(stmt);\n const result = f(stmt, iCol);\n return result;\n };\n })();\n\n sqlite3.column_count = (function() {\n const fname = 'sqlite3_column_count';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(stmt) {\n verifyStatement(stmt);\n const result = f(stmt);\n return result;\n };\n })();\n\n sqlite3.column_double = (function() {\n const fname = 'sqlite3_column_double';\n const f = Module.cwrap(fname, ...decl('nn:n'));\n return function(stmt, iCol) {\n verifyStatement(stmt);\n const result = f(stmt, iCol);\n return result;\n };\n })();\n\n sqlite3.column_int = (function() {\n // Retrieve int64 but use only the lower 32 bits. The upper 32-bits are\n // accessible with Module.getTempRet0().\n const fname = 'sqlite3_column_int64';\n const f = Module.cwrap(fname, ...decl('nn:n'));\n return function(stmt, iCol) {\n verifyStatement(stmt);\n const result = f(stmt, iCol);\n return result;\n };\n })();\n\n sqlite3.column_int64 = (function() {\n const fname = 'sqlite3_column_int64';\n const f = Module.cwrap(fname, ...decl('nn:n'));\n return function(stmt, iCol) {\n verifyStatement(stmt);\n const lo32 = f(stmt, iCol);\n const hi32 = Module.getTempRet0();\n const result = cvt32x2ToBigInt(lo32, hi32);\n return result;\n };\n })();\n\n sqlite3.column_name = (function() {\n const fname = 'sqlite3_column_name';\n const f = Module.cwrap(fname, ...decl('nn:s'));\n return function(stmt, iCol) {\n verifyStatement(stmt);\n const result = f(stmt, iCol);\n return result;\n };\n })();\n\n sqlite3.column_names = function(stmt) {\n const columns = [];\n const nColumns = sqlite3.column_count(stmt);\n for (let i = 0; i < nColumns; ++i) {\n columns.push(sqlite3.column_name(stmt, i));\n }\n return columns;\n };\n\n sqlite3.column_text = (function() {\n const fname = 'sqlite3_column_text';\n const f = Module.cwrap(fname, ...decl('nn:s'));\n return function(stmt, iCol) {\n verifyStatement(stmt);\n const result = f(stmt, iCol);\n return result;\n };\n })();\n\n sqlite3.column_type = (function() {\n const fname = 'sqlite3_column_type';\n const f = Module.cwrap(fname, ...decl('nn:n'));\n return function(stmt, iCol) {\n verifyStatement(stmt);\n const result = f(stmt, iCol);\n return result;\n };\n })();\n\n sqlite3.create_function = function(db, zFunctionName, nArg, eTextRep, pApp, xFunc, xStep, xFinal) {\n verifyDatabase(db);\n \n // Convert SQLite callback arguments to JavaScript-friendly arguments.\n function adapt(f) {\n return f instanceof AsyncFunction ?\n (async (ctx, n, values) => f(ctx, Module.HEAP32.subarray(values / 4, values / 4 + n))) :\n ((ctx, n, values) => f(ctx, Module.HEAP32.subarray(values / 4, values / 4 + n)));\n }\n\n const result = Module.create_function(\n db,\n zFunctionName,\n nArg,\n eTextRep,\n pApp,\n xFunc && adapt(xFunc),\n xStep && adapt(xStep),\n xFinal);\n return check('sqlite3_create_function', result, db);\n };\n\n sqlite3.data_count = (function() {\n const fname = 'sqlite3_data_count';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(stmt) {\n verifyStatement(stmt);\n const result = f(stmt);\n return result;\n };\n })();\n\n sqlite3.exec = async function(db, sql, callback) {\n for await (const stmt of sqlite3.statements(db, sql)) {\n let columns;\n while (await sqlite3.step(stmt) === SQLite.SQLITE_ROW) {\n if (callback) {\n columns = columns ?? sqlite3.column_names(stmt);\n const row = sqlite3.row(stmt);\n await callback(row, columns);\n }\n }\n }\n return SQLite.SQLITE_OK;\n };\n\n sqlite3.finalize = (function() {\n const fname = 'sqlite3_finalize';\n const f = Module.cwrap(fname, ...decl('n:n'), { async });\n return async function(stmt) {\n const result = await f(stmt);\n mapStmtToDB.delete(stmt)\n\n // Don't throw on error here. Typically the error has already been\n // thrown and finalize() is part of the cleanup.\n return result;\n };\n })();\n\n sqlite3.get_autocommit = (function() {\n const fname = 'sqlite3_get_autocommit';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(db) {\n const result = f(db);\n return result;\n };\n })();\n\n sqlite3.libversion = (function() {\n const fname = 'sqlite3_libversion';\n const f = Module.cwrap(fname, ...decl(':s'));\n return function() {\n const result = f();\n return result;\n };\n })();\n\n sqlite3.libversion_number = (function() {\n const fname = 'sqlite3_libversion_number';\n const f = Module.cwrap(fname, ...decl(':n'));\n return function() {\n const result = f();\n return result;\n };\n })();\n\n sqlite3.limit = (function() {\n const fname = 'sqlite3_limit';\n const f = Module.cwrap(fname, ...decl('nnn:n'));\n return function(db, id, newVal) {\n const result = f(db, id, newVal);\n return result;\n };\n })();\n\n sqlite3.open_v2 = (function() {\n const fname = 'sqlite3_open_v2';\n const f = Module.cwrap(fname, ...decl('snnn:n'), { async });\n return async function(zFilename, flags, zVfs) {\n flags = flags || SQLite.SQLITE_OPEN_CREATE | SQLite.SQLITE_OPEN_READWRITE;\n zVfs = createUTF8(zVfs);\n try {\n // Allow retry operations.\n const rc = await retry(() => f(zFilename, tmpPtr[0], flags, zVfs));\n\n const db = Module.getValue(tmpPtr[0], '*');\n if (rc !== SQLite.SQLITE_OK) {\n // sqlite3_open_v2 usually returns a database handle even when opening fails.\n // Capture its error before closing because close may replace the message.\n const message = db ?\n Module.ccall('sqlite3_errmsg', 'string', ['number'], [db]) :\n fname;\n const error = new SQLiteError(message, rc);\n\n if (db) {\n databases.add(db);\n try {\n await sqlite3.close(db);\n } catch {\n // Closing an errored handle is best effort; preserve the open error.\n } finally {\n databases.delete(db);\n }\n }\n throw error;\n }\n\n databases.add(db);\n Module.ccall('RegisterExtensionFunctions', 'void', ['number'], [db]);\n return db;\n } finally {\n Module._sqlite3_free(zVfs);\n }\n };\n })();\n\n sqlite3.progress_handler = function(db, nProgressOps, handler, userData) {\n verifyDatabase(db);\n Module.progress_handler(db, nProgressOps, handler, userData);\n };;\n\n sqlite3.reset = (function() {\n const fname = 'sqlite3_reset';\n const f = Module.cwrap(fname, ...decl('n:n'), { async });\n return async function(stmt) {\n verifyStatement(stmt);\n const result = await f(stmt);\n return check(fname, result, mapStmtToDB.get(stmt));\n };\n })();\n\n sqlite3.result = function(context, value) {\n switch (typeof value) {\n case 'number':\n if (value === (value | 0)) {\n sqlite3.result_int(context, value);\n } else {\n sqlite3.result_double(context, value);\n }\n break;\n case 'string':\n sqlite3.result_text(context, value);\n break;\n default:\n if (value instanceof Uint8Array || Array.isArray(value)) {\n sqlite3.result_blob(context, value);\n } else if (value === null) {\n sqlite3.result_null(context);\n } else if (typeof value === 'bigint') {\n return sqlite3.result_int64(context, value);\n } else {\n console.warn('unknown result converted to null', value);\n sqlite3.result_null(context);\n }\n break;\n }\n\n };\n\n sqlite3.result_blob = (function() {\n const fname = 'sqlite3_result_blob';\n const f = Module.cwrap(fname, ...decl('nnnn:n'));\n return function(context, value) {\n // @ts-ignore\n const byteLength = value.byteLength ?? value.length;\n const ptr = Module._sqlite3_malloc(byteLength);\n Module.HEAPU8.subarray(ptr).set(value);\n f(context, ptr, byteLength, sqliteFreeAddress); // void return\n };\n })();\n\n sqlite3.result_double = (function() {\n const fname = 'sqlite3_result_double';\n const f = Module.cwrap(fname, ...decl('nn:n'));\n return function(context, value) {\n f(context, value); // void return\n };\n })();\n\n sqlite3.result_int = (function() {\n const fname = 'sqlite3_result_int';\n const f = Module.cwrap(fname, ...decl('nn:n'));\n return function(context, value) {\n f(context, value); // void return\n };\n })();\n\n sqlite3.result_int64 = (function() {\n const fname = 'sqlite3_result_int64';\n const f = Module.cwrap(fname, ...decl('nnn:n'));\n return function(context, value) {\n if (value > MAX_INT64 || value < MIN_INT64) return SQLite.SQLITE_RANGE;\n\n const lo32 = value & 0xffffffffn;\n const hi32 = value >> 32n;\n f(context, Number(lo32), Number(hi32)); // void return\n };\n })();\n\n sqlite3.result_null = (function() {\n const fname = 'sqlite3_result_null';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(context) {\n f(context); // void return\n };\n })();\n\n sqlite3.result_text = (function() {\n const fname = 'sqlite3_result_text';\n const f = Module.cwrap(fname, ...decl('nnnn:n'));\n return function(context, value) {\n const ptr = createUTF8(value);\n f(context, ptr, -1, sqliteFreeAddress); // void return\n };\n })();\n\n sqlite3.row = function(stmt) {\n const row = [];\n const nColumns = sqlite3.data_count(stmt);\n for (let i = 0; i < nColumns; ++i) {\n const value = sqlite3.column(stmt, i);\n\n // Copy blob if aliasing volatile WebAssembly memory. This avoids an\n // unnecessary copy if users monkey patch column_blob to copy.\n // @ts-ignore\n row.push(value?.buffer === Module.HEAPU8.buffer ? value.slice() : value);\n }\n return row;\n };\n\n sqlite3.set_authorizer = function(db, xAuth, pApp) {\n verifyDatabase(db);\n\n // Convert SQLite callback arguments to JavaScript-friendly arguments.\n function cvtArgs(_, iAction, p3, p4, p5, p6) {\n return [\n _,\n iAction,\n Module.UTF8ToString(p3),\n Module.UTF8ToString(p4),\n Module.UTF8ToString(p5),\n Module.UTF8ToString(p6)\n ];\n };\n function adapt(f) {\n return f instanceof AsyncFunction ?\n (async (_, iAction, p3, p4, p5, p6) => f(...cvtArgs(_, iAction, p3, p4, p5, p6))) :\n ((_, iAction, p3, p4, p5, p6) => f(...cvtArgs(_, iAction, p3, p4, p5, p6)));\n }\n\n const result = Module.set_authorizer(db, adapt(xAuth), pApp);\n return check('sqlite3_set_authorizer', result, db);\n };;\n \n sqlite3.sql = (function() {\n const fname = 'sqlite3_sql';\n const f = Module.cwrap(fname, ...decl('n:s'));\n return function(stmt) {\n verifyStatement(stmt);\n const result = f(stmt);\n return result;\n };\n })();\n\n sqlite3.statements = function(db, sql, options = {}) {\n const prepare = Module.cwrap(\n 'sqlite3_prepare_v3',\n 'number',\n ['number', 'number', 'number', 'number', 'number', 'number'],\n { async: true });\n\n return (async function*() {\n const onFinally = [];\n try {\n // Encode SQL string to UTF-8.\n const utf8 = textEncoder.encode(sql);\n\n // Copy encoded string to WebAssembly memory. The SQLite docs say\n // zero-termination is a minor optimization so add room for that.\n // Also add space for the statement handle and SQL tail pointer.\n const allocSize = utf8.byteLength - (utf8.byteLength % 4) + 12;\n const pzHead = Module._sqlite3_malloc(allocSize);\n const pzEnd = pzHead + utf8.byteLength + 1;\n onFinally.push(() => Module._sqlite3_free(pzHead));\n Module.HEAPU8.set(utf8, pzHead);\n Module.HEAPU8[pzEnd - 1] = 0;\n \n // Use extra space for the statement handle and SQL tail pointer.\n const pStmt = pzHead + allocSize - 8;\n const pzTail = pzHead + allocSize - 4;\n\n // Ensure that statement handles are not leaked.\n let stmt;\n function maybeFinalize() {\n if (stmt && !options.unscoped) {\n sqlite3.finalize(stmt);\n }\n stmt = 0;\n }\n onFinally.push(maybeFinalize);\n \n // Loop over statements.\n Module.setValue(pzTail, pzHead, '*');\n do {\n // Reclaim resources for the previous iteration.\n maybeFinalize();\n\n // Call sqlite3_prepare_v3() for the next statement.\n // Allow retry operations.\n const zTail = Module.getValue(pzTail, '*');\n const rc = await retry(() => {\n return prepare(\n db,\n zTail,\n pzEnd - pzTail,\n options.flags || 0,\n pStmt,\n pzTail);\n });\n\n if (rc !== SQLite.SQLITE_OK) {\n check('sqlite3_prepare_v3', rc, db);\n }\n \n stmt = Module.getValue(pStmt, '*');\n if (stmt) {\n mapStmtToDB.set(stmt, db);\n yield stmt;\n }\n } while (stmt);\n } finally {\n while (onFinally.length) {\n onFinally.pop()();\n }\n }\n })();\n };\n\n sqlite3.step = (function() {\n const fname = 'sqlite3_step';\n const f = Module.cwrap(fname, ...decl('n:n'), { async });\n return async function(stmt) {\n verifyStatement(stmt);\n\n // Allow retry operations.\n const rc = await retry(() => f(stmt));\n\n return check(fname, rc, mapStmtToDB.get(stmt), [SQLite.SQLITE_ROW, SQLite.SQLITE_DONE]);\n };\n })();\n\n sqlite3.commit_hook = function(db, xCommitHook) {\n verifyDatabase(db);\n Module.commit_hook(db, xCommitHook);\n };\n\n sqlite3.update_hook = function(db, xUpdateHook) {\n verifyDatabase(db);\n\n // Convert SQLite callback arguments to JavaScript-friendly arguments.\n function cvtArgs(iUpdateType, dbName, tblName, lo32, hi32) {\n return [\n iUpdateType,\n Module.UTF8ToString(dbName),\n Module.UTF8ToString(tblName),\n\t\tcvt32x2ToBigInt(lo32, hi32)\n ];\n };\n function adapt(f) {\n return f instanceof AsyncFunction ?\n (async (iUpdateType, dbName, tblName, lo32, hi32) => f(...cvtArgs(iUpdateType, dbName, tblName, lo32, hi32))) :\n ((iUpdateType, dbName, tblName, lo32, hi32) => f(...cvtArgs(iUpdateType, dbName, tblName, lo32, hi32)));\n }\n\n Module.update_hook(db, adapt(xUpdateHook));\n };;\n\n sqlite3.value = function(pValue) {\n const type = sqlite3.value_type(pValue);\n switch (type) {\n case SQLite.SQLITE_BLOB:\n return sqlite3.value_blob(pValue);\n case SQLite.SQLITE_FLOAT:\n return sqlite3.value_double(pValue);\n case SQLite.SQLITE_INTEGER:\n const lo32 = sqlite3.value_int(pValue);\n const hi32 = Module.getTempRet0();\n return cvt32x2AsSafe(lo32, hi32);\n case SQLite.SQLITE_NULL:\n return null;\n case SQLite.SQLITE_TEXT:\n return sqlite3.value_text(pValue);\n default:\n throw new SQLiteError('unknown type', type);\n }\n };\n\n sqlite3.value_blob = (function() {\n const fname = 'sqlite3_value_blob';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(pValue) {\n const nBytes = sqlite3.value_bytes(pValue);\n const address = f(pValue);\n const result = Module.HEAPU8.subarray(address, address + nBytes);\n return result;\n };\n })();\n\n sqlite3.value_bytes = (function() {\n const fname = 'sqlite3_value_bytes';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(pValue) {\n const result = f(pValue);\n return result;\n };\n })();\n\n sqlite3.value_double = (function() {\n const fname = 'sqlite3_value_double';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(pValue) {\n const result = f(pValue);\n return result;\n };\n })();\n\n sqlite3.value_int = (function() {\n const fname = 'sqlite3_value_int64';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(pValue) {\n const result = f(pValue);\n return result;\n };\n })();\n\n sqlite3.value_int64 = (function() {\n const fname = 'sqlite3_value_int64';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(pValue) {\n const lo32 = f(pValue);\n const hi32 = Module.getTempRet0();\n const result = cvt32x2ToBigInt(lo32, hi32);\n return result;\n };\n })();\n\n sqlite3.value_text = (function() {\n const fname = 'sqlite3_value_text';\n const f = Module.cwrap(fname, ...decl('n:s'));\n return function(pValue) {\n const result = f(pValue);\n return result;\n };\n })();\n\n sqlite3.value_type = (function() {\n const fname = 'sqlite3_value_type';\n const f = Module.cwrap(fname, ...decl('n:n'));\n return function(pValue) {\n const result = f(pValue);\n return result;\n };\n })();\n\n sqlite3.vfs_register = function(vfs, makeDefault) {\n const result = Module.vfs_register(vfs, makeDefault);\n return check('sqlite3_vfs_register', result);\n };\n\n function check(fname, result, db = null, allowed = [SQLite.SQLITE_OK]) {\n if (allowed.includes(result)) return result;\n const message = db ?\n Module.ccall('sqlite3_errmsg', 'string', ['number'], [db]) :\n fname;\n throw new SQLiteError(message, result);\n }\n\n // This function is used to automatically retry failed calls that\n // have pending retry operations that should allow the retry to\n // succeed.\n async function retry(f) {\n let rc;\n for (let retryCount = 0; retryCount < 2; ++retryCount) {\n // Wait for all pending retry operations to complete. This is\n // normally empty on the first loop iteration.\n if (Module.retryOps.length) {\n try { \n await Promise.all(Module.retryOps);\n } finally {\n Module.retryOps = [];\n }\n }\n \n rc = await f();\n if (rc === SQLite.SQLITE_OK || Module.retryOps.length === 0) {\n if (Module.pendingOps.length) {\n try {\n await Promise.all(Module.pendingOps);\n } catch (e) {\n console.error('Error in pendingOps:', e);\n return e.code || SQLite.SQLITE_ERROR;\n } finally {\n Module.pendingOps = [];\n }\n }\n return rc;\n }\n }\n return rc;\n }\n\n return sqlite3;\n}\n\n// Helper function to use a more compact signature specification.\nfunction decl(s) {\n const result = [];\n const m = s.match(/([ns@]*):([nsv@])/);\n switch (m[2]) {\n case 'n': result.push('number'); break;\n case 's': result.push('string'); break;\n case 'v': result.push(null); break;\n }\n\n const args = [];\n for (let c of m[1]) {\n switch (c) {\n case 'n': args.push('number'); break;\n case 's': args.push('string'); break;\n }\n }\n result.push(args);\n return result;\n}\n","import type { SQLiteErrorCode } from './errors';\nimport type { SQLiteResultCode } from './sqlite-codes';\n\nexport type SQLiteWorkerMessageData<_T = unknown> = {\n callId: number;\n terminate?: boolean;\n} & (\n | SQLWorkerResultData[keyof SQLWorkerResultData]\n | { type: 'error'; message: string }\n);\n\nexport type SQLWorkerResultData<T = unknown> = {\n open: { success: boolean };\n sql: { type: 'partial'; result: T[] } | { type: 'one'; sizes: number[] };\n abort: { type: 'done' };\n};\n\nexport const SharedArrayTypes = {\n INT: 0,\n STRING: 1,\n OBJECT: 2,\n};\n\n/**\n * The savepoint a transaction asks the worker to handle around one query\n * (spec 2026-09-11, D4/D5). `conclude` settles the savepoint the previous\n * savepointed write left open — `release` keeps that write, `undo` rolls it\n * back first — and `open` starts one for this query's own statement. Both run\n * before the statement, conclusion first. Internal: no consumer sets it.\n */\nexport type SavepointOp = { conclude?: 'release' | 'undo'; open?: true };\n\ntype SQLOptions = {\n chunkSize?: number;\n /** Chunks the worker may send before waiting for a credit. Spec §3.2. */\n credits?: number;\n /** When true, the worker installs an async progress handler so an AbortSignal can stop a running step(). */\n abortable?: boolean;\n /** See `SavepointOp`. */\n savepoint?: SavepointOp;\n};\n\n/**\n * Where a worker fetches its `.wasm` from, when the consumer overrode it.\n *\n * Discriminated rather than a single string because the two forms differ in\n * what they leave to the Emscripten glue. `base` is a directory: the glue\n * supplies the file name (`locateFile('wa-sqlite-async.wasm')`), so nothing\n * here names the three builds' files — and nothing has to be renamed when\n * wa-sqlite renames one. `file` is the whole URL, typically content-hashed by\n * a bundler, so the glue's file name is discarded.\n *\n * Always absolute: `resolveWasmLocation` (`src/utils.ts`) resolves against the\n * page before the `open` message is posted, so the worker applies it without\n * knowing what it was relative to.\n */\nexport type WasmLocation = { base: string } | { file: string };\n\nexport type ClientMessageData =\n | {\n type: 'open';\n file: string;\n vfs: SQLiteVFS;\n build?: SQLiteBuild;\n pragmas?: Record<string, string>;\n /** Statements retained per worker; see `src/client.ts`. Internal. */\n statementCacheSize?: number;\n /** Bytes retained per worker; see `src/client.ts`. Internal. */\n statementCacheBytes?: number;\n wasm?: WasmLocation;\n /** Shared abort slots, one Int32 per worker. Isolated contexts only. */\n abortSlots?: SharedArrayBuffer;\n /** This worker's index into `abortSlots`. */\n abortIndex?: number;\n /**\n * Features this worker must find before opening; it declines instead of\n * opening when one is missing (spec 2026-09-13). Sent to slots of index\n * ≥ 1 only, and only by a VFS that declares `singleConnectionWithout`.\n */\n declineWithout?: readonly PlatformFeature[];\n /**\n * Features worker 0 probes before opening, where the VFS is exclusive\n * without one (spec 2026-09-15, §3.2): it reports them with `probed`,\n * then loads nothing until `proceed`. Sent to slot 0 only, and only by a\n * VFS that declares `exclusiveConnectionWithout`.\n */\n probeFirst?: readonly PlatformFeature[];\n }\n | {\n type: 'query';\n callId: number;\n sql: string;\n params: unknown[];\n options?: SQLOptions;\n }\n | { type: 'close'; callId: number }\n | { type: 'credit'; callId: number; n: number }\n | { type: 'stop'; callId: number }\n /** The client decided the connection lock; worker 0 may open (spec 2026-09-15). */\n | { type: 'proceed'; callId: number }\n | {\n type: 'delete';\n callId: number;\n file: string;\n vfs: SQLiteVFS;\n build?: SQLiteBuild;\n wasm?: WasmLocation;\n };\n\nexport type WorkerMessageData =\n | { type: 'ready'; callId: number }\n /**\n * The worker found a feature of `declineWithout` missing and opened nothing:\n * the environment caps the pool (spec 2026-09-13).\n */\n | { type: 'declined'; callId: number; missing: PlatformFeature }\n /**\n * Worker 0's answer to `probeFirst`: the first feature missing, or null. It\n * opens nothing until the client sends `proceed` (spec 2026-09-15, §3.2).\n */\n | { type: 'probed'; callId: number; missing: PlatformFeature | null }\n | { type: 'chunk'; callId: number; data: unknown[] }\n | {\n type: 'done';\n callId: number;\n affected: number;\n /**\n * Statements compiled while serving this query — zero on a cache hit.\n * Rides the same message as `affected` rather than opening a channel:\n * the effect this instruments is a count, not a duration (`mem:lessons`,\n * \"for a sub-millisecond effect, count the round trips\").\n */\n prepared: number;\n /**\n * Whether the connection is inside a transaction once this query has\n * ended — `sqlite3_get_autocommit() === 0`. SQLite can leave a\n * transaction by itself: an interrupted INSERT/UPDATE/DELETE rolls the\n * whole transaction back. Absent when the worker could not read it.\n */\n inTransaction?: boolean | undefined;\n }\n | {\n type: 'error';\n callId: number;\n message: string;\n cause?: unknown;\n /** SQLite's numeric result code, when the failure came from SQLite. */\n sqliteCode?: SQLiteResultCode;\n /**\n * SQLite's extended result code, read in the worker where the statement\n * failed (spec 2026-09-14, §5.1). Sent by the query path only, and\n * unfiltered: this is exactly what SQLite reported, including a value\n * equal to `sqliteCode` (no subtype). The client is what drops it in\n * that case (D9); when SQLite does report a subtype,\n * `(sqliteExtendedCode & 0xff) === sqliteCode`.\n */\n sqliteExtendedCode?: number;\n /**\n * A code this library minted, when the worker knows the cause. The\n * generic path by which a worker-side error keeps its code across the\n * boundary — `worker.ts` copies it off any thrown error carrying one, so\n * this is a structural contract and not a hook for one class.\n *\n * **Nothing sets it today.** `WorkerQueryTimeout` was its only producer\n * and it went with the execution budget when `timeout` became a\n * client-side wall-clock deadline. Kept rather than deleted: it is the\n * twin of `sqliteCode` above, which is load-bearing, and rebuilding it\n * would cost the same three sites it occupies.\n */\n errorCode?: SQLiteErrorCode;\n /**\n * Whether the connection is inside a transaction once this query has\n * ended — `sqlite3_get_autocommit() === 0`. SQLite can leave a\n * transaction by itself: an interrupted INSERT/UPDATE/DELETE rolls the\n * whole transaction back. Absent when the worker could not read it.\n */\n inTransaction?: boolean | undefined;\n }\n | { type: 'closed'; callId: number }\n | { type: 'deleted'; callId: number }\n /** The delete worker found nothing at that name; deleteDatabase turns it into DATABASE_NOT_FOUND. */\n | { type: 'not-found' }\n | {\n type: 'open-error';\n callId: number;\n message: string;\n cause?: unknown;\n /** SQLite's numeric result code, when the failure came from SQLite. */\n sqliteCode?: SQLiteResultCode;\n };\n\n/** Which wa-sqlite WebAssembly build a worker loads. */\nexport type SQLiteBuild = 'sync' | 'async' | 'jspi';\n\n/**\n * What each build needs from the engine beyond plain WebAssembly.\n *\n * `satisfies Record<SQLiteBuild, …>` and not `SQLiteBuild = keyof typeof …`:\n * the check must run in this direction. Adding a build to the union then fails\n * to compile until its requirements are declared, where `keyof` would let a\n * forgotten entry mean silently that the build does not exist. `VFS_CAPABILITIES`\n * derives `SQLiteVFS` from its keys because it *is* the VFS registry; the build\n * registry is `WA_SQLITE_BUILDS` in the worker, and this table describes one\n * attribute of builds rather than the builds themselves.\n */\nexport const BUILD_REQUIREMENTS = {\n sync: [],\n async: [],\n jspi: ['jspi'],\n} as const satisfies Record<SQLiteBuild, readonly PlatformFeature[]>;\n\n/**\n * Platform features a build USES when present and works without, at a cost —\n * the symmetric of `degradesWithout` on a VFS, at the level where this one\n * actually lives. The `sync` build cannot carry an abort into a running\n * `step()` without a `SharedArrayBuffer`, and there is no SharedArrayBuffer\n * outside a cross-origin isolated context: measured 2026-09-04, it is not\n * restricted there, it is absent. Nothing here names COOP/COEP or\n * Document-Isolation-Policy: any of them satisfies the probe, and one of them\n * is Chrome-only.\n */\nexport const BUILD_DEGRADES_WITHOUT = {\n sync: ['cross-origin-isolated'],\n async: [],\n jspi: [],\n} as const satisfies Record<SQLiteBuild, readonly PlatformFeature[]>;\n\n/**\n * A platform feature a VFS may need. Which browser versions ship each one is\n * documentation data, not runtime data, so it lives in the VFS.md generator\n * (`scripts/render-vfs-matrix.ts`) with its sources — not here, where it would\n * ship to every consumer for nothing.\n */\nexport type PlatformFeature =\n | 'opfs'\n | 'readwrite-unsafe'\n | 'jspi'\n | 'writable-stream'\n | 'cross-origin-isolated';\n\n/** Where a VFS keeps the database. */\nexport type VFSStorage = 'opfs' | 'indexeddb' | 'memory';\n\n/**\n * How a VFS arranges a database in its storage — which is not the same\n * question as `storage`, and cannot be derived from it: `AccessHandlePoolVFS`\n * is `storage: 'opfs'` yet keeps opaque, randomly named slot files whose\n * association with a SQLite path lives in a header inside each file.\n *\n * `deleteDatabase` reads this to decide whether the database is also an OPFS\n * entry it can remove by name after `jDelete` — the pass that covers the two\n * VFS whose `jDelete` does not delete. A wrong value here is a deletion that\n * reports success over an intact file.\n */\nexport type VFSLayout = 'opfs-path' | 'opfs-pool' | 'idb-store' | 'memory';\n\n/** How much of the database a VFS keeps resident in RAM. */\nexport type VFSMemoryModel = 'page-cache' | 'whole-database';\n\n/** What a VFS can and cannot do. One entry per VFS, and no second table. */\nexport type VFSCapability = {\n /** Builds this VFS can run on, most preferred first. */\n readonly builds: readonly [SQLiteBuild, ...SQLiteBuild[]];\n /** Largest pool this VFS supports; `null` when unbounded. */\n readonly maxPoolSize: number | null;\n /** Why the cap exists. Required whenever `maxPoolSize` is not null. */\n readonly poolLimitReason: string | null;\n /** Whether several connections may share one database. */\n readonly multiConnection: boolean;\n /** Whether data outlives `close()`. */\n readonly persistent: boolean;\n /**\n * `page-cache`: only SQLite's page cache is resident, bounded by\n * `PRAGMA cache_size`. `whole-database`: the entire database is resident,\n * and `poolSize` multiplies it.\n */\n readonly memoryModel: VFSMemoryModel;\n /** Where the database actually lives. */\n readonly storage: VFSStorage;\n /** How the database is arranged within that storage. */\n readonly layout: VFSLayout;\n /**\n * Whether this VFS takes its OPFS access handle in the EXCLUSIVE mode —\n * `createSyncAccessHandle()` with no `mode`, rather than\n * `mode: 'readwrite-unsafe'`.\n *\n * It decides whether an acquisition has to be retried. A terminated context\n * releases its Web Locks at once but keeps its OPFS access handles for up to\n * ~2 s on Chromium (HANDLE-CORPSE, `mem:measurements`), so a VFS taking an\n * exclusive handle can meet a file held by something that answers nothing:\n * no lock to wait on, no owner to ask, only time to wait out. Where\n * `readwrite-unsafe` is used a second handle is granted regardless, and a\n * dead holder blocks nobody.\n *\n * Declared rather than detected, because the error is not available where the\n * decision has to be made: wa-sqlite's `jOpen` swallows it (measured\n * 2026-09-18) and SQLite reports a bare `SQLITE_CANTOPEN`. Where the error IS\n * available — VFS instantiation — `createVfsInstance` tests it directly and\n * needs no declaration.\n *\n * NOT declared for `OPFSAdaptiveVFS` and `OPFSWriteAheadVFS`, which ask for\n * `readwrite-unsafe` and fall back to an exclusive handle only on an engine\n * that lacks it. That combination is real but out of reach: Firefox releases\n * a dead worker's handle in 1-6 ms (HANDLE-ORPHAN), a window nothing loses.\n */\n readonly exclusiveFileHandle: boolean;\n /**\n * Platform features without which this VFS cannot work at all.\n *\n * `readwrite-unsafe` is the one that bites: WebIDL ignores the unknown\n * dictionary member on engines that do not implement it, so the handle\n * silently opens exclusive, and a second connection then waits or fails\n * depending on the VFS — see `degradesWithout` and `singleConnectionWithout`.\n * Declaring it is what lets the conformance suite probe for it and skip,\n * instead of leaving it to surface as a 60-second timeout.\n */\n readonly requires: readonly PlatformFeature[];\n /**\n * Platform features this VFS uses when present and works without, at a cost.\n *\n * `OPFSAdaptiveVFS` is the case this field exists for. Without\n * `readwrite-unsafe` it rotates a single exclusive access handle between\n * connections instead of holding one each. That works — Firefox is the engine\n * the browser suite exercises it on — but a connection in a long\n * uninterruptible statement holds the handle, and every other connection to\n * the database, in another client or tab, waits for it. Within one client it\n * runs a single worker there: see `singleConnectionWithout`.\n *\n * Without this distinction, a support table derived from browser specs would\n * mark that VFS broken everywhere outside Chromium, when it merely degrades.\n */\n readonly degradesWithout: readonly PlatformFeature[];\n /**\n * Platform features without which a pool of more than one worker buys this\n * VFS nothing, so it runs on one (spec 2026-09-13, §3 and §10). Either the\n * VFS holds its database file exclusively for a connection's whole life and\n * a second worker cannot open at all (`OPFSWriteAheadVFS`), or it rotates one\n * exclusive access handle between connections and a second worker only waits\n * its turn (`OPFSAdaptiveVFS` — measured 2026-09-14 on Firefox: a pool of one\n * was faster at startup and on bursts of reads, and equal everywhere else).\n * The pool's surplus workers probe the feature before loading anything and\n * decline (`src/worker/probes.ts`); every feature listed needs a probe there.\n */\n readonly singleConnectionWithout: readonly PlatformFeature[];\n /**\n * Files this VFS keeps beside the database, by suffix, beyond the three every\n * layout may have (`''`, `-journal`, `-wal`). `deleteDatabase` removes them\n * with the rest; a file missing from this list outlives its database.\n *\n * `OPFSWriteAheadVFS` keeps its write-ahead log in two files of its own,\n * `-wa0` and `-wa1` (wa-sqlite's `#getWriteAheadNameFromDbName`) — measured\n * left behind by every deletion until 2026-09-14.\n */\n readonly extraFileSuffixes: readonly string[];\n /**\n * Whether every statement on this VFS must hand its worker back to the event\n * loop while it runs, abortable or not.\n *\n * `IDBBatchAtomicVFS` is why it exists. Its `jLock` opens a readwrite\n * IndexedDB transaction on reaching SHARED, and IndexedDB commits a\n * transaction only once its thread returns to the event loop. A worker inside\n * one long statement never did, so every other connection's read queued\n * behind it until the statement ended — measured 2026-09-14 on both engines\n * (`mem:measurements`, IDB-SIGNAL). The worker then runs its progress handler\n * on every statement, a task turn every `PROGRESS_OPS` VM ops, which measured\n * no cost. The `sync` build cannot yield and ignores it.\n */\n readonly yieldsDuringStatements: boolean;\n /**\n * PRAGMAs this library applies on open for this VFS.\n *\n * Merged UNDER the consumer's `pragmas`, so any key they set wins and they\n * never lose a default by setting an unrelated one — `foreign_keys` is the\n * common case, and replacing rather than merging would silently disable\n * everything below it.\n *\n * The bar is deliberately high, and almost nothing clears it: **more\n * performance without less reliability, sourced rather than guessed.** Three\n * things were weighed and rejected. `journal_mode=wal` universally, because\n * no VFS here implements `xShmMap` and upstream gives write-ahead logging to\n * `OPFSWriteAheadVFS` alone, inside the VFS and unreachable by pragma.\n * `synchronous=normal`, because relaxing durability spends the consumer's\n * data, not their milliseconds. And `cache_size`, because raising it changes\n * a mode without a measurable gain — Firefox showed none at all, and the\n * heap it can then reach is never given back (measured 2026-09-02).\n */\n readonly defaultPragmas: Readonly<Record<string, string>>;\n /**\n * Whether this VFS enforces an origin-wide exclusive connection lock for the\n * client's lifetime.\n *\n * When `true`, `createSQLiteClient` acquires a `bsq:conn:…` Web Lock on first\n * use. A second client that attempts to open the same database receives `DATABASE_IN_USE`\n * immediately on its first query instead of silently reading a frozen, broken\n * view. This field is the only thing standing between a consumer and an\n * unfalsifiable silent failure — `SELECT 1` and even\n * `SELECT count(*) FROM sqlite_master` pass on a broken second client.\n *\n * `true` only for `AccessHandlePoolVFS`, whose OPFS access-handle pool is not\n * sharable across connections (measured AHP-2TAB, 2026-09-01).\n * `false` for `IDBMirrorVFS` — despite `multiConnection: false` — because two\n * clients on that VFS DO share data over its origin-wide `BroadcastChannel`\n * (measured 2026-09-01, 3/3 both engines). `multiConnection: false` there marks\n * concurrent-writer unsafety, not isolation.\n * `false` for the memory VFS, which are isolated by construction and have\n * nothing to exclude.\n *\n * `VFS_CAPABILITIES` is the single source of truth the client guard, the\n * conformance suite, the VFS.md generator and the benchmark page all read.\n * The gate is by this declaration, not by VFS name.\n */\n readonly exclusiveConnection: boolean;\n /**\n * Platform features without which this VFS holds its database file\n * exclusively for a connection's whole life, across the origin — so the\n * client takes `bsq:conn` exclusively, as for `exclusiveConnection`, and a\n * second client gets `DATABASE_IN_USE` (spec 2026-09-15).\n *\n * `OPFSWriteAheadVFS` without `readwrite-unsafe`: upstream's VFS requires the\n * mode and keeps its three access handles for the connection's life, so\n * nothing else can open the file — every query of a second client failed\n * with WORKER_CRASHED on Firefox, 20/20 per shape (2026-09-15).\n *\n * The page cannot probe these features, so worker 0 probes them before\n * opening (`src/worker/probes.ts`): every feature listed needs a probe there,\n * and must also be in `singleConnectionWithout`, whose surplus workers\n * decline before they touch the file.\n */\n readonly exclusiveConnectionWithout: readonly PlatformFeature[];\n};\n\n/**\n * The single source of truth for VFS selection. `SQLiteVFS` is derived from its\n * keys, `worker/worker.ts` must supply a loader for every key, the guards in\n * `client.ts` read it, the conformance suite gates its scenarios on it, and the\n * VFS.md table is generated from it. Nothing may hold a second copy.\n *\n * Build order is a decision per VFS, not a rule: `sync` is both the fastest and\n * the most portable build, so it leads wherever supported; `OPFSAdaptiveVFS`\n * cannot use it and leads with `async` because `jspi` is Chromium-only.\n *\n * Every declared build combination is verified by running it against the pinned\n * wa-sqlite v1.1.2, never copied from upstream's table.\n */\nexport const VFS_CAPABILITIES = {\n OPFSWriteAheadVFS: {\n builds: ['sync', 'async', 'jspi'],\n maxPoolSize: null,\n poolLimitReason: null,\n multiConnection: true,\n persistent: true,\n memoryModel: 'page-cache',\n storage: 'opfs',\n layout: 'opfs-path',\n exclusiveFileHandle: false,\n // Measured on Firefox 2026-08-27, HAS_UNSAFE_HANDLES false: all three\n // build pairs and all six invariants pass. That campaign ran at an\n // EFFECTIVE pool of one: without readwrite-unsafe every worker but the\n // first failed to open, and conformance did not count live workers\n // (spec 2026-09-13). `requires` used to name readwrite-unsafe, which made\n // the conformance suite skip the very pairs that would have falsified it.\n // Safari behaves as Firefox — observed 2026-09-13, InvalidStateError.\n requires: ['opfs'],\n degradesWithout: ['readwrite-unsafe'],\n singleConnectionWithout: ['readwrite-unsafe'],\n extraFileSuffixes: ['-wa0', '-wa1'],\n yieldsDuringStatements: false,\n exclusiveConnection: false,\n exclusiveConnectionWithout: ['readwrite-unsafe'],\n defaultPragmas: {},\n },\n OPFSAdaptiveVFS: {\n builds: ['async', 'jspi'],\n maxPoolSize: null,\n poolLimitReason: null,\n multiConnection: true,\n persistent: true,\n memoryModel: 'page-cache',\n storage: 'opfs',\n layout: 'opfs-path',\n exclusiveFileHandle: false,\n requires: ['opfs'],\n degradesWithout: ['readwrite-unsafe'],\n singleConnectionWithout: ['readwrite-unsafe'],\n extraFileSuffixes: [],\n yieldsDuringStatements: false,\n exclusiveConnection: false,\n exclusiveConnectionWithout: [],\n defaultPragmas: {},\n },\n OPFSCoopSyncVFS: {\n builds: ['sync', 'async', 'jspi'],\n // Capped on every engine (spec 2026-09-13, §10, D9): a pool of one was faster at startup and on bursts of reads, equal elsewhere, on Chromium and Firefox (POOL-SIZE, 2026-09-14). The handle still rotates between clients and tabs, which is why the COOPSYNC-BUSY retry stays.\n maxPoolSize: 1,\n poolLimitReason:\n 'it rotates one exclusive access handle between connections, so another worker only waits its turn',\n multiConnection: true,\n persistent: true,\n memoryModel: 'page-cache',\n storage: 'opfs',\n layout: 'opfs-path',\n exclusiveFileHandle: true,\n requires: ['opfs'],\n degradesWithout: [],\n singleConnectionWithout: [],\n extraFileSuffixes: [],\n yieldsDuringStatements: false,\n exclusiveConnection: false,\n exclusiveConnectionWithout: [],\n defaultPragmas: {},\n },\n AccessHandlePoolVFS: {\n builds: ['sync', 'async', 'jspi'],\n maxPoolSize: 1,\n poolLimitReason: 'it cannot share access handles between connections',\n multiConnection: false,\n persistent: true,\n memoryModel: 'page-cache',\n storage: 'opfs',\n layout: 'opfs-pool',\n exclusiveFileHandle: true,\n requires: ['opfs'],\n degradesWithout: [],\n singleConnectionWithout: [],\n extraFileSuffixes: [],\n yieldsDuringStatements: false,\n // Two clients on one database break each other silently (AHP-2TAB,\n // 2026-09-01): the second resolves SELECT 1 but cannot read any table. An\n // origin-wide connection lock ensures the second client fails fast with\n // DATABASE_IN_USE instead of appearing healthy and being useless.\n exclusiveConnection: true,\n exclusiveConnectionWithout: [],\n // The one VFS that clears the bar for a default. Upstream: \"there is no\n // drawback to using PRAGMA locking_mode=exclusive\" here, because this VFS\n // does not allow multiple connections anyway — and exclusive locking is\n // what lets SQLite use its own WAL without shared memory, which no VFS in\n // this set provides. Measured 2026-09-02 on both engines: ~4.7x faster on\n // 200 single-statement transactions (Chromium 4.2 -> 0.9 ms/write, Firefox\n // 2.0 -> 0.5), with the access-handle pool holding the same five databases\n // either way — SQLite removes the -wal on a clean close, so it costs no\n // slot at rest. `mem:measurements`.\n defaultPragmas: { locking_mode: 'exclusive', journal_mode: 'wal' },\n },\n IDBBatchAtomicVFS: {\n builds: ['async', 'jspi'],\n maxPoolSize: null,\n poolLimitReason: null,\n multiConnection: true,\n persistent: true,\n memoryModel: 'page-cache',\n storage: 'indexeddb',\n layout: 'idb-store',\n exclusiveFileHandle: false,\n requires: [],\n degradesWithout: [],\n singleConnectionWithout: [],\n extraFileSuffixes: [],\n yieldsDuringStatements: true,\n exclusiveConnection: false,\n exclusiveConnectionWithout: [],\n defaultPragmas: {},\n },\n IDBMirrorVFS: {\n builds: ['async', 'jspi'],\n // Measured 2026-08-25, not inferred: `CREATE TABLE` → `INSERT` → `SELECT`\n // at poolSize 2, 300 rounds under a loaded suite, failed 5 times — with\n // `no such table` (a connection not seeing a committed statement) and\n // `database is locked`. Nothing at all in 60 rounds unloaded, which is why\n // four sightings over two days never reproduced on demand. See MIRROR-1 in\n // mem:follow-ups for the method.\n //\n // It mirrors the whole database in memory PER WORKER and propagates\n // commits over BroadcastChannel, asynchronously — so a pool holds copies\n // that diverge, the same shape that had OPFSPermutedVFS removed from this\n // library. The commit barrier cannot rescue it: its prelude refreshes page\n // 1 through a real read transaction, and there is nothing fresher to read\n // on a connection whose mirror has not received the broadcast yet.\n maxPoolSize: 1,\n poolLimitReason:\n 'its pages are mirrored per worker and commits propagate asynchronously, so a larger pool reads stale data or fails outright',\n multiConnection: false,\n persistent: true,\n // Upstream: \"keeps all files in memory, persisting database files to\n // IndexedDB\", and the whole database must fit in available memory.\n memoryModel: 'whole-database',\n storage: 'indexeddb',\n layout: 'idb-store',\n exclusiveFileHandle: false,\n requires: [],\n degradesWithout: [],\n singleConnectionWithout: [],\n extraFileSuffixes: [],\n yieldsDuringStatements: false,\n // `multiConnection: false` marks concurrent-writer unsafety (MIRROR-1),\n // not isolation. Two clients share data over BroadcastChannel (measured\n // 2026-09-01, 3/3 both engines), so no exclusive lock is needed or correct.\n exclusiveConnection: false,\n exclusiveConnectionWithout: [],\n defaultPragmas: {},\n },\n OPFSAnyContextVFS: {\n builds: ['async', 'jspi'],\n maxPoolSize: null,\n poolLimitReason: null,\n multiConnection: true,\n persistent: true,\n memoryModel: 'page-cache',\n storage: 'opfs',\n layout: 'opfs-path',\n exclusiveFileHandle: false,\n requires: ['opfs', 'writable-stream'],\n degradesWithout: [],\n singleConnectionWithout: [],\n extraFileSuffixes: [],\n yieldsDuringStatements: false,\n exclusiveConnection: false,\n exclusiveConnectionWithout: [],\n defaultPragmas: {},\n },\n MemoryVFS: {\n builds: ['sync', 'async', 'jspi'],\n maxPoolSize: 1,\n poolLimitReason:\n 'its pages live in the worker that opened them, so a larger pool would open independent databases that diverge silently',\n multiConnection: false,\n persistent: false,\n memoryModel: 'whole-database',\n storage: 'memory',\n layout: 'memory',\n exclusiveFileHandle: false,\n requires: [],\n degradesWithout: [],\n singleConnectionWithout: [],\n extraFileSuffixes: [],\n yieldsDuringStatements: false,\n exclusiveConnection: false,\n exclusiveConnectionWithout: [],\n defaultPragmas: {},\n },\n MemoryAsyncVFS: {\n builds: ['async', 'jspi'],\n maxPoolSize: 1,\n poolLimitReason:\n 'its pages live in the worker that opened them, so a larger pool would open independent databases that diverge silently',\n multiConnection: false,\n persistent: false,\n memoryModel: 'whole-database',\n storage: 'memory',\n layout: 'memory',\n exclusiveFileHandle: false,\n requires: [],\n degradesWithout: [],\n singleConnectionWithout: [],\n extraFileSuffixes: [],\n yieldsDuringStatements: false,\n exclusiveConnection: false,\n exclusiveConnectionWithout: [],\n defaultPragmas: {},\n },\n} as const satisfies Record<string, VFSCapability>;\n\nexport type SQLiteVFS = keyof typeof VFS_CAPABILITIES;\n\n/** The build used when the caller does not name one. */\nexport const defaultBuildFor = (vfs: SQLiteVFS): SQLiteBuild =>\n VFS_CAPABILITIES[vfs].builds[0];\n","/**\n * A thin wrapper over `navigator.locks`, used by `output()` to make its staging\n * tables collectable across tabs (D3).\n *\n * The staging lock is NOT mutual exclusion — nothing contends for its name. It\n * is a liveness marker: a lock held for as long as a staging table exists is\n * what lets another tab's sweep tell an in-flight table from an orphan. A tab\n * that is killed has its locks released by the browser, so its orphans become\n * collectable immediately, with no timestamp and no grace period.\n */\n\nimport type { SQLiteVFS } from './types';\nimport { VFS_CAPABILITIES } from './types';\n\n/** One entry in the lock registry as returned by `query()`. */\ntype QueriedLock = { name?: string; mode?: string; clientId?: string };\n\n/** The slice of the Web Locks API this module uses. */\ntype LockManager = {\n request: (\n name: string,\n optionsOrCallback: any,\n callback?: (lock: unknown) => Promise<unknown>,\n ) => Promise<unknown>;\n query: () => Promise<{ held?: QueriedLock[]; pending?: QueriedLock[] }>;\n};\n\nexport type Locks = {\n /** False when the Web Locks API is missing; every method then no-ops. */\n readonly available: boolean;\n /**\n * Acquires `name` and resolves with the function that releases it.\n *\n * `mode: 'shared'` is what the epoch marker uses: many realms may hold the\n * same name at once, so publishing never waits and two realms can never\n * collide on one epoch number. `signal` aborts the WAIT — never the hold —\n * and makes the request reject with `AbortError`.\n *\n * `ifAvailable: true` mirrors `tryWithLock`'s semantics: the real API hands\n * the callback `null` rather than waiting when the lock is held elsewhere.\n * Resolves with `undefined` in that case instead of waiting. Never waits —\n * that is the point for the connection guard.\n */\n hold(\n name: string,\n options?: { mode?: 'exclusive' | 'shared'; signal?: AbortSignal },\n ): Promise<() => void>;\n hold(\n name: string,\n options: {\n mode?: 'exclusive' | 'shared';\n signal?: AbortSignal;\n ifAvailable: true;\n },\n ): Promise<(() => void) | undefined>;\n /** Runs `fn` while holding `name` exclusively. */\n withLock: <T>(name: string, fn: () => Promise<T>) => Promise<T>;\n /**\n * Runs `fn` while holding `name`, or skips it entirely when the lock is held\n * elsewhere. Never waits — which is the point: the staging sweep is\n * opportunistic, and awaiting this lock inside an open transaction would\n * hold SQLite's write lock while waiting on a holder that may itself be\n * waiting for that write lock.\n *\n * Resolves `true` if `fn` ran, `false` if it was skipped.\n */\n tryWithLock: (name: string, fn: () => Promise<unknown>) => Promise<boolean>;\n /** Names currently held anywhere in this origin — every tab included. */\n heldNames: () => Promise<string[]>;\n /**\n * The origin's whole lock registry: held AND pending, each with the realm\n * holding or awaiting it.\n *\n * `heldNames()` answers a different, cheaper question and keeps its own\n * shape — `epochsFor` only ever needs names.\n */\n entries: () => Promise<LockEntries>;\n};\n\n/** One entry of the origin's lock registry, held or pending. */\nexport type LockEntry = {\n readonly name: string;\n readonly mode: 'exclusive' | 'shared';\n readonly clientId: string;\n};\n\nexport type LockEntries = {\n readonly held: readonly LockEntry[];\n readonly pending: readonly LockEntry[];\n};\n\nconst STAGING_PREFIX = '__bsq_staging_';\n\nexport const stagingTableName = (uuid: string) =>\n `${STAGING_PREFIX}${uuid.replace(/-/g, '_')}`;\n\nexport const isStagingTable = (table: string) =>\n table.startsWith(STAGING_PREFIX);\n\nexport const stagingLockName = (file: string, table: string) =>\n `bsq:staging:${file}:${table}`;\n\nexport const sweepLockName = (file: string) => `bsq:sweep:${file}`;\n\n/**\n * The marker a client holds to publish that it is alive on a database.\n *\n * Held in SHARED mode and contended by NOBODY: like `bsq:staging` this is a\n * liveness marker, not mutual exclusion. `bsq:conn` stays the only occupancy\n * detector `deleteDatabase` rests on — a second one would diverge from it.\n *\n * The label is `encodeURIComponent`d, which escapes `:` as `%3A`. That is what\n * makes the tail split unambiguously into exactly three segments whatever the\n * consumer names their client. The FILE may itself contain a colon, which is\n * why the reader rebuilds the exact prefix instead of scanning for separators —\n * the same trap `epochsFor` documents.\n */\nexport const clientMarkerName = (\n vfs: SQLiteVFS,\n file: string,\n id: string,\n clientName: string,\n): string =>\n `bsq:client:${namespaceFor(vfs)}:${file}:${id}:${vfs}:${encodeURIComponent(clientName)}`;\n\nexport type ClientMarker = {\n readonly id: string;\n readonly vfs: SQLiteVFS;\n readonly name: string;\n};\n\nconst UUID_RE =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\n/**\n * Reads one of our markers, or `undefined` for anything else.\n *\n * Every rejection below is deliberate: a marker this version does not\n * understand — a future one carrying more segments, say — must be SKIPPED, not\n * guessed at. Guessing is how a reader reports another database's state.\n */\nexport const parseClientMarker = (\n lockName: string,\n vfs: SQLiteVFS,\n file: string,\n): ClientMarker | undefined => {\n const prefix = `bsq:client:${namespaceFor(vfs)}:${file}:`;\n if (!lockName.startsWith(prefix)) return undefined;\n\n const parts = lockName.slice(prefix.length).split(':');\n if (parts.length !== 3) return undefined;\n\n const [id, markerVfs, encoded] = parts as [string, string, string];\n if (!UUID_RE.test(id)) return undefined;\n if (!Object.hasOwn(VFS_CAPABILITIES, markerVfs)) return undefined;\n\n let name: string;\n try {\n name = decodeURIComponent(encoded);\n } catch {\n // Malformed percent-escapes throw URIError. An unreadable label is an\n // unreadable marker: skip it rather than report a mangled name.\n return undefined;\n }\n\n return { id, vfs: markerVfs as SQLiteVFS, name };\n};\n\n/**\n * The storage namespace a VFS writes into — derived from `layout`, NEVER from\n * the VFS name.\n *\n * `OPFSAdaptiveVFS`, `OPFSAnyContextVFS`, `OPFSCoopSyncVFS` and\n * `OPFSWriteAheadVFS` all walk from `navigator.storage.getDirectory()` and open\n * `getFileHandle(filename)`, so one database name is ONE file for all four. A\n * per-VFS key would let two of them write the same bytes without ever\n * excluding each other: a missed conflict corrupts, an invented one only slows.\n *\n * `idb-store` goes finer than its layout on purpose — its two VFS each own an\n * IndexedDB database named after their class, so grouping them would invent a\n * conflict for free. `opfs-pool` and `memory` are alone in their layout, so the\n * VFS name is already the namespace.\n *\n * `worker/worker.ts:627` gates on `layout` for the same reason, in those words.\n */\nexport const namespaceFor = (vfs: SQLiteVFS): string =>\n VFS_CAPABILITIES[vfs].layout === 'opfs-path' ? 'opfs' : vfs;\n\n/**\n * Whether two clients on this VFS can reach the same bytes at all.\n *\n * False for the memory VFS: its pages live in the worker that opened them and\n * `maxPoolSize` is 1, so two clients on one name are two independent\n * databases. Locking them against each other would be wrong as well as slow —\n * an origin round trip charged to the VFS chosen for speed. `delete.ts:79`\n * skips the same layout, for the same reason.\n */\nexport const sharesStorage = (vfs: SQLiteVFS): boolean =>\n VFS_CAPABILITIES[vfs].layout !== 'memory';\n\n/** Serializes database opening across the pool — replaces the SAB init mutex. */\nexport const initLockName = (vfs: SQLiteVFS, file: string) =>\n `bsq:init:${namespaceFor(vfs)}:${file}`;\n\n/**\n * Serializes WRITERS across every client and tab in the origin. Exclusive, so\n * at most one is held per database at any instant however many clients exist.\n */\nexport const writeLockName = (vfs: SQLiteVFS, file: string) =>\n `bsq:write:${namespaceFor(vfs)}:${file}`;\n\n/**\n * Origin-wide exclusive connection lock for VFS that cannot safely share a\n * database across clients (`exclusiveConnection: true` in `VFS_CAPABILITIES`).\n *\n * Held for the client's lifetime. A second `createSQLiteClient` that tries to\n * open the same database will fail its first query with `BUSY` instead of\n * silently reading a broken, frozen view — the failure mode measured as\n * AHP-2TAB (2026-09-01) where `SELECT 1` passes and `SELECT count(*) FROM\n * sqlite_master` returns 0 on an unfixable connection.\n *\n * The key uses `namespaceFor(vfs)` for the same reason `writeLockName` does:\n * the gate is by layout declaration, not by VFS name.\n */\nexport const connectionLockName = (vfs: SQLiteVFS, file: string) =>\n `bsq:conn:${namespaceFor(vfs)}:${file}`;\n\n/**\n * Which staging tables no live `output()` is using — pure, so it is driven by\n * Node tests rather than by two browser tabs.\n */\nexport const staleStagingTables = (\n tables: string[],\n heldNames: string[],\n file: string,\n): string[] => {\n const held = new Set(heldNames);\n return tables.filter((table) => !held.has(stagingLockName(file, table)));\n};\n\n/** The no-op Locks value for environments where the Web Locks API is absent. */\nexport const noOpLocks: Locks = {\n available: false,\n hold: async () => () => {},\n withLock: async (_name, fn) => fn(),\n tryWithLock: async (_name, fn) => {\n await fn();\n return true;\n },\n heldNames: async () => [],\n entries: async () => ({ held: [], pending: [] }),\n};\n\nexport const createLocks = (\n manager: LockManager | undefined = globalThis.navigator?.locks as\n | LockManager\n | undefined,\n): Locks => {\n if (!manager) return noOpLocks;\n\n return {\n available: true,\n hold: ((\n name: string,\n options?: {\n mode?: 'exclusive' | 'shared';\n signal?: AbortSignal;\n ifAvailable?: boolean;\n },\n ) =>\n new Promise<(() => void) | undefined>((resolveReleaser, rejectOuter) => {\n const ifAvail: boolean = options?.ifAvailable === true;\n let release!: () => void;\n const held = new Promise<void>((resolveHeld) => {\n release = resolveHeld;\n });\n // Built conditionally rather than with `signal: options?.signal`: an\n // explicit undefined is not reliably \"absent\" across engines, and Web\n // Locks refuses `signal` alongside `ifAvailable`.\n const requestOptions: {\n mode: string;\n signal?: AbortSignal;\n ifAvailable?: true;\n } = { mode: options?.mode ?? 'exclusive' };\n if (options?.signal) requestOptions.signal = options.signal;\n // `ifAvailable` must be absent (not merely false) when not requested —\n // Web Locks refuses `signal` alongside `ifAvailable`, so we only set it\n // when the caller explicitly asked for the non-blocking behaviour.\n if (ifAvail) requestOptions.ifAvailable = true;\n manager\n .request(name, requestOptions, (lock) => {\n // `ifAvailable` hands the callback null instead of waiting.\n if (ifAvail && !lock) {\n resolveReleaser(undefined);\n return Promise.resolve();\n }\n resolveReleaser(release);\n return held;\n })\n .catch(rejectOuter);\n })) as Locks['hold'],\n withLock: <T>(name: string, fn: () => Promise<T>) =>\n manager.request(name, { mode: 'exclusive' }, () => fn()) as Promise<T>,\n tryWithLock: async (name, fn) => {\n let ran = false;\n await manager.request(\n name,\n { mode: 'exclusive', ifAvailable: true },\n async (lock) => {\n // `ifAvailable` hands the callback null instead of waiting.\n if (!lock) return;\n ran = true;\n await fn();\n },\n );\n return ran;\n },\n heldNames: async () => {\n const snapshot = await manager.query();\n return (snapshot.held ?? [])\n .map((lock) => lock.name)\n .filter((name): name is string => typeof name === 'string');\n },\n entries: async () => {\n const snapshot = await manager.query();\n // An entry without a name or a clientId cannot be attributed, and a\n // half-read entry is worse than a missing one: it would join the roster\n // as an anonymous client nobody can close.\n const read = (list: QueriedLock[] | undefined): LockEntry[] =>\n (list ?? [])\n .filter(\n (lock): lock is QueriedLock & { name: string; clientId: string } =>\n typeof lock.name === 'string' &&\n typeof lock.clientId === 'string',\n )\n .map((lock) => ({\n name: lock.name,\n mode:\n lock.mode === 'shared'\n ? ('shared' as const)\n : ('exclusive' as const),\n clientId: lock.clientId,\n }));\n return { held: read(snapshot.held), pending: read(snapshot.pending) };\n },\n };\n};\n","/**\n * Every failure this library raises on its own behalf. A caller discriminates\n * on `code`, or on `name` — they carry the same value, so `err.name` reads the\n * way `'AbortError'` does on the DOMException an aborted signal throws.\n * `DATABASE_IN_USE` is this library's own: a database that a live client holds,\n * as opposed to `BUSY`, which covers a transient conflict worth retrying.\n * `DATABASE_NOT_FOUND` is raised only by `deleteDatabase`: there is nothing at\n * that name to delete. `createSQLiteClient` creates what is absent, so it has\n * no such case.\n * `UNSUPPORTED` means the platform cannot answer the question — raised by\n * `inspectDatabase` where Web Locks is missing, because reporting zero clients\n * there would be indistinguishable from a database nobody holds.\n * `OPERATION_TIMEOUT` is the `timeout` a caller set on a call being spent. It is\n * deliberately not `TIMEOUT`, which means a deadline this library imposed on\n * itself — a worker that never became ready, a deletion that did not complete.\n * `STATEMENT_FAILED` is a statement SQLite refused or failed for any reason\n * but a lock conflict — a constraint, a syntax error, a full disk. `message` is\n * SQLite's own; `sqliteCode` carries its result code, and `sqliteExtendedCode`\n * its subtype when SQLite reports one.\n */\nimport type {\n SQLiteExtendedResultCode,\n SQLiteResultCode,\n} from './sqlite-codes';\n\nexport type SQLiteErrorCode =\n | 'NOT_A_READ_QUERY'\n | 'CLIENT_CLOSED'\n | 'WORKER_CRASHED'\n | 'TIMEOUT'\n | 'PROTOCOL_ERROR'\n | 'INVALID_IDENTIFIER'\n | 'INVALID_OPTION'\n | 'INVALID_PRAGMA'\n | 'BULK_WRITE_FAILED'\n | 'BUSY'\n | 'STATEMENT_FAILED'\n | 'DATABASE_IN_USE'\n | 'DATABASE_NOT_FOUND'\n | 'READ_ONLY_TRANSACTION'\n | 'UNSUPPORTED'\n | 'WORKER_BUSY'\n | 'OPERATION_TIMEOUT'\n | 'TRANSACTION_CLOSED';\n\nexport class SQLiteError extends Error {\n readonly code: SQLiteErrorCode;\n /**\n * SQLite's own numeric result code, present only when the failure came from\n * SQLite rather than from this library. Always the PRIMARY code. `BUSY`\n * covers both SQLITE_BUSY (5) and SQLITE_LOCKED (6); this is how a caller\n * tells them apart. Typed `SQLiteResultCode` (D10): since `sqliteCodeOf`,\n * it is always a primary code of the bundled SQLite, so comparing it with\n * an extended code does not compile.\n */\n readonly sqliteCode?: SQLiteResultCode;\n /**\n * SQLite's extended result code, present only when a statement SQLite ran\n * failed WITH A SUBTYPE — `STATEMENT_FAILED` or `BUSY` from a query, never\n * an open or a delete: 2067 (`SQLITE_EXTENDED_CODES.CONSTRAINT_UNIQUE`)\n * under `sqliteCode` 19. Absent when SQLite has no subtype for the failure\n * (a full disk, a syntax error), since `sqliteCode` already says it. For a\n * subtype SQLite reports, `(sqliteExtendedCode & 0xff) === sqliteCode` is\n * SQLite's own guarantee, not something this library enforces: the client\n * deliberately lets a differing value through (a 0 from a wrong read).\n * Typed open (`SQLiteExtendedResultCode | (number & {})`, D10): D9 lets a\n * wrong read through, which a strict type would misdescribe.\n */\n readonly sqliteExtendedCode?: SQLiteExtendedResultCode | (number & {});\n /**\n * The `timeout` that was exceeded, in milliseconds. Present only on\n * `OPERATION_TIMEOUT`, so a log need not parse the message for it.\n */\n readonly timeout?: number;\n\n constructor(\n code: SQLiteErrorCode,\n message: string,\n options?: {\n cause?: unknown;\n sqliteCode?: SQLiteResultCode;\n sqliteExtendedCode?: SQLiteExtendedResultCode | (number & {});\n timeout?: number;\n },\n ) {\n super(message, options);\n this.code = code;\n this.name = code;\n if (options?.sqliteCode !== undefined) this.sqliteCode = options.sqliteCode;\n if (options?.sqliteExtendedCode !== undefined)\n this.sqliteExtendedCode = options.sqliteExtendedCode;\n if (options?.timeout !== undefined) this.timeout = options.timeout;\n }\n}\n\n/**\n * A batch failed. Raised by `bulkWrite().close()` and by `output().close()`.\n *\n * The counters exist because the old behaviour was silent: batches were chained\n * on one shared promise, so after a rejection every later `.then` was skipped —\n * while their rows had already been spliced out of the buffer (B5). A caller now\n * learns how much of its data reached the database.\n */\nexport class SQLiteBulkWriteError extends SQLiteError {\n readonly rowsWritten: number;\n readonly rowsNotWritten: number;\n\n constructor(\n message: string,\n counts: { rowsWritten: number; rowsNotWritten: number },\n options?: { cause?: unknown },\n ) {\n super('BULK_WRITE_FAILED', message, options);\n this.rowsWritten = counts.rowsWritten;\n this.rowsNotWritten = counts.rowsNotWritten;\n }\n}\n","import { SQLiteError } from './errors';\nimport {\n type SQLiteBuild,\n type SQLiteVFS,\n VFS_CAPABILITIES,\n type WasmLocation,\n} from './types';\n\nexport const sqlParams = () => {\n // `unknown`, not `any`: these are SQL bind values and they are never\n // inspected here — only counted, de-duplicated by identity, and handed on.\n // The public query surface has always said `unknown[]`; this was the one\n // place that quietly said less.\n const sqlParamsMap = new Map<unknown, number>();\n const sqlParams: unknown[] = [];\n\n const addParam = (v: unknown) => {\n let paramIndex = sqlParamsMap.get(v);\n if (!paramIndex) {\n paramIndex = sqlParams.length + 1;\n sqlParamsMap.set(v, paramIndex);\n sqlParams.push(v);\n }\n return `?${paramIndex.toString().padStart(3, '0')}`;\n };\n const addParamArray = (values: unknown[]) => {\n return values.map((v) => addParam(v)).join(',');\n };\n return {\n addParam,\n addParamArray,\n params: sqlParams,\n };\n};\n\n/**\n * Every statement SQLite treats as a write, or that must be serialized through\n * the single writer worker. Matched anywhere in the string, not just at the\n * start: the worker executes `;`-separated statements, so a write hiding after\n * a semicolon must still route to the writer.\n */\nconst WRITE_KEYWORDS =\n /\\b(INSERT|REPLACE|UPDATE|DELETE|CREATE|DROP|ALTER|VACUUM|ANALYZE|REINDEX|SAVEPOINT|RELEASE|BEGIN|COMMIT|ROLLBACK|ATTACH|DETACH|PRAGMA)\\b/i;\n\n/**\n * Routing predicate: is this statement provably a read?\n *\n * Two conditions, both required. The statement must OPEN with a read keyword,\n * and it must contain no write keyword anywhere. The first condition alone is\n * not enough — the worker executes `;`-separated statements, so `SELECT 1;\n * DROP TABLE t` opens as a read and is not one. The second alone is not enough\n * either — it would admit any unrecognised statement as a read.\n *\n * The previous blocklist missed VACUUM, ALTER, ANALYZE, REINDEX, SAVEPOINT and\n * a manual BEGIN, so those ran on the read pool: a VACUUM could execute on an\n * arbitrary worker while the writer held an open transaction, bypassing\n * exclusivity one layer above the pool.\n *\n * Misclassification now fails toward the writer — correct, merely slower. A\n * read whose text merely mentions a write keyword (`SELECT 'INSERT'`, or\n * `EXPLAIN INSERT ...`, which never executes) is serialized needlessly. That\n * is the accepted price of never routing a write to the read pool.\n */\n/**\n * A statement that is nothing but a single PRAGMA lookup: no assignment, no\n * argument, nothing after it. Anchoring at `$` is what makes this safe for\n * free — `PRAGMA journal_mode; DROP TABLE t` does not match, and neither does\n * `PRAGMA journal_mode=WAL`, whose `=` breaks the match.\n */\nconst READ_PRAGMA = /^\\s*PRAGMA\\s+(\\w+\\.)?\\w+\\s*;?\\s*$/i;\n\nexport const isReadQuery = (sql: string) =>\n READ_PRAGMA.test(sql) ||\n (/^\\s*(SELECT|EXPLAIN|VALUES|WITH)\\b/i.test(sql) &&\n !WRITE_KEYWORDS.test(sql));\n\nexport const isWriteQuery = (sql: string) => !isReadQuery(sql);\n\n/**\n * Whether `sql` manages the transaction or its savepoints rather than data\n * (spec 2026-09-11, D8). Never wrapped in the library's savepoint: there is\n * nothing to undo, and a `RELEASE u` run inside it would pop it along with\n * `u`. The leading keyword decides: these statements are never compound.\n */\nexport const isTransactionControl = (sql: string) =>\n /^\\s*(SAVEPOINT|RELEASE|ROLLBACK|BEGIN|COMMIT|END)\\b/i.test(sql);\n\n/**\n * Combines two abort signals into one that fires with the reason of whichever\n * source aborted first, plus the `release()` that unsubscribes it.\n *\n * NOT `AbortSignal.any()`. That is Chrome 116 / Firefox 124 / Safari 17.4, far\n * above this library's floor (Chrome 92 / Firefox 95 / Safari 15.4), and\n * adopting it would raise every row of the generated VFS.md matrix for every\n * consumer.\n *\n * The common case allocates nothing: with one side absent, or one side already\n * aborted, the surviving signal is returned as itself — no listener, no\n * teardown owed, and the caller sees the original `reason` rather than a copy.\n */\nexport const mergeSignals = (\n a: AbortSignal | undefined,\n b: AbortSignal | undefined,\n): { signal: AbortSignal | undefined; release: () => void } => {\n const noop = () => {};\n if (!a || a === b) return { signal: b, release: noop };\n if (!b) return { signal: a, release: noop };\n if (a.aborted) return { signal: a, release: noop };\n if (b.aborted) return { signal: b, release: noop };\n\n const merged = new AbortController();\n const relay = (source: AbortSignal) => () => merged.abort(source.reason);\n const onA = relay(a);\n const onB = relay(b);\n a.addEventListener('abort', onA, { once: true });\n b.addEventListener('abort', onB, { once: true });\n return {\n signal: merged.signal,\n release: () => {\n a.removeEventListener('abort', onA);\n b.removeEventListener('abort', onB);\n },\n };\n};\n\n/**\n * The `timeout` option: a wall-clock budget in milliseconds, counted from the\n * call. Returns the signal the call should actually use — the caller's own,\n * merged with one this library owns and aborts when the budget is spent.\n *\n * The abort reason IS the error the caller receives. Every abort path in this\n * library rejects with `signal.reason`, and `mergeSignals` relays a reason\n * verbatim, so nothing downstream has to ask which signal fired. That is why\n * this is an AbortController and a setTimeout rather than\n * `AbortSignal.timeout()`, which offers no way to set the reason.\n *\n * `release()` is owed exactly once, however the call ends.\n */\nexport const withDeadline = (\n options:\n | { signal?: AbortSignal | undefined; timeout?: number | undefined }\n | undefined,\n method: string,\n): { signal: AbortSignal | undefined; release: () => void } => {\n const budget = options?.timeout;\n if (budget === undefined)\n return { signal: options?.signal, release: () => {} };\n\n const controller = new AbortController();\n const timer = setTimeout(() => {\n controller.abort(\n new SQLiteError(\n 'OPERATION_TIMEOUT',\n `${method}() exceeded its timeout of ${budget} ms.`,\n { timeout: budget },\n ),\n );\n }, budget);\n const { signal, release } = mergeSignals(options?.signal, controller.signal);\n return {\n signal,\n release: () => {\n clearTimeout(timer);\n release();\n },\n };\n};\n\n/**\n * Routing guard for the read-shaped methods (`read`, `chunk`, `stream`, `first`).\n * Throws before a lease is taken, so a rejected statement costs no pool capacity.\n *\n * A bare read pragma (`PRAGMA journal_mode`) is accepted; a pragma that assigns\n * (`PRAGMA journal_mode=WAL`), takes an argument, or is followed by anything\n * else must go through `write()`.\n */\nexport const assertReadable = (sql: string, method: string): void => {\n if (isReadQuery(sql)) return;\n const keyword = sql.trim().split(/\\s+/)[0]?.toUpperCase() ?? '';\n throw new SQLiteError(\n 'NOT_A_READ_QUERY',\n `${method}() only accepts statements that are provably reads; \"${keyword}\" must go through write(). ` +\n `Note that a PRAGMA that assigns a value or takes an argument is a write.`,\n );\n};\n\n/**\n * Quotes an SQL identifier so it can never be read as anything but a name.\n *\n * The library interpolates table, column and index names into generated SQL —\n * `bulkWrite`, `output` and their indexes. wa-sqlite's `statements()` executes\n * `;`-separated statements, so an unquoted name is a stacked-query injection\n * (B4). Quoting is what makes `t\"; DROP TABLE users; --` one identifier.\n *\n * Note that quoting preserves case in `sqlite_master`; SQLite still resolves\n * names case-insensitively.\n */\nexport const quoteIdent = (name: string): string => {\n if (!name)\n throw new SQLiteError('INVALID_IDENTIFIER', 'Identifier cannot be empty');\n if (name.includes('\\0'))\n throw new SQLiteError(\n 'INVALID_IDENTIFIER',\n `Identifier contains a NUL character: ${JSON.stringify(name)}`,\n );\n return `\"${name.replace(/\"/g, '\"\"')}\"`;\n};\n\n/** `INTEGER`, `TEXT`, `VARCHAR(255)`, `DECIMAL(10, 2)` — nothing else. */\nconst COLUMN_TYPE = /^[A-Za-z][A-Za-z0-9 ]*(\\([0-9, ]+\\))?$/;\n\n/**\n * A column type is not an identifier and cannot be quoted — it is an SQL\n * fragment the caller writes. It is validated by shape instead: this is the\n * narrowed, not closed, channel documented in the spec (§1.2).\n */\nexport const assertColumnType = (type: string, column: string): string => {\n const trimmed = type.trim();\n if (!COLUMN_TYPE.test(trimmed))\n throw new SQLiteError(\n 'INVALID_IDENTIFIER',\n `Column \"${column}\" declares an unsupported type ${JSON.stringify(type)}. ` +\n `A type must be a word, optionally followed by numeric arguments, e.g. \"INTEGER\" or \"VARCHAR(255)\".`,\n );\n return trimmed;\n};\n\n/**\n * A GENERATED ALWAYS AS expression is caller-authored SQL. It must at least be\n * parenthesised and free of statement separators, so it cannot escape its slot.\n */\nexport const assertGeneratedExpression = (\n expr: string,\n column: string,\n): string => {\n const trimmed = expr.trim();\n if (\n !trimmed.startsWith('(') ||\n !trimmed.endsWith(')') ||\n trimmed.includes(';')\n )\n throw new SQLiteError(\n 'INVALID_IDENTIFIER',\n `Column \"${column}\" declares an invalid generated expression ${JSON.stringify(expr)}. ` +\n `It must be parenthesised and contain no \";\", e.g. \"(base * 2)\".`,\n );\n return trimmed;\n};\n\nconst PRAGMA_NAME = /^[A-Za-z_]\\w*$/;\nconst PRAGMA_INTEGER = /^-?\\d+$/;\nconst PRAGMA_LITERAL = /^'([^']|'')*'$/;\n\n/**\n * Renders the client's `pragmas` option into executable statements, rejecting\n * anything that is not provably a name and a scalar value (B4).\n *\n * Validation is syntactic rather than a closed list of the ~60 SQLite pragmas:\n * a fixed list makes every legitimate pragma outside it unreachable and drifts\n * with SQLite versions, for no additional protection — no \";\", no parenthesis\n * and no comment marker survives these three shapes either.\n *\n * Called twice: by the client at construction, so a bad configuration fails at\n * `createSQLiteClient()` rather than inside an unrelated query, and by the\n * worker at open, which is the only place the statements actually run.\n */\n/**\n * The PRAGMAs a client actually applies: the VFS's declared defaults with the\n * consumer's own layered over them.\n *\n * **Merged, never replaced.** A consumer who passes one pragma is answering a\n * question of their own — `foreign_keys` is the usual one — not declining the\n * VFS's defaults, and replacing would silently drop every default the moment\n * they set anything at all. A key they DO set always wins, which is how a\n * default is refused: pass `journal_mode` yourself and yours is what runs.\n *\n * Order matters and is the whole function: spread the defaults first.\n */\nexport const resolvePragmas = (\n vfs: SQLiteVFS,\n pragmas: Record<string, string> | undefined,\n): Record<string, string> => ({\n ...VFS_CAPABILITIES[vfs].defaultPragmas,\n ...pragmas,\n});\n\nexport const renderPragmas = (pragmas: Record<string, string>): string[] =>\n Object.entries(pragmas).map(([key, value]) => {\n if (!PRAGMA_NAME.test(key))\n throw new SQLiteError(\n 'INVALID_PRAGMA',\n `Invalid pragma name ${JSON.stringify(key)}: a pragma name must match ${PRAGMA_NAME}.`,\n );\n const raw = String(value).trim();\n if (PRAGMA_INTEGER.test(raw) || PRAGMA_NAME.test(raw))\n return `PRAGMA ${key}=${raw}`;\n // PRAGMA_LITERAL already guarantees raw is a well-formed SQLite string\n // literal (outer quotes present, internal single quotes doubled per '').\n // Using raw directly is correct and simpler than re-escaping the content.\n if (PRAGMA_LITERAL.test(raw)) return `PRAGMA ${key}=${raw}`;\n throw new SQLiteError(\n 'INVALID_PRAGMA',\n `Invalid value ${JSON.stringify(value)} for pragma \"${key}\": expected an integer, a bare word such as WAL, or a quoted literal.`,\n );\n });\n\n/**\n * The single definition of database identity — one string used everywhere:\n * the worker open call, the VFS, the epoch registry and every lock name.\n *\n * The form is **relative** (no leading `/`). `URL.pathname` is absolute by\n * construction, so stripping the slash is necessary: SQLite core checks\n * `nPathname + 8 > mxPathname` (64, `node_modules/wa-sqlite/src/VFS.js:10`)\n * before `xOpen`, and a leading `/` costs a character the budget cannot spare —\n * measured at task 1: it broke all 96 browser tests on 56-char names. The\n * strip gives that character back, so a 56-char name that the caller wrote\n * still fits after normalization. The VFS re-parse (`new URL(zName, 'file://')`\n * for four of five; `AccessHandlePoolVFS` via `'file://localhost/'`) produces\n * identical `pathname` whether the open call receives `'data'` or `'/data'`,\n * so the opened OPFS file is the same regardless.\n *\n * Idempotent: the VFS re-parse of an already-normalized name is a no-op.\n */\nexport const normalizeDatabaseFile = (file: string): string =>\n new URL(file, 'file://').pathname.replace(/^\\//, '');\n\n/**\n * Turns the `wasmUrl` client option into the absolute location posted in the\n * `open` message, or `undefined` when the option was not given.\n *\n * `undefined` is the load-bearing case: the worker sets Emscripten's\n * `locateFile` only when it receives a location, and `findWasmBinary` takes its\n * `new URL('wa-sqlite.wasm', import.meta.url)` branch whenever `locateFile` is\n * absent. So an omitted option leaves resolution byte-for-byte as it was\n * before this option existed — which is the entire contract of the escape\n * hatch.\n *\n * Resolution happens **here**, on the client, against the page: what the\n * consumer writes means what it means from the page they wrote it on, not from\n * the worker's own directory one level down. The callback is therefore called\n * once, at client construction, before any worker exists — its result is\n * reused by every worker in the pool and by every restart.\n *\n * A string is a **directory** and gets its missing trailing slash back before\n * resolution: URL resolution treats a last segment without a slash as a\n * document and replaces it, so `'/static/wasm'` would otherwise silently mean\n * `/static/`. A callback names a **file**, so nothing is appended to it.\n *\n * @throws `SQLiteError('INVALID_OPTION')` when the value cannot be parsed as a\n * URL — synchronously, at construction, rather than as an opaque open failure\n * from a worker that could not fetch its module.\n */\nexport const resolveWasmLocation = (\n wasmUrl: string | ((build: SQLiteBuild) => string) | undefined,\n build: SQLiteBuild,\n baseHref: string,\n): WasmLocation | undefined => {\n if (wasmUrl === undefined) return undefined;\n\n const isCallback = typeof wasmUrl === 'function';\n const raw = isCallback ? wasmUrl(build) : wasmUrl;\n const value = isCallback || raw.endsWith('/') ? raw : `${raw}/`;\n\n let href: string;\n try {\n href = new URL(value, baseHref).href;\n } catch {\n throw new SQLiteError(\n 'INVALID_OPTION',\n `wasmUrl could not be parsed as a URL: ${JSON.stringify(raw)}. Pass a directory (relative, absolute, or a full URL), or a callback returning the full URL of one .wasm file.`,\n );\n }\n\n return isCallback ? { file: href } : { base: href };\n};\n","/**\n * Makes a value safe to hand to `postMessage`.\n *\n * The whole point is a failure the caller cannot recover from: a cause that\n * cannot be structured-cloned makes `postMessage` itself throw, and every call\n * site here is already inside a `catch` building an error reply. The throw\n * would replace that reply with nothing, and the client would wait for ever on\n * a request that was answered by no message at all.\n *\n * Pure, and in its own module for the reason `statement-cache.ts` is: the\n * remainder of `worker.ts` only runs in a browser, and this decides something\n * worth testing in Node against a value that is deliberately unclonable.\n */\n\n/**\n * Returns `value` when it survives the structured-clone algorithm, and its\n * string form when it does not.\n *\n * `MessageChannel` rather than `structuredClone()`: the two run the same\n * algorithm and throw the same `DataCloneError`, but `structuredClone` lands at\n * Chrome 98 where `MessageChannel` is Chrome 2 / Firefox 41 / Safari 5. Using\n * it would have raised this library's floor by six Chrome versions to protect\n * an error *cause* — see `scripts/render-vfs-matrix.ts`, which computes that\n * floor from the APIs named here.\n */\nexport const cloneable = (value: unknown): unknown => {\n const channel = new MessageChannel();\n try {\n // Never received, and it does not need to be: the clone — and its\n // DataCloneError — happens synchronously inside postMessage.\n channel.port1.postMessage(value);\n return value;\n } catch {\n return String(value);\n } finally {\n channel.port1.close();\n channel.port2.close();\n }\n};\n","/**\n * Platform features a worker can probe for itself, synchronously, before it\n * loads anything. Pure, and tested in Node for the reason `cloneable.ts` is.\n *\n * `readwrite-unsafe` cannot be probed from the page: `FileSystemSyncAccessHandle`\n * is exposed to dedicated workers only, which is why `capabilities.ts` lists\n * it as unprobeable. A worker can, and without opening a file: the engines that\n * implement the mode also ship the handle's `mode` ATTRIBUTE. That is not the\n * trap `capabilities.ts` warns about — WebIDL ignores an unknown DICTIONARY\n * member, so passing the option proves nothing, but an attribute an engine does\n * not implement is simply absent from the prototype. Measured 2026-09-13 in a\n * dedicated worker: Chromium true, Firefox false, Safari false\n * (spec 2026-09-13, §3.1).\n */\nimport type { PlatformFeature } from '../types';\n\n/** The globals a probe reads; `globalThis` in a worker, a stub in tests. */\nexport type ProbeScope = { FileSystemSyncAccessHandle?: unknown };\n\nconst hasModeAttribute = (scope: ProbeScope): boolean => {\n const Handle = scope.FileSystemSyncAccessHandle;\n return typeof Handle === 'function' && 'mode' in Handle.prototype;\n};\n\nexport const WORKER_PROBES: Partial<\n Record<PlatformFeature, (scope: ProbeScope) => boolean>\n> = {\n 'readwrite-unsafe': hasModeAttribute,\n};\n\n/**\n * The first feature of `features` this worker lacks, or null. A feature with\n * no probe here is never reported missing: declining on something unprobeable\n * would shrink every pool on every engine.\n */\nexport const firstMissing = (\n features: readonly PlatformFeature[],\n scope: ProbeScope = globalThis as ProbeScope,\n): PlatformFeature | null => {\n for (const feature of features) {\n const probe = WORKER_PROBES[feature];\n if (probe && !probe(scope)) return feature;\n }\n return null;\n};\n","import { SQLiteError } from 'wa-sqlite/src/sqlite-api.js';\nimport type { SQLiteResultCode } from '../sqlite-codes';\n\n/**\n * SQLite's result code on a thrown value, or undefined when SQLite did not\n * raise it (spec 2026-09-14, final review). wa-sqlite raises its own\n * `SQLiteError(message, code)` for every result code. Anything else carrying a\n * numeric `code` — a DOMException's legacy code, 18 for SecurityError — is\n * not SQLite's and must not be published as `sqliteCode`.\n */\nexport const sqliteCodeOf = (e: unknown): SQLiteResultCode | undefined =>\n e instanceof SQLiteError && typeof e.code === 'number'\n ? // wa-sqlite raises its SQLiteError with the return code of a SQLite C\n // call (or SQLITE_MISUSE for a JS-side misuse), and extended result\n // codes are never enabled on the connection — so this is always one\n // of the bundled SQLite's primary codes (D10).\n (e.code as SQLiteResultCode)\n : undefined;\n","/**\n * A per-worker LRU of prepared statements, keyed by the exact SQL string.\n *\n * Pure bookkeeping: this module prepares nothing and finalises nothing.\n * `worker.ts` owns every effect, which is what lets the policy be tested in\n * Node against plain integers in a subsystem whose remainder only runs in a\n * browser — the role `mem:architecture` describes for `scheduler.ts` and\n * `supervisor.ts`.\n */\n\n/** A `sqlite3_stmt` pointer. Opaque here: the cache only files it. */\nexport type StatementHandle = number;\n\n/**\n * A cached statement and what it weighs. `handle: null` marks SQL that must\n * never be cached; a marking weighs nothing, so it can never evict a real\n * statement by its size alone.\n */\ntype Entry = { handle: StatementHandle | null; weight: number };\n\n/**\n * The two bounds, both active. `maxEntries` answers the churn that generated\n * SQL produces; `maxBytes` answers the footprint of a `bulkWrite` template,\n * which is three orders of magnitude heavier than an ordinary statement\n * (`mem:measurements`).\n */\nexport type StatementCacheBounds = {\n maxEntries: number;\n maxBytes: number;\n};\n\nexport type StatementCache = {\n get: (sql: string) => StatementHandle | 'uncacheable' | undefined;\n /**\n * Returns the handles evicted by this insertion; the caller finalises them.\n * `weight` is `SQLITE_STMTSTATUS_MEMUSED` and is required on purpose: an\n * optional one would silently account a statement as free.\n */\n set: (\n sql: string,\n handle: StatementHandle,\n weight: number,\n ) => StatementHandle[];\n /** Returns the handles evicted by this marking; the caller finalises them. */\n markUncacheable: (sql: string) => StatementHandle[];\n delete: (sql: string) => StatementHandle | undefined;\n /** Empties the cache and returns every live handle, for close. */\n drain: () => StatementHandle[];\n};\n\nexport const createStatementCache = ({\n maxEntries,\n maxBytes,\n}: StatementCacheBounds): StatementCache => {\n const entries = new Map<string, Entry>();\n /** The sum of every retained entry's weight. Never derived, always kept. */\n let total = 0;\n\n /** Removes an entry from the map AND from the total. */\n const drop = (sql: string): Entry | undefined => {\n const entry = entries.get(sql);\n if (entry === undefined) return undefined;\n entries.delete(sql);\n total -= entry.weight;\n return entry;\n };\n\n /** Drops the least recently used entry, collecting its handle if live. */\n const evictOldest = (evicted: StatementHandle[]) => {\n const oldest = entries.keys().next();\n if (oldest.done) return;\n const entry = drop(oldest.value);\n if (entry?.handle != null) evicted.push(entry.handle);\n };\n\n /**\n * The design's §2 rule.\n *\n * Dropping the key first is what makes a re-set REPLACE its weight rather\n * than add to it — `worker.ts`'s `settle` calls `set` on every successful\n * exit, a cache hit included. The dropped entry is deliberately NOT reported\n * as evicted: it is the same statement the caller is still holding, and\n * finalising it would destroy the statement being cached.\n *\n * The byte loop tests the total BEFORE the insertion and never looks at the\n * incoming weight, so an entry heavier than the whole budget is accepted and\n * the overshoot is exactly one entry — which is what keeps a 2.4 MB template\n * cacheable at any budget, and the peak at `maxBytes + largest statement`.\n */\n const insert = (sql: string, entry: Entry): StatementHandle[] => {\n drop(sql);\n\n const evicted: StatementHandle[] = [];\n while (total >= maxBytes && entries.size > 0) evictOldest(evicted);\n\n entries.set(sql, entry);\n total += entry.weight;\n\n while (entries.size > maxEntries) evictOldest(evicted);\n return evicted;\n };\n\n return {\n get: (sql) => {\n const entry = entries.get(sql);\n if (entry === undefined) return undefined;\n // A Map iterates in insertion order, so re-inserting is how an entry\n // becomes the most recently used and keys().next() is the least.\n entries.delete(sql);\n entries.set(sql, entry);\n return entry.handle === null ? 'uncacheable' : entry.handle;\n },\n set: (sql, handle, weight) => insert(sql, { handle, weight }),\n markUncacheable: (sql) => insert(sql, { handle: null, weight: 0 }),\n delete: (sql) => drop(sql)?.handle ?? undefined,\n drain: () => {\n const live: StatementHandle[] = [];\n for (const entry of entries.values()) {\n if (entry.handle !== null) live.push(entry.handle);\n }\n entries.clear();\n total = 0;\n return live;\n },\n };\n};\n"],"names":["openedDB","queryRunning","proceedGate","channel","waiters","credits","currentCallId","stopped","signal","wake","_","tick","e","Object","Symbol","i","A","Error","r","TextEncoder","DataView","D","TextDecoder","Uint8Array","ArrayBuffer","Map","URL","Math","BigInt","console","Promise","AbortController","setTimeout","navigator","n","BroadcastChannel","indexedDB","IDBKeyRange","Array","Number","t","Set","WeakSet","Proxy","Reflect","IDBRequest","Uint32Array","FinalizationRegistry","setInterval","clearInterval","AbortSignal","performance","clearTimeout","self","parseInt","globalThis","window","importScripts","process","document","XMLHttpRequest","fetch","Int8Array","Int16Array","Uint16Array","Int32Array","Float32Array","Float64Array","WebAssembly","s","String","c","crypto","TypeError","Date","a","l","o","h","f","Browser","isNaN","WeakMap","RangeError","Fibers","Asyncify","VFS_CAPABILITIES","defaultBuildFor","vfs","noOpLocks","_name","fn","SQLiteError","code","message","options","undefined","PRAGMA_NAME","PRAGMA_INTEGER","PRAGMA_LITERAL","cloneable","value","MessageChannel","WORKER_PROBES","scope","Handle","firstMissing","features","feature","probe","sqliteCodeOf","createVfsInstance","vfsClass","module","deadline","error","resolve","openWithRetry","sqlite","file","LIBRARY_SAVEPOINT","WA_SQLITE_BUILDS","VFSConfigs","gate","previous","callId","locks","createLocks","manager","name","resolveReleaser","rejectOuter","release","ifAvail","held","resolveHeld","requestOptions","lock","ran","snapshot","read","list","closing","currentBuild","wasmModuleArg","wasm","path","isSingleStatement","sql","statementText","normalize","DB_RELATED_SUFFIXES","removeOpfsEntry","segments","Boolean","dir","segment","opfsEntryExists","deleteDatabaseFiles","data","build","factory","vfsModule","vfsInstance","layout","SQLite","db","SQLITE_OPEN_READWRITE","SQLITE_CANTOPEN","suffix","pResOut","connectionInTransaction","event","pragmas","statementCacheSize","statementCacheBytes","abortSlots","abortIndex","declineWithout","probeFirst","open","vfsInstanceSeen","missing","slot","vfsConfig","statement","key","JSON","raw","stmt","SQLITE_ROW","opened","base","vfsError","detail","sqliteCode","reply","prepared","cache","createStatementCache","maxEntries","maxBytes","entries","total","drop","entry","evictOldest","evicted","oldest","insert","handle","weight","live","query","params","chunkSize","buffer","stamped","run","cols","result","SQLITE_INTERRUPT","row","out","settle","failed","abortable","wantsSignal","canYield","yields","polls","abortedHere","Atomics","cached","keep","single","SQLITE_PREPARE_PERSISTENT","DEFAULT_CREDIT_WINDOW","affected","savepoint","control","chunk","found"],"mappings":"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"}