@powersync/web 2.0.0 → 2.1.0

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 (70) hide show
  1. package/README.md +0 -10
  2. package/dist/index.react_native_web.js +145 -46
  3. package/dist/index.react_native_web.js.map +1 -1
  4. package/dist/worker/AccessHandlePoolVFS-BPUHfZME.js.map +1 -1
  5. package/dist/worker/FacadeVFS-d1ZDvud7.js.map +1 -1
  6. package/dist/worker/IDBBatchAtomicVFS-DbkDb777.js.map +1 -1
  7. package/dist/worker/MemoryVFS-DVJL5F8j.js.map +1 -1
  8. package/dist/worker/OPFSCoopSyncVFS-BgTiWPfa.js.map +1 -1
  9. package/dist/worker/OPFSWriteAheadVFS-BzodSqNq.js.map +1 -1
  10. package/dist/worker/assets/mc-wa-sqlite-DoDpgFfE.wasm +0 -0
  11. package/dist/worker/assets/mc-wa-sqlite-async-DYagSq56.wasm +0 -0
  12. package/dist/worker/assets/wa-sqlite-CagagB9I.wasm +0 -0
  13. package/dist/worker/assets/wa-sqlite-async-DCIP8kAx.wasm +0 -0
  14. package/dist/worker/mc-wa-sqlite-DDFgWP93.js +2 -0
  15. package/dist/worker/mc-wa-sqlite-DDFgWP93.js.map +1 -0
  16. package/dist/worker/mc-wa-sqlite-async-lGclTjKJ.js +2 -0
  17. package/dist/worker/mc-wa-sqlite-async-lGclTjKJ.js.map +1 -0
  18. package/dist/worker/wa-sqlite-B0tZMM0j.js +2 -0
  19. package/dist/worker/wa-sqlite-B0tZMM0j.js.map +1 -0
  20. package/dist/worker/wa-sqlite-async-CM6BmfRh.js +2 -0
  21. package/dist/worker/wa-sqlite-async-CM6BmfRh.js.map +1 -0
  22. package/dist/worker/worker.js +1 -1
  23. package/dist/worker/worker.js.map +1 -1
  24. package/lib/db/PowerSyncDatabase.js +2 -2
  25. package/lib/db/PowerSyncDatabase.js.map +1 -1
  26. package/lib/db/adapters/AsyncWebAdapter.js +1 -1
  27. package/lib/db/adapters/AsyncWebAdapter.js.map +1 -1
  28. package/lib/db/adapters/resolveAndValidateOptions.d.ts +8 -0
  29. package/lib/db/adapters/resolveAndValidateOptions.js +8 -0
  30. package/lib/db/adapters/resolveAndValidateOptions.js.map +1 -1
  31. package/lib/db/adapters/wa-sqlite/DatabaseServer.js +4 -1
  32. package/lib/db/adapters/wa-sqlite/DatabaseServer.js.map +1 -1
  33. package/lib/db/adapters/wa-sqlite/RawSqliteConnection.js +2 -0
  34. package/lib/db/adapters/wa-sqlite/RawSqliteConnection.js.map +1 -1
  35. package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js +9 -3
  36. package/lib/db/adapters/wa-sqlite/WASQLiteOpenFactory.js.map +1 -1
  37. package/lib/db/sync/SharedWebStreamingSyncImplementation.js +3 -2
  38. package/lib/db/sync/SharedWebStreamingSyncImplementation.js.map +1 -1
  39. package/lib/db/sync/TabLocalStreamingSyncImplementation.d.ts +19 -0
  40. package/lib/db/sync/TabLocalStreamingSyncImplementation.js +70 -0
  41. package/lib/db/sync/TabLocalStreamingSyncImplementation.js.map +1 -0
  42. package/lib/worker/client.d.ts +4 -2
  43. package/lib/worker/client.js +16 -3
  44. package/lib/worker/client.js.map +1 -1
  45. package/lib/worker/sync/SharedSyncImplementation.d.ts +1 -0
  46. package/lib/worker/sync/SharedSyncImplementation.js +2 -1
  47. package/lib/worker/sync/SharedSyncImplementation.js.map +1 -1
  48. package/package.json +4 -5
  49. package/src/db/PowerSyncDatabase.ts +3 -5
  50. package/src/db/adapters/AsyncWebAdapter.ts +1 -1
  51. package/src/db/adapters/resolveAndValidateOptions.ts +9 -0
  52. package/src/db/adapters/wa-sqlite/DatabaseServer.ts +4 -1
  53. package/src/db/adapters/wa-sqlite/RawSqliteConnection.ts +2 -0
  54. package/src/db/adapters/wa-sqlite/WASQLiteOpenFactory.ts +11 -3
  55. package/src/db/sync/SharedWebStreamingSyncImplementation.ts +3 -2
  56. package/src/db/sync/TabLocalStreamingSyncImplementation.ts +90 -0
  57. package/src/worker/client.ts +24 -3
  58. package/src/worker/sync/SharedSyncImplementation.ts +3 -1
  59. package/dist/worker/assets/mc-wa-sqlite-CnHbhWvs.wasm +0 -0
  60. package/dist/worker/assets/mc-wa-sqlite-async-D6idQS2r.wasm +0 -0
  61. package/dist/worker/assets/wa-sqlite-XZW__iJk.wasm +0 -0
  62. package/dist/worker/assets/wa-sqlite-async-rHzzC98y.wasm +0 -0
  63. package/dist/worker/mc-wa-sqlite-DiBqIVE5.js +0 -2
  64. package/dist/worker/mc-wa-sqlite-DiBqIVE5.js.map +0 -1
  65. package/dist/worker/mc-wa-sqlite-async-DUEhO9ef.js +0 -2
  66. package/dist/worker/mc-wa-sqlite-async-DUEhO9ef.js.map +0 -1
  67. package/dist/worker/wa-sqlite-BlSx7-_P.js +0 -2
  68. package/dist/worker/wa-sqlite-BlSx7-_P.js.map +0 -1
  69. package/dist/worker/wa-sqlite-async-BdR24Ucf.js +0 -2
  70. package/dist/worker/wa-sqlite-async-BdR24Ucf.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powersync/web",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "PowerSync Web SDK",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.js",
@@ -47,18 +47,17 @@
47
47
  "author": "PowerSync",
48
48
  "license": "Apache-2.0",
49
49
  "peerDependencies": {
50
- "@journeyapps/wa-sqlite": "^1.5.0",
51
50
  "@powersync/common": "^2.0.0",
52
- "@powersync/shared-internals": "^1.0.1"
51
+ "@powersync/shared-internals": "^1.1.0"
53
52
  },
54
53
  "dependencies": {
54
+ "@journeyapps/wa-sqlite": "2.0.1",
55
55
  "comlink": "^4.4.2",
56
56
  "commander": "^12.1.0",
57
57
  "@powersync/common": "2.0.0",
58
- "@powersync/shared-internals": "1.0.1"
58
+ "@powersync/shared-internals": "1.1.0"
59
59
  },
60
60
  "devDependencies": {
61
- "@journeyapps/wa-sqlite": "^1.7.0",
62
61
  "@types/uuid": "^9.0.6",
63
62
  "bson": "^6.10.4",
64
63
  "glob": "^11.0.0",
@@ -26,12 +26,10 @@ import { WebSpecificOpenOptions, WebSQLOpenOptions } from './adapters/options.js
26
26
  import { SSRStreamingSyncImplementation } from './sync/SSRWebStreamingSyncImplementation.js';
27
27
  import { SharedWebStreamingSyncImplementation } from './sync/SharedWebStreamingSyncImplementation.js';
28
28
  import { WebRemote } from './sync/WebRemote.js';
29
- import {
30
- WebStreamingSyncImplementation,
31
- WebStreamingSyncImplementationOptions
32
- } from './sync/WebStreamingSyncImplementation.js';
29
+ import { WebStreamingSyncImplementationOptions } from './sync/WebStreamingSyncImplementation.js';
33
30
  import { AsyncDbAdapter } from './adapters/AsyncWebAdapter.js';
34
31
  import { resolveAndValidateOptions } from './adapters/resolveAndValidateOptions.js';
32
+ import { TabLocalStreamingSyncImplementation } from './sync/TabLocalStreamingSyncImplementation.js';
35
33
 
36
34
  export type WebPowerSyncDatabaseOptions = BasePowerSyncDatabaseOptions &
37
35
  DatabaseSource<WebSQLOpenOptions> &
@@ -193,7 +191,7 @@ export class WebPowerSyncDatabase extends BasePowerSyncDatabase<WebPowerSyncData
193
191
  enableBroadcastLogs: this.enableBroadcastLogs
194
192
  });
195
193
  default:
196
- return new WebStreamingSyncImplementation(syncOptions);
194
+ return new TabLocalStreamingSyncImplementation(syncOptions);
197
195
  }
198
196
  }
199
197
  }
@@ -132,7 +132,7 @@ function readWritePoolState(writer: DatabaseClient, readers: DatabaseClient[]):
132
132
  let timeout: any = null;
133
133
  let release: UnlockFn | undefined;
134
134
  if (options?.timeoutMs) {
135
- timeout = setTimeout(() => abortController.abort, options.timeoutMs);
135
+ timeout = setTimeout(() => abortController.abort('requesting database timed out'), options.timeoutMs);
136
136
  }
137
137
 
138
138
  try {
@@ -2,6 +2,15 @@ import { LogLevels } from '@powersync/common';
2
2
  import { TemporaryStorageOption, WebSpecificOpenOptions } from './options.js';
3
3
  import { vfsRequiresDedicatedWorkers, WASQLiteVFS } from './wa-sqlite/vfs.js';
4
4
 
5
+ /**
6
+ * The maximum length of a db filename we support.
7
+ *
8
+ * We configure the same on WA-SQLite (which otherwise defaults to a maximum length of 64). We don't want to support
9
+ * very long path names as Safari maps OPFS files directly to OS files, and APFS has a 255-byte filename limit. Since
10
+ * some VFS append additional characters for pooled file access handles, we want to stay well below that.
11
+ */
12
+ export const maxPathNameLength = 128;
13
+
5
14
  /**
6
15
  * @internal
7
16
  */
@@ -172,7 +172,10 @@ export class DatabaseServer {
172
172
  }
173
173
 
174
174
  async forceClose() {
175
- this.#logger.log({ level: LogLevels.debug, message: `Closing connection to ${this.#inner.options}.` });
175
+ this.#logger.log({
176
+ level: LogLevels.debug,
177
+ message: `Closing connection to ${JSON.stringify(this.#inner.options)}.`
178
+ });
176
179
  const connection = this.#inner;
177
180
  this.#options.onClose();
178
181
  this.#updateBroadcastChannel.close();
@@ -3,6 +3,7 @@ import { Factory as WaSqliteFactory, SQLITE_ROW } from '@journeyapps/wa-sqlite';
3
3
  import { loadModuleAndVfs, WASQLiteVFS } from './vfs.js';
4
4
  import { TemporaryStorageOption } from '../options.js';
5
5
  import { RawQueryResult, SqliteValue } from '@powersync/common';
6
+ import { maxPathNameLength } from '../resolveAndValidateOptions.js';
6
7
 
7
8
  export interface RawWebResult extends Required<RawQueryResult> {
8
9
  autocommit: boolean;
@@ -62,6 +63,7 @@ export class RawSqliteConnection {
62
63
 
63
64
  private async openSQLiteAPI(): Promise<SQLiteAPI> {
64
65
  const { module, vfs } = await loadModuleAndVfs(this.options);
66
+ vfs.mxPathname = maxPathNameLength;
65
67
  const sqlite3 = WaSqliteFactory(module);
66
68
  sqlite3.vfs_register(vfs, true);
67
69
  /**
@@ -8,7 +8,7 @@ import { DatabaseClient, OpenWorkerConnection } from './DatabaseClient.js';
8
8
  import { generateTabCloseSignal } from '../../../shared/tab_close_signal.js';
9
9
  import { AsyncDbAdapter, PoolConnection } from '../AsyncWebAdapter.js';
10
10
  import { RawWaSqliteDatabaseOptions } from './RawSqliteConnection.js';
11
- import { resolveAndValidateOptions } from '../resolveAndValidateOptions.js';
11
+ import { maxPathNameLength, resolveAndValidateOptions } from '../resolveAndValidateOptions.js';
12
12
  import { connectToExistingWorker, connectToWorker, WorkerConnection } from '../../../worker/client.js';
13
13
 
14
14
  export interface WASQLiteOpenFactoryOptions {
@@ -25,6 +25,13 @@ export class WASQLiteOpenFactory implements SQLOpenFactory {
25
25
 
26
26
  constructor(options: WASQLiteOpenFactoryOptions) {
27
27
  this.options = resolveAndValidateOptions(options.open);
28
+
29
+ // Account for the fact that SQLite might append -journal suffixes
30
+ const maxLength = maxPathNameLength - 16;
31
+ if (this.options.dbFilename.length > maxLength) {
32
+ throw new Error(`dbFilename too long (max length is ${maxLength})`);
33
+ }
34
+
28
35
  this.logger = options.logger;
29
36
  }
30
37
 
@@ -89,7 +96,7 @@ export class WASQLiteOpenFactory implements SQLOpenFactory {
89
96
  let workerConnection: WorkerConnection;
90
97
  if (typeof optionsDbWorker == 'function') {
91
98
  const worker = optionsDbWorker(this.options);
92
- workerConnection = connectToExistingWorker(worker, 'database');
99
+ workerConnection = connectToExistingWorker(worker, this.logger, 'database');
93
100
  } else {
94
101
  const needsDedicated = vfsRequiresDedicatedWorkers(vfs);
95
102
  const useShared = !needsDedicated && enableMultiTabs;
@@ -98,7 +105,8 @@ export class WASQLiteOpenFactory implements SQLOpenFactory {
98
105
  service: 'database',
99
106
  databaseIdentifier: this.options.dbFilename,
100
107
  shared: useShared,
101
- customWorker: optionsDbWorker
108
+ customWorker: optionsDbWorker,
109
+ loggerForErrors: this.logger
102
110
  });
103
111
  }
104
112
 
@@ -96,13 +96,14 @@ export class SharedWebStreamingSyncImplementation extends WebStreamingSyncImplem
96
96
 
97
97
  const syncWorker = options.sync?.worker;
98
98
  if (typeof syncWorker === 'function') {
99
- this.worker = connectToExistingWorker(syncWorker(), 'sync');
99
+ this.worker = connectToExistingWorker(syncWorker(), options.logger, 'sync');
100
100
  } else {
101
101
  this.worker = connectToWorker({
102
102
  service: 'sync',
103
103
  databaseIdentifier: this.webOptions.identifier!,
104
104
  shared: true,
105
- customWorker: syncWorker
105
+ customWorker: syncWorker,
106
+ loggerForErrors: options.logger
106
107
  });
107
108
  }
108
109
 
@@ -0,0 +1,90 @@
1
+ import {
2
+ LockOptions,
3
+ LockType,
4
+ SubscribedStream,
5
+ SyncStatusJson,
6
+ SyncStatusSnapshot
7
+ } from '@powersync/shared-internals';
8
+ import {
9
+ WebStreamingSyncImplementation,
10
+ WebStreamingSyncImplementationOptions
11
+ } from './WebStreamingSyncImplementation.js';
12
+
13
+ /**
14
+ * When multi-tab support is disabled and we don't use a shared worker for sync, only a single tab will be able to
15
+ * acquire the sync navigator lock and start a sync iteration.
16
+ *
17
+ * To be able to provide _some_ multi-tab support in that configuration, this utility:
18
+ *
19
+ * 1. Sends sync status updates from the syncing tab to others.
20
+ * 2. Allows other tabs to send notifications when their active sync stream subscriptions update, allowing the active
21
+ * tab to take those subscriptions into account.
22
+ */
23
+ export class TabLocalStreamingSyncImplementation extends WebStreamingSyncImplementation {
24
+ #statusUpdated: BroadcastChannel;
25
+ #subscriptionsChanged: BroadcastChannel;
26
+ #hasSyncLock = false;
27
+
28
+ constructor(options: WebStreamingSyncImplementationOptions) {
29
+ super(options);
30
+
31
+ const identifier = options.identifier;
32
+ this.#statusUpdated = new BroadcastChannel(`sync-status-${identifier}`);
33
+ this.#subscriptionsChanged = new BroadcastChannel(`subscription-change-${identifier}`);
34
+
35
+ this.#statusUpdated.onmessage = (event) => {
36
+ if (event.data == 'ping') {
37
+ this.#sendStatus(this.syncStatus);
38
+ return;
39
+ }
40
+
41
+ const { core, dataFlow } = event.data as SyncStatusJson;
42
+ this.updateSyncStatus(core, dataFlow);
43
+ };
44
+
45
+ // Request other tabs to share their sync status.
46
+ this.#statusUpdated.postMessage('ping');
47
+ this.#subscriptionsChanged.onmessage = () => {
48
+ // We can't update activeStreams since we don't know when another tab referencing them is closed. However,
49
+ // clients will update an internal table listing streams after subscribing, and updateSubscriptions() will
50
+ // scan that table.
51
+ super.updateSubscriptions(this.activeStreams);
52
+ };
53
+
54
+ this.registerListener({
55
+ statusChanged: (status) => this.#sendStatus(status)
56
+ });
57
+ }
58
+
59
+ #sendStatus(status: SyncStatusSnapshot) {
60
+ // Don't share sync status if this is not the tab currently syncing.
61
+ if (this.#hasSyncLock) {
62
+ this.#statusUpdated.postMessage(status.toJSON());
63
+ }
64
+ }
65
+
66
+ override updateSubscriptions(subscriptions: SubscribedStream[]): void {
67
+ super.updateSubscriptions(subscriptions);
68
+ this.#subscriptionsChanged.postMessage('');
69
+ }
70
+
71
+ override obtainLock<T>({ callback, type, signal }: LockOptions<T>): Promise<T> {
72
+ const wrappedCallback = async (): Promise<T> => {
73
+ this.#hasSyncLock = true;
74
+
75
+ try {
76
+ return await callback();
77
+ } finally {
78
+ this.#hasSyncLock = false;
79
+ }
80
+ };
81
+
82
+ return super.obtainLock({ callback: type == LockType.SYNC ? wrappedCallback : callback, type, signal });
83
+ }
84
+
85
+ override async dispose(): Promise<void> {
86
+ this.#statusUpdated.close();
87
+ this.#subscriptionsChanged.close();
88
+ await super.dispose();
89
+ }
90
+ }
@@ -1,3 +1,4 @@
1
+ import { LogLevels, PowerSyncLogger } from '@powersync/common';
1
2
  import { SharedWorkerConnectionRequest, WorkerService } from './SharedWorkerConnectionRequest.js';
2
3
 
3
4
  export interface OpenWorkerOptions {
@@ -5,6 +6,7 @@ export interface OpenWorkerOptions {
5
6
  databaseIdentifier: string;
6
7
  customWorker?: string | URL;
7
8
  shared: boolean;
9
+ loggerForErrors: PowerSyncLogger;
8
10
  }
9
11
 
10
12
  export interface WorkerConnection {
@@ -17,7 +19,8 @@ export function connectToWorker({
17
19
  service,
18
20
  databaseIdentifier,
19
21
  customWorker,
20
- shared
22
+ shared,
23
+ loggerForErrors
21
24
  }: OpenWorkerOptions): WorkerConnection {
22
25
  const name = `${shared ? 'shared-' : ''}powersync-${databaseIdentifier}`;
23
26
  let worker: Worker | SharedWorker;
@@ -38,7 +41,7 @@ export function connectToWorker({
38
41
  worker = spawnDefaultPowerSyncWorker(shared, name);
39
42
  }
40
43
 
41
- return connectToExistingWorker(worker, service);
44
+ return connectToExistingWorker(worker, loggerForErrors, service);
42
45
  }
43
46
 
44
47
  /**
@@ -68,7 +71,23 @@ function spawnDefaultPowerSyncWorker(shared: boolean, name: string): Worker | Sh
68
71
  });
69
72
  }
70
73
 
71
- export function connectToExistingWorker(worker: Worker | SharedWorker, service: WorkerService): WorkerConnection {
74
+ export function connectToExistingWorker(
75
+ worker: Worker | SharedWorker,
76
+ logger: PowerSyncLogger,
77
+ service: WorkerService
78
+ ): WorkerConnection {
79
+ function logError(event: ErrorEvent) {
80
+ // TODO: Ideally, we should be able to handle worker errors by forwarding them to async Comlink callers.
81
+ // Currently, comlink calls on errored workers would just be stuck forever.
82
+ logger.log({
83
+ level: LogLevels.error,
84
+ error: event.error,
85
+ message: 'Error in database or sync worker, this likely disrupts PowerSync.'
86
+ });
87
+ }
88
+
89
+ (worker as AbstractWorker).addEventListener('error', logError);
90
+
72
91
  const isShared = isSharedWorker(worker);
73
92
  if (isShared) {
74
93
  const { port1, port2 } = new MessageChannel();
@@ -81,6 +100,7 @@ export function connectToExistingWorker(worker: Worker | SharedWorker, service:
81
100
  endpoint: port2,
82
101
  worker,
83
102
  close() {
103
+ worker.removeEventListener('error', logError);
84
104
  port2.close();
85
105
  }
86
106
  };
@@ -89,6 +109,7 @@ export function connectToExistingWorker(worker: Worker | SharedWorker, service:
89
109
  endpoint: worker as Worker,
90
110
  worker,
91
111
  close() {
112
+ worker.removeEventListener('error', logError);
92
113
  worker.terminate();
93
114
  }
94
115
  };
@@ -123,6 +123,8 @@ export class SharedSyncImplementation extends BaseObserver<SharedSyncImplementat
123
123
  logger: BroadcastLogger;
124
124
  protected readonly database = this.generateReconnectableDatabase();
125
125
 
126
+ private sharedCloseSignal = generateTabCloseSignal();
127
+
126
128
  constructor() {
127
129
  super();
128
130
  this.ports = [];
@@ -517,7 +519,7 @@ export class SharedSyncImplementation extends BaseObserver<SharedSyncImplementat
517
519
  const remote = Comlink.wrap<OpenWorkerConnection>(workerPort);
518
520
  const identifier = this.syncParams!.dbParams.dbFilename;
519
521
 
520
- const clientLockName = await generateTabCloseSignal();
522
+ const clientLockName = await this.sharedCloseSignal;
521
523
 
522
524
  /**
523
525
  * The open could fail if the tab is closed while we're busy opening the database.
@@ -1,2 +0,0 @@
1
- async function e(e={}){var r=e,t=!!globalThis.window,n=!!globalThis.WorkerGlobalScope;globalThis.process?.versions?.node&&globalThis.process;var o,i,a="./this.program",s=(e,r)=>{throw r},l=import.meta.url,_="";if(t||n){try{_=new URL(".",l).href}catch{}n&&(i=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),o=async e=>{var r=await fetch(e,{credentials:"same-origin"});if(r.ok)return r.arrayBuffer();throw new Error(r.status+" : "+r.url)}}var u,c,d,f,m,h,p,v,w,b,g,y,q,E,k,x=console.log.bind(console),S=console.error.bind(console),M=!1,D=!1;function F(){var e=Be.buffer;b=new Int8Array(e),v=new Int16Array(e),r.HEAPU8=k=new Uint8Array(e),q=new Uint16Array(e),r.HEAP32=w=new Int32Array(e),E=new Uint32Array(e),g=new Float32Array(e),y=new Float64Array(e)}function A(e){r.onAbort?.(e),S(e=`Aborted(${e})`),M=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw f?.(t),t}function C(){return r.locateFile?(e="mc-wa-sqlite.wasm",r.locateFile?r.locateFile(e,_):_+e):new URL("assets/mc-wa-sqlite-CnHbhWvs.wasm",globalThis.location.href).href;var e}async function P(e){if(!u)try{var r=await o(e);return new Uint8Array(r)}catch{}return function(e){if(e==m&&u)return new Uint8Array(u);if(i)return i(e);throw"both async and sync fetching of the wasm failed"}(e)}async function T(e,r,t){if(!e)try{var n=fetch(r,{credentials:"same-origin"});return await WebAssembly.instantiateStreaming(n,t)}catch(e){S(`wasm streaming compile failed: ${e}`),S("falling back to ArrayBuffer instantiation")}return async function(e,r){try{var t=await P(e);return await WebAssembly.instantiate(t,r)}catch(e){S(`failed to asynchronously prepare wasm: ${e}`),A(e)}}(r,t)}class j{name="ExitStatus";constructor(e){this.message=`Program terminated with exit(${e})`,this.status=e}}var z=e=>{for(;e.length>0;)e.shift()(r)},R=[],N=e=>R.push(e),O=[],L=e=>O.push(e);function U(e,r="i8"){switch(r.endsWith("*")&&(r="*"),r){case"i1":case"i8":return b[e];case"i16":return v[e>>1];case"i32":return w[e>>2];case"i64":A("to do getValue(i64) use WASM_BIGINT");case"float":return g[e>>2];case"double":return y[e>>3];case"*":return E[e>>2];default:A(`invalid type for getValue: ${r}`)}}var B=!0;function I(e,r,t="i8"){switch(t.endsWith("*")&&(t="*"),t){case"i1":case"i8":b[e]=r;break;case"i16":v[e>>1]=r;break;case"i32":w[e>>2]=r;break;case"i64":A("to do setValue(i64) use WASM_BIGINT");case"float":g[e>>2]=r;break;case"double":y[e>>3]=r;break;case"*":E[e>>2]=r;break;default:A(`invalid type for setValue: ${t}`)}}var $=()=>Ue(),H=new TextDecoder,W=(e,r,t,n)=>{var o=r+t;if(n)return o;for(;e[r]&&!(r>=o);)++r;return r},G=(e,r,t)=>{if(!e)return"";var n=W(k,e,r,t);return H.decode(k.subarray(e,n))},X={isAbs:e=>"/"===e.charAt(0),splitPath:e=>/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1),normalizeArray:(e,r)=>{for(var t=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),t++):t&&(e.splice(n,1),t--)}if(r)for(;t;t--)e.unshift("..");return e},normalize:e=>{var r=X.isAbs(e),t="/"===e.slice(-1);return(e=X.normalizeArray(e.split("/").filter(e=>!!e),!r).join("/"))||r||(e="."),e&&t&&(e+="/"),(r?"/":"")+e},dirname:e=>{var r=X.splitPath(e),t=r[0],n=r[1];return t||n?(n&&(n=n.slice(0,-1)),t+n):"."},basename:e=>e&&e.match(/([^\/]+|\/)\/*$/)[1],join:(...e)=>X.normalize(e.join("/")),join2:(e,r)=>X.normalize(e+"/"+r)},V=e=>(V=e=>(crypto.getRandomValues(e),0))(e),Y={resolve:(...e)=>{for(var r="",t=!1,n=e.length-1;n>=-1&&!t;n--){var o=n>=0?e[n]:ce.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");if(!o)return"";r=o+"/"+r,t=X.isAbs(o)}return(t?"/":"")+(r=X.normalizeArray(r.split("/").filter(e=>!!e),!t).join("/"))||"."},relative:(e,r)=>{function t(e){for(var r=0;r<e.length&&""===e[r];r++);for(var t=e.length-1;t>=0&&""===e[t];t--);return r>t?[]:e.slice(r,t-r+1)}e=Y.resolve(e).slice(1),r=Y.resolve(r).slice(1);for(var n=t(e.split("/")),o=t(r.split("/")),i=Math.min(n.length,o.length),a=i,s=0;s<i;s++)if(n[s]!==o[s]){a=s;break}var l=[];for(s=a;s<n.length;s++)l.push("..");return(l=l.concat(o.slice(a))).join("/")}},K=(e,r=0,t,n)=>{var o=W(e,r,t,n);return H.decode(e.buffer?e.subarray(r,o):new Uint8Array(e.slice(r,o)))},J=[],Q=e=>{for(var r=0,t=0;t<e.length;++t){var n=e.charCodeAt(t);n<=127?r++:n<=2047?r+=2:n>=55296&&n<=57343?(r+=4,++t):r+=3}return r},Z=(e,r,t,n)=>{if(!(n>0))return 0;for(var o=t,i=t+n-1,a=0;a<e.length;++a){var s=e.codePointAt(a);if(s<=127){if(t>=i)break;r[t++]=s}else if(s<=2047){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(s<=65535){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+3>=i)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s,a++}}return r[t]=0,t-o},ee=(e,r,t)=>{var n=t>0?t:Q(e)+1,o=new Array(n),i=Z(e,o,0,o.length);return r&&(o.length=i),o},re={ttys:[],init(){},shutdown(){},register(e,r){re.ttys[e]={input:[],output:[],ops:r},ce.registerDevice(e,re.stream_ops)},stream_ops:{open(e){var r=re.ttys[e.node.rdev];if(!r)throw new ce.ErrnoError(43);e.tty=r,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,r,t,n,o){if(!e.tty||!e.tty.ops.get_char)throw new ce.ErrnoError(60);for(var i=0,a=0;a<n;a++){var s;try{s=e.tty.ops.get_char(e.tty)}catch(e){throw new ce.ErrnoError(29)}if(void 0===s&&0===i)throw new ce.ErrnoError(6);if(null==s)break;i++,r[t+a]=s}return i&&(e.node.atime=Date.now()),i},write(e,r,t,n,o){if(!e.tty||!e.tty.ops.put_char)throw new ce.ErrnoError(60);try{for(var i=0;i<n;i++)e.tty.ops.put_char(e.tty,r[t+i])}catch(e){throw new ce.ErrnoError(29)}return n&&(e.node.mtime=e.node.ctime=Date.now()),i}},default_tty_ops:{get_char:e=>(()=>{if(!J.length){var e=null;if(globalThis.window?.prompt&&null!==(e=window.prompt("Input: "))&&(e+="\n"),!e)return null;J=ee(e,!0)}return J.shift()})(),put_char(e,r){null===r||10===r?(x(K(e.output)),e.output=[]):0!=r&&e.output.push(r)},fsync(e){e.output?.length>0&&(x(K(e.output)),e.output=[])},ioctl_tcgets:e=>({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:(e,r,t)=>0,ioctl_tiocgwinsz:e=>[24,80]},default_tty1_ops:{put_char(e,r){null===r||10===r?(S(K(e.output)),e.output=[]):0!=r&&e.output.push(r)},fsync(e){e.output?.length>0&&(S(K(e.output)),e.output=[])}}},te=(e,r)=>Math.ceil(e/r)*r,ne=e=>{e=te(e,65536);var r=ze(65536,e);return r&&((e,r)=>{k.fill(0,e,e+r)})(r,e),r},oe={ops_table:null,mount:e=>oe.createNode(null,"/",16895,0),createNode(e,r,t,n){if(ce.isBlkdev(t)||ce.isFIFO(t))throw new ce.ErrnoError(63);oe.ops_table||={dir:{node:{getattr:oe.node_ops.getattr,setattr:oe.node_ops.setattr,lookup:oe.node_ops.lookup,mknod:oe.node_ops.mknod,rename:oe.node_ops.rename,unlink:oe.node_ops.unlink,rmdir:oe.node_ops.rmdir,readdir:oe.node_ops.readdir,symlink:oe.node_ops.symlink},stream:{llseek:oe.stream_ops.llseek}},file:{node:{getattr:oe.node_ops.getattr,setattr:oe.node_ops.setattr},stream:{llseek:oe.stream_ops.llseek,read:oe.stream_ops.read,write:oe.stream_ops.write,mmap:oe.stream_ops.mmap,msync:oe.stream_ops.msync}},link:{node:{getattr:oe.node_ops.getattr,setattr:oe.node_ops.setattr,readlink:oe.node_ops.readlink},stream:{}},chrdev:{node:{getattr:oe.node_ops.getattr,setattr:oe.node_ops.setattr},stream:ce.chrdev_stream_ops}};var o=ce.createNode(e,r,t,n);return ce.isDir(o.mode)?(o.node_ops=oe.ops_table.dir.node,o.stream_ops=oe.ops_table.dir.stream,o.contents={}):ce.isFile(o.mode)?(o.node_ops=oe.ops_table.file.node,o.stream_ops=oe.ops_table.file.stream,o.usedBytes=0,o.contents=oe.emptyFileContents??=new Uint8Array(0)):ce.isLink(o.mode)?(o.node_ops=oe.ops_table.link.node,o.stream_ops=oe.ops_table.link.stream):ce.isChrdev(o.mode)&&(o.node_ops=oe.ops_table.chrdev.node,o.stream_ops=oe.ops_table.chrdev.stream),o.atime=o.mtime=o.ctime=Date.now(),e&&(e.contents[r]=o,e.atime=e.mtime=e.ctime=o.atime),o},getFileDataAsTypedArray:e=>e.contents.subarray(0,e.usedBytes),expandFileStorage(e,r){var t=e.contents.length;if(!(t>=r)){r=Math.max(r,t*(t<1048576?2:1.125)>>>0),t&&(r=Math.max(r,256));var n=oe.getFileDataAsTypedArray(e);e.contents=new Uint8Array(r),e.contents.set(n)}},resizeFileStorage(e,r){if(e.usedBytes!=r){var t=e.contents;e.contents=new Uint8Array(r),e.contents.set(t.subarray(0,Math.min(r,e.usedBytes))),e.usedBytes=r}},node_ops:{getattr(e){var r={};return r.dev=ce.isChrdev(e.mode)?e.id:1,r.ino=e.id,r.mode=e.mode,r.nlink=1,r.uid=0,r.gid=0,r.rdev=e.rdev,ce.isDir(e.mode)?r.size=4096:ce.isFile(e.mode)?r.size=e.usedBytes:ce.isLink(e.mode)?r.size=e.link.length:r.size=0,r.atime=new Date(e.atime),r.mtime=new Date(e.mtime),r.ctime=new Date(e.ctime),r.blksize=4096,r.blocks=Math.ceil(r.size/r.blksize),r},setattr(e,r){for(const t of["mode","atime","mtime","ctime"])null!=r[t]&&(e[t]=r[t]);void 0!==r.size&&oe.resizeFileStorage(e,r.size)},lookup(e,r){throw oe.doesNotExistError||(oe.doesNotExistError=new ce.ErrnoError(44),oe.doesNotExistError.stack="<generic error, no stack>"),oe.doesNotExistError},mknod:(e,r,t,n)=>oe.createNode(e,r,t,n),rename(e,r,t){var n;try{n=ce.lookupNode(r,t)}catch(e){}if(n){if(ce.isDir(e.mode))for(var o in n.contents)throw new ce.ErrnoError(55);ce.hashRemoveNode(n)}delete e.parent.contents[e.name],r.contents[t]=e,e.name=t,r.ctime=r.mtime=e.parent.ctime=e.parent.mtime=Date.now()},unlink(e,r){delete e.contents[r],e.ctime=e.mtime=Date.now()},rmdir(e,r){var t=ce.lookupNode(e,r);for(var n in t.contents)throw new ce.ErrnoError(55);delete e.contents[r],e.ctime=e.mtime=Date.now()},readdir:e=>[".","..",...Object.keys(e.contents)],symlink(e,r,t){var n=oe.createNode(e,r,41471,0);return n.link=t,n},readlink(e){if(!ce.isLink(e.mode))throw new ce.ErrnoError(28);return e.link}},stream_ops:{read(e,r,t,n,o){var i=e.node.contents;if(o>=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-o,n);return r.set(i.subarray(o,o+a),t),a},write(e,r,t,n,o,i){if(r.buffer===b.buffer&&(i=!1),!n)return 0;var a=e.node;return a.mtime=a.ctime=Date.now(),i?(a.contents=r.subarray(t,t+n),a.usedBytes=n):0===a.usedBytes&&0===o?(a.contents=r.slice(t,t+n),a.usedBytes=n):(oe.expandFileStorage(a,o+n),a.contents.set(r.subarray(t,t+n),o),a.usedBytes=Math.max(a.usedBytes,o+n)),n},llseek(e,r,t){var n=r;if(1===t?n+=e.position:2===t&&ce.isFile(e.node.mode)&&(n+=e.node.usedBytes),n<0)throw new ce.ErrnoError(28);return n},mmap(e,r,t,n,o){if(!ce.isFile(e.node.mode))throw new ce.ErrnoError(43);var i,a,s=e.node.contents;if(2&o||s.buffer!==b.buffer){if(a=!0,!(i=ne(r)))throw new ce.ErrnoError(48);s&&((t>0||t+r<s.length)&&(s=s.subarray?s.subarray(t,t+r):Array.prototype.slice.call(s,t,t+r)),b.set(s,i))}else a=!1,i=s.byteOffset;return{ptr:i,allocated:a}},msync:(e,r,t,n,o)=>(oe.stream_ops.write(e,r,0,n,t,!1),0)}},ie=e=>("string"==typeof e&&(e=ee(e,!0)),e.subarray||(e=new Uint8Array(e)),e),ae=(e,r)=>{var t=0;return e&&(t|=365),r&&(t|=146),t},se=0,le=null,_e=[],ue=async(e,t,n,i,a,s,l,_)=>{var u=t?Y.resolve(X.join2(e,t)):e;se++,r.monitorRunDependencies?.(se);try{var c=n;"string"==typeof n&&(c=await(async e=>{var r=await o(e);return new Uint8Array(r)})(n)),c=await(async(e,r)=>{for(var t of("undefined"!=typeof Browser&&Browser.init(),_e))if(t.canHandle(r))return t.handle(e,r);return e})(c,u),_?.(),s||((...e)=>{ce.createDataFile(...e)})(e,t,c,i,a,l)}finally{(()=>{if(se--,r.monitorRunDependencies?.(se),0==se&&le){var e=le;le=null,e()}})()}},ce={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{name="ErrnoError";constructor(e){this.errno=e}},FSStream:class{shared={};get object(){return this.node}set object(e){this.node=e}get isRead(){return 1!=(2097155&this.flags)}get isWrite(){return!!(2097155&this.flags)}get isAppend(){return 1024&this.flags}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{node_ops={};stream_ops={};readMode=365;writeMode=146;mounted=null;constructor(e,r,t,n){e||(e=this),this.parent=e,this.mount=e.mount,this.id=ce.nextInode++,this.name=r,this.mode=t,this.rdev=n,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return ce.isDir(this.mode)}get isDevice(){return ce.isChrdev(this.mode)}},lookupPath(e,r={}){if(!e)throw new ce.ErrnoError(44);r.follow_mount??=!0,X.isAbs(e)||(e=ce.cwd()+"/"+e);e:for(var t=0;t<40;t++){for(var n=e.split("/").filter(e=>!!e),o=ce.root,i="/",a=0;a<n.length;a++){var s=a===n.length-1;if(s&&r.parent)break;if("."!==n[a])if(".."!==n[a]){i=X.join2(i,n[a]);try{o=ce.lookupNode(o,n[a])}catch(e){if(44===e?.errno&&s&&r.noent_okay)return{path:i};throw e}if(!ce.isMountpoint(o)||s&&!r.follow_mount||(o=o.mounted.root),ce.isLink(o.mode)&&(!s||r.follow)){if(!o.node_ops.readlink)throw new ce.ErrnoError(52);var l=o.node_ops.readlink(o);X.isAbs(l)||(l=X.dirname(i)+"/"+l),e=l+"/"+n.slice(a+1).join("/");continue e}}else{if(i=X.dirname(i),ce.isRoot(o)){e=i+"/"+n.slice(a+1).join("/"),t--;continue e}o=o.parent}}return{path:i,node:o}}throw new ce.ErrnoError(32)},getPath(e){for(var r;;){if(ce.isRoot(e)){var t=e.mount.mountpoint;return r?"/"!==t[t.length-1]?`${t}/${r}`:t+r:t}r=r?`${e.name}/${r}`:e.name,e=e.parent}},hashName(e,r){for(var t=0,n=0;n<r.length;n++)t=(t<<5)-t+r.charCodeAt(n)|0;return(e+t>>>0)%ce.nameTable.length},hashAddNode(e){var r=ce.hashName(e.parent.id,e.name);e.name_next=ce.nameTable[r],ce.nameTable[r]=e},hashRemoveNode(e){var r=ce.hashName(e.parent.id,e.name);if(ce.nameTable[r]===e)ce.nameTable[r]=e.name_next;else for(var t=ce.nameTable[r];t;){if(t.name_next===e){t.name_next=e.name_next;break}t=t.name_next}},lookupNode(e,r){var t=ce.mayLookup(e);if(t)throw new ce.ErrnoError(t);for(var n=ce.hashName(e.id,r),o=ce.nameTable[n];o;o=o.name_next){var i=o.name;if(o.parent.id===e.id&&i===r)return o}return ce.lookup(e,r)},createNode(e,r,t,n){var o=new ce.FSNode(e,r,t,n);return ce.hashAddNode(o),o},destroyNode(e){ce.hashRemoveNode(e)},isRoot:e=>e===e.parent,isMountpoint:e=>!!e.mounted,isFile:e=>32768==(61440&e),isDir:e=>16384==(61440&e),isLink:e=>40960==(61440&e),isChrdev:e=>8192==(61440&e),isBlkdev:e=>24576==(61440&e),isFIFO:e=>4096==(61440&e),isSocket:e=>!(49152&~e),flagsToPermissionString(e){var r=["r","w","rw"][3&e];return 512&e&&(r+="w"),r},nodePermissions:(e,r)=>ce.ignorePermissions||(!r.includes("r")||292&e.mode)&&(!r.includes("w")||146&e.mode)&&(!r.includes("x")||73&e.mode)?0:2,mayLookup(e){if(!ce.isDir(e.mode))return 54;var r=ce.nodePermissions(e,"x");return r||(e.node_ops.lookup?0:2)},mayCreate(e,r){if(!ce.isDir(e.mode))return 54;try{ce.lookupNode(e,r);return 20}catch(e){}return ce.nodePermissions(e,"wx")},mayDelete(e,r,t){var n;try{n=ce.lookupNode(e,r)}catch(e){return e.errno}var o=ce.nodePermissions(e,"wx");if(o)return o;if(t){if(!ce.isDir(n.mode))return 54;if(ce.isRoot(n)||ce.getPath(n)===ce.cwd())return 10}else if(ce.isDir(n.mode))return 31;return 0},mayOpen(e,r){if(!e)return 44;if(ce.isLink(e.mode))return 32;var t=ce.flagsToPermissionString(r);return ce.isDir(e.mode)&&("r"!==t||576&r)?31:ce.nodePermissions(e,t)},checkOpExists(e,r){if(!e)throw new ce.ErrnoError(r);return e},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=ce.MAX_OPEN_FDS;e++)if(!ce.streams[e])return e;throw new ce.ErrnoError(33)},getStreamChecked(e){var r=ce.getStream(e);if(!r)throw new ce.ErrnoError(8);return r},getStream:e=>ce.streams[e],createStream:(e,r=-1)=>(e=Object.assign(new ce.FSStream,e),-1==r&&(r=ce.nextfd()),e.fd=r,ce.streams[r]=e,e),closeStream(e){ce.streams[e]=null},dupStream(e,r=-1){var t=ce.createStream(e,r);return t.stream_ops?.dup?.(t),t},doSetAttr(e,r,t){var n=e?.stream_ops.setattr,o=n?e:r;n??=r.node_ops.setattr,ce.checkOpExists(n,63),n(o,t)},chrdev_stream_ops:{open(e){var r=ce.getDevice(e.node.rdev);e.stream_ops=r.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new ce.ErrnoError(70)}},major:e=>e>>8,minor:e=>255&e,makedev:(e,r)=>e<<8|r,registerDevice(e,r){ce.devices[e]={stream_ops:r}},getDevice:e=>ce.devices[e],getMounts(e){for(var r=[],t=[e];t.length;){var n=t.pop();r.push(n),t.push(...n.mounts)}return r},syncfs(e,r){"function"==typeof e&&(r=e,e=!1),ce.syncFSRequests++,ce.syncFSRequests>1&&S(`warning: ${ce.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var t=ce.getMounts(ce.root.mount),n=0;function o(e){return ce.syncFSRequests--,r(e)}function i(e){if(e)return i.errored?void 0:(i.errored=!0,o(e));++n>=t.length&&o(null)}for(var a of t)a.type.syncfs?a.type.syncfs(a,e,i):i(null)},mount(e,r,t){var n,o="/"===t,i=!t;if(o&&ce.root)throw new ce.ErrnoError(10);if(!o&&!i){var a=ce.lookupPath(t,{follow_mount:!1});if(t=a.path,n=a.node,ce.isMountpoint(n))throw new ce.ErrnoError(10);if(!ce.isDir(n.mode))throw new ce.ErrnoError(54)}var s={type:e,opts:r,mountpoint:t,mounts:[]},l=e.mount(s);return l.mount=s,s.root=l,o?ce.root=l:n&&(n.mounted=s,n.mount&&n.mount.mounts.push(s)),l},unmount(e){var r=ce.lookupPath(e,{follow_mount:!1});if(!ce.isMountpoint(r.node))throw new ce.ErrnoError(28);var t=r.node,n=t.mounted,o=ce.getMounts(n);for(var[i,a]of Object.entries(ce.nameTable))for(;a;){var s=a.name_next;o.includes(a.mount)&&ce.destroyNode(a),a=s}t.mounted=null;var l=t.mount.mounts.indexOf(n);t.mount.mounts.splice(l,1)},lookup:(e,r)=>e.node_ops.lookup(e,r),mknod(e,r,t){var n=ce.lookupPath(e,{parent:!0}).node,o=X.basename(e);if(!o)throw new ce.ErrnoError(28);if("."===o||".."===o)throw new ce.ErrnoError(20);var i=ce.mayCreate(n,o);if(i)throw new ce.ErrnoError(i);if(!n.node_ops.mknod)throw new ce.ErrnoError(63);return n.node_ops.mknod(n,o,r,t)},statfs:e=>ce.statfsNode(ce.lookupPath(e,{follow:!0}).node),statfsStream:e=>ce.statfsNode(e.node),statfsNode(e){var r={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:ce.nextInode,ffree:ce.nextInode-1,fsid:42,flags:2,namelen:255};return e.node_ops.statfs&&Object.assign(r,e.node_ops.statfs(e.mount.opts.root)),r},create:(e,r=438)=>(r&=4095,r|=32768,ce.mknod(e,r,0)),mkdir:(e,r=511)=>(r&=1023,r|=16384,ce.mknod(e,r,0)),mkdirTree(e,r){var t=e.split("/"),n="";for(var o of t)if(o){(n||X.isAbs(e))&&(n+="/"),n+=o;try{ce.mkdir(n,r)}catch(e){if(20!=e.errno)throw e}}},mkdev:(e,r,t)=>(void 0===t&&(t=r,r=438),r|=8192,ce.mknod(e,r,t)),symlink(e,r){if(!Y.resolve(e))throw new ce.ErrnoError(44);var t=ce.lookupPath(r,{parent:!0}).node;if(!t)throw new ce.ErrnoError(44);var n=X.basename(r),o=ce.mayCreate(t,n);if(o)throw new ce.ErrnoError(o);if(!t.node_ops.symlink)throw new ce.ErrnoError(63);return t.node_ops.symlink(t,n,e)},rename(e,r){var t,n,o=X.dirname(e),i=X.dirname(r),a=X.basename(e),s=X.basename(r);if(t=ce.lookupPath(e,{parent:!0}).node,n=ce.lookupPath(r,{parent:!0}).node,!t||!n)throw new ce.ErrnoError(44);if(t.mount!==n.mount)throw new ce.ErrnoError(75);var l,_=ce.lookupNode(t,a),u=Y.relative(e,i);if("."!==u.charAt(0))throw new ce.ErrnoError(28);if("."!==(u=Y.relative(r,o)).charAt(0))throw new ce.ErrnoError(55);try{l=ce.lookupNode(n,s)}catch(e){}if(_!==l){var c=ce.isDir(_.mode),d=ce.mayDelete(t,a,c);if(d)throw new ce.ErrnoError(d);if(d=l?ce.mayDelete(n,s,c):ce.mayCreate(n,s))throw new ce.ErrnoError(d);if(!t.node_ops.rename)throw new ce.ErrnoError(63);if(ce.isMountpoint(_)||l&&ce.isMountpoint(l))throw new ce.ErrnoError(10);if(n!==t&&(d=ce.nodePermissions(t,"w")))throw new ce.ErrnoError(d);ce.hashRemoveNode(_);try{t.node_ops.rename(_,n,s),_.parent=n}catch(e){throw e}finally{ce.hashAddNode(_)}}},rmdir(e){var r=ce.lookupPath(e,{parent:!0}).node,t=X.basename(e),n=ce.lookupNode(r,t),o=ce.mayDelete(r,t,!0);if(o)throw new ce.ErrnoError(o);if(!r.node_ops.rmdir)throw new ce.ErrnoError(63);if(ce.isMountpoint(n))throw new ce.ErrnoError(10);r.node_ops.rmdir(r,t),ce.destroyNode(n)},readdir(e){var r=ce.lookupPath(e,{follow:!0}).node;return ce.checkOpExists(r.node_ops.readdir,54)(r)},unlink(e){var r=ce.lookupPath(e,{parent:!0}).node;if(!r)throw new ce.ErrnoError(44);var t=X.basename(e),n=ce.lookupNode(r,t),o=ce.mayDelete(r,t,!1);if(o)throw new ce.ErrnoError(o);if(!r.node_ops.unlink)throw new ce.ErrnoError(63);if(ce.isMountpoint(n))throw new ce.ErrnoError(10);r.node_ops.unlink(r,t),ce.destroyNode(n)},readlink(e){var r=ce.lookupPath(e).node;if(!r)throw new ce.ErrnoError(44);if(!r.node_ops.readlink)throw new ce.ErrnoError(28);return r.node_ops.readlink(r)},stat(e,r){var t=ce.lookupPath(e,{follow:!r}).node;return ce.checkOpExists(t.node_ops.getattr,63)(t)},fstat(e){var r=ce.getStreamChecked(e),t=r.node,n=r.stream_ops.getattr,o=n?r:t;return n??=t.node_ops.getattr,ce.checkOpExists(n,63),n(o)},lstat:e=>ce.stat(e,!0),doChmod(e,r,t,n){ce.doSetAttr(e,r,{mode:4095&t|-4096&r.mode,ctime:Date.now(),dontFollow:n})},chmod(e,r,t){var n;"string"==typeof e?n=ce.lookupPath(e,{follow:!t}).node:n=e;ce.doChmod(null,n,r,t)},lchmod(e,r){ce.chmod(e,r,!0)},fchmod(e,r){var t=ce.getStreamChecked(e);ce.doChmod(t,t.node,r,!1)},doChown(e,r,t){ce.doSetAttr(e,r,{timestamp:Date.now(),dontFollow:t})},chown(e,r,t,n){var o;"string"==typeof e?o=ce.lookupPath(e,{follow:!n}).node:o=e;ce.doChown(null,o,n)},lchown(e,r,t){ce.chown(e,r,t,!0)},fchown(e,r,t){var n=ce.getStreamChecked(e);ce.doChown(n,n.node,!1)},doTruncate(e,r,t){if(ce.isDir(r.mode))throw new ce.ErrnoError(31);if(!ce.isFile(r.mode))throw new ce.ErrnoError(28);var n=ce.nodePermissions(r,"w");if(n)throw new ce.ErrnoError(n);ce.doSetAttr(e,r,{size:t,timestamp:Date.now()})},truncate(e,r){if(r<0)throw new ce.ErrnoError(28);var t;"string"==typeof e?t=ce.lookupPath(e,{follow:!0}).node:t=e;ce.doTruncate(null,t,r)},ftruncate(e,r){var t=ce.getStreamChecked(e);if(r<0||!(2097155&t.flags))throw new ce.ErrnoError(28);ce.doTruncate(t,t.node,r)},utime(e,r,t){var n=ce.lookupPath(e,{follow:!0}).node;ce.checkOpExists(n.node_ops.setattr,63)(n,{atime:r,mtime:t})},open(e,r,t=438){if(""===e)throw new ce.ErrnoError(44);var n,o;if(t=64&(r=(e=>{if("string"!=typeof e)return e;var r={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090}[e];if(void 0===r)throw new Error(`Unknown file open mode: ${e}`);return r})(r))?4095&t|32768:0,"object"==typeof e)n=e;else{o=e.endsWith("/");var i=ce.lookupPath(e,{follow:!(131072&r),noent_okay:!0});n=i.node,e=i.path}var a=!1;if(64&r)if(n){if(128&r)throw new ce.ErrnoError(20)}else{if(o)throw new ce.ErrnoError(31);n=ce.mknod(e,511|t,0),a=!0}if(!n)throw new ce.ErrnoError(44);if(ce.isChrdev(n.mode)&&(r&=-513),65536&r&&!ce.isDir(n.mode))throw new ce.ErrnoError(54);if(!a){var s=ce.mayOpen(n,r);if(s)throw new ce.ErrnoError(s)}512&r&&!a&&ce.truncate(n,0),r&=-131713;var l=ce.createStream({node:n,path:ce.getPath(n),flags:r,seekable:!0,position:0,stream_ops:n.stream_ops,ungotten:[],error:!1});return l.stream_ops.open&&l.stream_ops.open(l),a&&ce.chmod(n,511&t),l},close(e){if(ce.isClosed(e))throw new ce.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(e){throw e}finally{ce.closeStream(e.fd)}e.fd=null},isClosed:e=>null===e.fd,llseek(e,r,t){if(ce.isClosed(e))throw new ce.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new ce.ErrnoError(70);if(0!=t&&1!=t&&2!=t)throw new ce.ErrnoError(28);return e.position=e.stream_ops.llseek(e,r,t),e.ungotten=[],e.position},read(e,r,t,n,o){if(n<0||o<0)throw new ce.ErrnoError(28);if(ce.isClosed(e))throw new ce.ErrnoError(8);if(1==(2097155&e.flags))throw new ce.ErrnoError(8);if(ce.isDir(e.node.mode))throw new ce.ErrnoError(31);if(!e.stream_ops.read)throw new ce.ErrnoError(28);var i=void 0!==o;if(i){if(!e.seekable)throw new ce.ErrnoError(70)}else o=e.position;var a=e.stream_ops.read(e,r,t,n,o);return i||(e.position+=a),a},write(e,r,t,n,o,i){if(n<0||o<0)throw new ce.ErrnoError(28);if(ce.isClosed(e))throw new ce.ErrnoError(8);if(!(2097155&e.flags))throw new ce.ErrnoError(8);if(ce.isDir(e.node.mode))throw new ce.ErrnoError(31);if(!e.stream_ops.write)throw new ce.ErrnoError(28);e.seekable&&1024&e.flags&&ce.llseek(e,0,2);var a=void 0!==o;if(a){if(!e.seekable)throw new ce.ErrnoError(70)}else o=e.position;var s=e.stream_ops.write(e,r,t,n,o,i);return a||(e.position+=s),s},mmap(e,r,t,n,o){if(2&n&&!(2&o)&&2!=(2097155&e.flags))throw new ce.ErrnoError(2);if(1==(2097155&e.flags))throw new ce.ErrnoError(2);if(!e.stream_ops.mmap)throw new ce.ErrnoError(43);if(!r)throw new ce.ErrnoError(28);return e.stream_ops.mmap(e,r,t,n,o)},msync:(e,r,t,n,o)=>e.stream_ops.msync?e.stream_ops.msync(e,r,t,n,o):0,ioctl(e,r,t){if(!e.stream_ops.ioctl)throw new ce.ErrnoError(59);return e.stream_ops.ioctl(e,r,t)},readFile(e,r={}){r.flags=r.flags||0,r.encoding=r.encoding||"binary","utf8"!==r.encoding&&"binary"!==r.encoding&&A(`Invalid encoding type "${r.encoding}"`);var t=ce.open(e,r.flags),n=ce.stat(e).size,o=new Uint8Array(n);return ce.read(t,o,0,n,0),"utf8"===r.encoding&&(o=K(o)),ce.close(t),o},writeFile(e,r,t={}){t.flags=t.flags||577;var n=ce.open(e,t.flags,t.mode);r=ie(r),ce.write(n,r,0,r.byteLength,void 0,t.canOwn),ce.close(n)},cwd:()=>ce.currentPath,chdir(e){var r=ce.lookupPath(e,{follow:!0});if(null===r.node)throw new ce.ErrnoError(44);if(!ce.isDir(r.node.mode))throw new ce.ErrnoError(54);var t=ce.nodePermissions(r.node,"x");if(t)throw new ce.ErrnoError(t);ce.currentPath=r.path},createDefaultDirectories(){ce.mkdir("/tmp"),ce.mkdir("/home"),ce.mkdir("/home/web_user")},createDefaultDevices(){ce.mkdir("/dev"),ce.registerDevice(ce.makedev(1,3),{read:()=>0,write:(e,r,t,n,o)=>n,llseek:()=>0}),ce.mkdev("/dev/null",ce.makedev(1,3)),re.register(ce.makedev(5,0),re.default_tty_ops),re.register(ce.makedev(6,0),re.default_tty1_ops),ce.mkdev("/dev/tty",ce.makedev(5,0)),ce.mkdev("/dev/tty1",ce.makedev(6,0));var e=new Uint8Array(1024),r=0,t=()=>(0===r&&(V(e),r=e.byteLength),e[--r]);ce.createDevice("/dev","random",t),ce.createDevice("/dev","urandom",t),ce.mkdir("/dev/shm"),ce.mkdir("/dev/shm/tmp")},createSpecialDirectories(){ce.mkdir("/proc");var e=ce.mkdir("/proc/self");ce.mkdir("/proc/self/fd"),ce.mount({mount(){var r=ce.createNode(e,"fd",16895,73);return r.stream_ops={llseek:oe.stream_ops.llseek},r.node_ops={lookup(e,r){var t=+r,n=ce.getStreamChecked(t),o={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>n.path},id:t+1};return o.parent=o,o},readdir:()=>Array.from(ce.streams.entries()).filter(([e,r])=>r).map(([e,r])=>e.toString())},r}},{},"/proc/self/fd")},createStandardStreams(e,r,t){e?ce.createDevice("/dev","stdin",e):ce.symlink("/dev/tty","/dev/stdin"),r?ce.createDevice("/dev","stdout",null,r):ce.symlink("/dev/tty","/dev/stdout"),t?ce.createDevice("/dev","stderr",null,t):ce.symlink("/dev/tty1","/dev/stderr"),ce.open("/dev/stdin",0),ce.open("/dev/stdout",1),ce.open("/dev/stderr",1)},staticInit(){ce.nameTable=new Array(4096),ce.mount(oe,{},"/"),ce.createDefaultDirectories(),ce.createDefaultDevices(),ce.createSpecialDirectories(),ce.filesystems={MEMFS:oe}},init(e,t,n){ce.initialized=!0,e??=r.stdin,t??=r.stdout,n??=r.stderr,ce.createStandardStreams(e,t,n)},quit(){for(var e of(ce.initialized=!1,ce.streams))e&&ce.close(e)},findObject(e,r){var t=ce.analyzePath(e,r);return t.exists?t.object:null},analyzePath(e,r){try{e=(n=ce.lookupPath(e,{follow:!r})).path}catch(e){}var t={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var n=ce.lookupPath(e,{parent:!0});t.parentExists=!0,t.parentPath=n.path,t.parentObject=n.node,t.name=X.basename(e),n=ce.lookupPath(e,{follow:!r}),t.exists=!0,t.path=n.path,t.object=n.node,t.name=n.node.name,t.isRoot="/"===n.path}catch(e){t.error=e.errno}return t},createPath(e,r,t,n){e="string"==typeof e?e:ce.getPath(e);for(var o=r.split("/").reverse();o.length;){var i=o.pop();if(i){var a=X.join2(e,i);try{ce.mkdir(a)}catch(e){if(20!=e.errno)throw e}e=a}}return a},createFile(e,r,t,n,o){var i=X.join2("string"==typeof e?e:ce.getPath(e),r),a=ae(n,o);return ce.create(i,a)},createDataFile(e,r,t,n,o,i){var a=r;e&&(e="string"==typeof e?e:ce.getPath(e),a=r?X.join2(e,r):e);var s=ae(n,o),l=ce.create(a,s);if(t){t=ie(t),ce.chmod(l,146|s);var _=ce.open(l,577);ce.write(_,t,0,t.length,0,i),ce.close(_),ce.chmod(l,s)}},createDevice(e,r,t,n){var o=X.join2("string"==typeof e?e:ce.getPath(e),r),i=ae(!!t,!!n);ce.createDevice.major??=64;var a=ce.makedev(ce.createDevice.major++,0);return ce.registerDevice(a,{open(e){e.seekable=!1},close(e){n?.buffer?.length&&n(10)},read(e,r,n,o,i){for(var a=0,s=0;s<o;s++){var l;try{l=t()}catch(e){throw new ce.ErrnoError(29)}if(void 0===l&&0===a)throw new ce.ErrnoError(6);if(null==l)break;a++,r[n+s]=l}return a&&(e.node.atime=Date.now()),a},write(e,r,t,o,i){for(var a=0;a<o;a++)try{n(r[t+a])}catch(e){throw new ce.ErrnoError(29)}return o&&(e.node.mtime=e.node.ctime=Date.now()),a}}),ce.mkdev(o,i,a)},forceLoadFile(e){if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if(globalThis.XMLHttpRequest)A("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 try{e.contents=i(e.url)}catch(e){throw new ce.ErrnoError(29)}},createLazyFile(e,r,t,o,i){class a{lengthKnown=!1;chunks=[];get(e){if(!(e>this.length-1||e<0)){var r=e%this.chunkSize,t=e/this.chunkSize|0;return this.getter(t)[r]}}setDataGetter(e){this.getter=e}cacheLength(){var e=new XMLHttpRequest;e.open("HEAD",t,!1),e.send(null),e.status>=200&&e.status<300||304===e.status||A("Couldn't load "+t+". Status: "+e.status);var r,n=Number(e.getResponseHeader("Content-length")),o=(r=e.getResponseHeader("Accept-Ranges"))&&"bytes"===r,i=(r=e.getResponseHeader("Content-Encoding"))&&"gzip"===r,a=1048576;o||(a=n);var s=this;s.setDataGetter(e=>{var r=e*a,o=(e+1)*a-1;return o=Math.min(o,n-1),void 0===s.chunks[e]&&(s.chunks[e]=((e,r)=>{e>r&&A("invalid range ("+e+", "+r+") or no bytes requested!"),r>n-1&&A("only "+n+" bytes available! programmer error!");var o=new XMLHttpRequest;return o.open("GET",t,!1),n!==a&&o.setRequestHeader("Range","bytes="+e+"-"+r),o.responseType="arraybuffer",o.overrideMimeType&&o.overrideMimeType("text/plain; charset=x-user-defined"),o.send(null),o.status>=200&&o.status<300||304===o.status||A("Couldn't load "+t+". Status: "+o.status),void 0!==o.response?new Uint8Array(o.response||[]):ee(o.responseText||"",!0)})(r,o)),void 0===s.chunks[e]&&A("doXHR failed!"),s.chunks[e]}),!i&&n||(a=n=1,n=this.getter(0).length,a=n,x("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=n,this._chunkSize=a,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){n||A("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var s={isDevice:!1,contents:new a}}else s={isDevice:!1,url:t};var l=ce.createFile(e,r,s,o,i);s.contents?l.contents=s.contents:s.url&&(l.contents=null,l.url=s.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var _={};for(const[e,r]of Object.entries(l.stream_ops))_[e]=(...e)=>(ce.forceLoadFile(l),r(...e));function u(e,r,t,n,o){var i=e.node.contents;if(o>=i.length)return 0;var a=Math.min(i.length-o,n);if(i.slice)for(var s=0;s<a;s++)r[t+s]=i[o+s];else for(s=0;s<a;s++)r[t+s]=i.get(o+s);return a}return _.read=(e,r,t,n,o)=>(ce.forceLoadFile(l),u(e,r,t,n,o)),_.mmap=(e,r,t,n,o)=>{ce.forceLoadFile(l);var i=ne(r);if(!i)throw new ce.ErrnoError(48);return u(e,b,i,r,t),{ptr:i,allocated:!0}},l.stream_ops=_,l}},de={calculateAt(e,r,t){if(X.isAbs(r))return r;var n;-100===e?n=ce.cwd():n=de.getStreamFromFD(e).path;if(0==r.length){if(!t)throw new ce.ErrnoError(44);return n}return n+"/"+r},writeStat(e,r){E[e>>2]=r.dev,E[e+4>>2]=r.mode,E[e+8>>2]=r.nlink,E[e+12>>2]=r.uid,E[e+16>>2]=r.gid,E[e+20>>2]=r.rdev,p=[r.size>>>0,(h=r.size,+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[e+24>>2]=p[0],w[e+28>>2]=p[1],w[e+32>>2]=4096,w[e+36>>2]=r.blocks;var t=r.atime.getTime(),n=r.mtime.getTime(),o=r.ctime.getTime();return p=[Math.floor(t/1e3)>>>0,(h=Math.floor(t/1e3),+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[e+40>>2]=p[0],w[e+44>>2]=p[1],E[e+48>>2]=t%1e3*1e3*1e3,p=[Math.floor(n/1e3)>>>0,(h=Math.floor(n/1e3),+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[e+56>>2]=p[0],w[e+60>>2]=p[1],E[e+64>>2]=n%1e3*1e3*1e3,p=[Math.floor(o/1e3)>>>0,(h=Math.floor(o/1e3),+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[e+72>>2]=p[0],w[e+76>>2]=p[1],E[e+80>>2]=o%1e3*1e3*1e3,p=[r.ino>>>0,(h=r.ino,+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[e+88>>2]=p[0],w[e+92>>2]=p[1],0},writeStatFs(e,r){E[e+4>>2]=r.bsize,E[e+60>>2]=r.bsize,p=[r.blocks>>>0,(h=r.blocks,+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[e+8>>2]=p[0],w[e+12>>2]=p[1],p=[r.bfree>>>0,(h=r.bfree,+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[e+16>>2]=p[0],w[e+20>>2]=p[1],p=[r.bavail>>>0,(h=r.bavail,+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[e+24>>2]=p[0],w[e+28>>2]=p[1],p=[r.files>>>0,(h=r.files,+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[e+32>>2]=p[0],w[e+36>>2]=p[1],p=[r.ffree>>>0,(h=r.ffree,+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[e+40>>2]=p[0],w[e+44>>2]=p[1],E[e+48>>2]=r.fsid,E[e+64>>2]=r.flags,E[e+56>>2]=r.namelen},doMsync(e,r,t,n,o){if(!ce.isFile(r.node.mode))throw new ce.ErrnoError(43);if(2&n)return 0;var i=k.slice(e,e+t);ce.msync(r,i,o,t,n)},getStreamFromFD:e=>ce.getStreamChecked(e),varargs:void 0,getStr:e=>G(e)};var fe=()=>{var e=w[+de.varargs>>2];return de.varargs+=4,e},me=fe;var he=(e,r)=>r+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*r:NaN;var pe=(e,r,t)=>Z(e,k,r,t);var ve=e=>E[e>>2]+4294967296*w[e+4>>2];var we=0,be=[0,31,60,91,121,152,182,213,244,274,305,335],ge=[0,31,59,90,120,151,181,212,243,273,304,334];var ye={},qe=e=>{if(e instanceof j||"unwind"==e)return c;s(0,e)},Ee=()=>B||we>0,ke=e=>{c=e,Ee()||(r.onExit?.(e),M=!0),s(0,new j(e))},xe=(e,r)=>{c=e,ke(e)},Se=xe,Me=e=>{if(!M)try{return e()}catch(e){qe(e)}finally{(()=>{if(!Ee())try{Se(c)}catch(e){qe(e)}})()}},De=()=>performance.now(),Fe=e=>{var r=(e-Be.buffer.byteLength+65535)/65536|0;try{return Be.grow(r),F(),1}catch(e){}},Ae={},Ce=()=>{if(!Ce.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(globalThis.navigator?.language??"C").replace("-","_")+".UTF-8",_:a||"./this.program"};for(var r in Ae)void 0===Ae[r]?delete e[r]:e[r]=Ae[r];var t=[];for(var r in e)t.push(`${r}=${e[r]}`);Ce.strings=t}return Ce.strings};var Pe=function(){const e="object"==typeof Asyncify?Asyncify.handleAsync.bind(Asyncify):null;r.handleAsync=e;const t=new Map;r.setCallback=(e,r)=>t.set(e,r),r.getCallback=e=>t.get(e),r.deleteCallback=e=>t.delete(e),Pe=function(r,n,...o){const i=t.get(n);let a=null;const s="function"==typeof i?i:i[a=G(o.shift())];if(r){if(e)return e(()=>s.apply(i,o));throw new Error("Synchronous WebAssembly cannot call async function")}const l=s.apply(i,o);if("function"==typeof l?.then)throw console.error("unexpected Promise",s),new Error(`${a} unexpectedly returned a Promise`);return l}};var Te,je,ze,Re,Ne,Oe,Le,Ue,Be,Ie,$e=e=>Ie.get(e),He=e=>(Te||(Te=new WeakMap,((e,r)=>{if(Te)for(var t=e;t<e+r;t++){var n=$e(t);n&&Te.set(n,t)}})(0,Ie.length)),Te.get(e)||0),We=[],Ge=(e,r)=>Ie.set(e,r),Xe=e=>{const r=e.length;return[r%128|128,r>>7,...e]},Ve={i:127,p:127,j:126,f:125,d:124,e:111},Ye=e=>Xe(Array.from(e,e=>Ve[e])),Ke=e=>r["_"+e],Je=(e,r)=>{b.set(e,r)},Qe=e=>Le(e),Ze=(e,r,t,n,o)=>{var i={string:e=>{var r=0;return null!=e&&0!==e&&(r=(e=>{var r=Q(e)+1,t=Qe(r);return pe(e,t,r),t})(e)),r},array:e=>{var r=Qe(e.length);return Je(e,r),r}};var a=Ke(e),s=[],l=0;if(n)for(var _=0;_<n.length;_++){var u=i[t[_]];u?(0===l&&(l=$()),s[_]=u(n[_])):s[_]=n[_]}var c=a(...s);return c=function(e){return 0!==l&&Oe(l),function(e){return"string"===r?G(e):"boolean"===r?Boolean(e):e}(e)}(c)},er=e=>Ne(),rr=new TextDecoder("utf-16le"),tr=er;if(ce.createPreloadedFile=(e,r,t,n,o,i,a,s,l,_)=>{ue(e,r,t,n,o,s,l,_).then(i).catch(a)},ce.preloadFile=ue,ce.staticInit(),Pe(),r.noExitRuntime&&(B=r.noExitRuntime),r.preloadPlugins&&(_e=r.preloadPlugins),r.print&&(x=r.print),r.printErr&&(S=r.printErr),r.wasmBinary&&(u=r.wasmBinary),r.arguments&&r.arguments,r.thisProgram&&(a=r.thisProgram),r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.shift()();r.getTempRet0=er,r.ccall=Ze,r.cwrap=(e,r,t,n)=>{var o=!t||t.every(e=>"number"===e||"boolean"===e);return"string"!==r&&o&&!n?Ke(e):(...n)=>Ze(e,r,t,n)},r.addFunction=(e,r)=>{var t=He(e);if(t)return t;var n=We.length?We.pop():Ie.grow(1);try{Ge(n,e)}catch(t){if(!(t instanceof TypeError))throw t;var o=((e,r)=>{var t=Uint8Array.of(0,97,115,109,1,0,0,0,1,...Xe([1,96,...Ye(r.slice(1)),...Ye("v"===r[0]?"":r[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),n=new WebAssembly.Module(t);return new WebAssembly.Instance(n,{e:{f:e}}).exports.f})(e,r);Ge(n,o)}return Te.set(e,n),n},r.setValue=I,r.getValue=U,r.UTF8ToString=G,r.stringToUTF8=pe,r.lengthBytesUTF8=Q,r.intArrayFromString=ee,r.intArrayToString=e=>{for(var r=[],t=0;t<e.length;t++){var n=e[t];n>255&&(n&=255),r.push(String.fromCharCode(n))}return r.join("")},r.AsciiToString=e=>{for(var r="";;){var t=k[e++];if(!t)return r;r+=String.fromCharCode(t)}},r.UTF16ToString=(e,r,t)=>{var n=e>>1,o=W(q,n,r/2,t);return rr.decode(q.subarray(n,o))},r.stringToUTF16=(e,r,t)=>{if(t??=2147483647,t<2)return 0;for(var n=r,o=(t-=2)<2*e.length?t/2:e.length,i=0;i<o;++i){var a=e.charCodeAt(i);v[r>>1]=a,r+=2}return v[r>>1]=0,r-n},r.UTF32ToString=(e,r,t)=>{for(var n="",o=e>>2,i=0;!(i>=r/4);i++){var a=E[o+i];if(!a&&!t)break;n+=String.fromCodePoint(a)}return n},r.stringToUTF32=(e,r,t)=>{if(t??=2147483647,t<4)return 0;for(var n=r,o=n+t-4,i=0;i<e.length;++i){var a=e.codePointAt(i);if(a>65535&&i++,w[r>>2]=a,(r+=4)+4>o)break}return w[r>>2]=0,r-n},r.writeArrayToMemory=Je,r._getTempRet0=tr;var nr,or={a:(e,r,t,n)=>A(`Assertion failed: ${G(e)}, at: `+[r?G(r):"unknown filename",t,n?G(n):"unknown function"]),aa:function(e,r){try{return e=de.getStr(e),ce.chmod(e,r),0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},ca:function(e,r,t,n){try{if(r=de.getStr(r),r=de.calculateAt(e,r),-8&t)return-28;var o=ce.lookupPath(r,{follow:!0}).node;if(!o)return-44;var i="";return 4&t&&(i+="r"),2&t&&(i+="w"),1&t&&(i+="x"),i&&ce.nodePermissions(o,i)?-2:0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},ba:function(e,r){try{return ce.fchmod(e,r),0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},$:function(e,r,t){try{return ce.fchown(e,r,t),0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},b:function(e,r,t){de.varargs=t;try{var n=de.getStreamFromFD(e);switch(r){case 0:if((o=fe())<0)return-28;for(;ce.streams[o];)o++;return ce.dupStream(n,o).fd;case 1:case 2:case 13:case 14:return 0;case 3:return n.flags;case 4:var o=fe();return n.flags|=o,0;case 12:o=me();return v[o+0>>1]=2,0}return-28}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},_:function(e,r){try{return de.writeStat(r,ce.fstat(e))}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},y:function(e,r,t){var n=he(r,t);try{return isNaN(n)?-61:(ce.ftruncate(e,n),0)}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},U:function(e,r){try{if(0===r)return-28;var t=ce.cwd(),n=Q(t)+1;return r<n?-68:(pe(t,e,r),n)}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},Y:function(e,r){try{return e=de.getStr(e),de.writeStat(r,ce.lstat(e))}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},Q:function(e,r,t){try{return r=de.getStr(r),r=de.calculateAt(e,r),ce.mkdir(r,t,0),0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},W:function(e,r,t,n){try{r=de.getStr(r);var o=256&n,i=4096&n;return n&=-6401,r=de.calculateAt(e,r,i),de.writeStat(t,o?ce.lstat(r):ce.stat(r))}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},O:function(e,r,t,n){de.varargs=n;try{r=de.getStr(r),r=de.calculateAt(e,r);var o=n?fe():0;return ce.open(r,t,o).fd}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},K:function(e,r,t,n){try{if(r=de.getStr(r),r=de.calculateAt(e,r),n<=0)return-28;var o=ce.readlink(r),i=Math.min(n,Q(o)),a=b[t+i];return pe(o,t,n+1),b[t+i]=a,i}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},J:function(e){try{return e=de.getStr(e),ce.rmdir(e),0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},Z:function(e,r){try{return e=de.getStr(e),de.writeStat(r,ce.stat(e))}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},H:function(e,r,t){try{if(r=de.getStr(r),r=de.calculateAt(e,r),t){if(512!==t)return-28;ce.rmdir(r)}else ce.unlink(r);return 0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},G:function(e,r,t,n){try{r=de.getStr(r),r=de.calculateAt(e,r,!0);var o,i,a=Date.now();if(t){var s=ve(t),l=w[t+8>>2];o=1073741823==l?a:1073741822==l?null:1e3*s+l/1e6,s=ve(t+=16),i=1073741823==(l=w[t+8>>2])?a:1073741822==l?null:1e3*s+l/1e6}else o=a,i=a;return null!==(i??o)&&ce.utime(r,o,i),0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},ea:()=>A(""),N:()=>{B=!1,we=0},w:function(e,r,t){var n=he(e,r),o=new Date(1e3*n);w[t>>2]=o.getSeconds(),w[t+4>>2]=o.getMinutes(),w[t+8>>2]=o.getHours(),w[t+12>>2]=o.getDate(),w[t+16>>2]=o.getMonth(),w[t+20>>2]=o.getFullYear()-1900,w[t+24>>2]=o.getDay();var i=0|(e=>{var r;return((r=e.getFullYear())%4!=0||r%100==0&&r%400!=0?ge:be)[e.getMonth()]+e.getDate()-1})(o);w[t+28>>2]=i,w[t+36>>2]=-60*o.getTimezoneOffset();var a=new Date(o.getFullYear(),0,1),s=new Date(o.getFullYear(),6,1).getTimezoneOffset(),l=a.getTimezoneOffset(),_=0|(s!=l&&o.getTimezoneOffset()==Math.min(l,s));w[t+32>>2]=_},u:function(e,r,t,n,o,i,a,s){var l=he(o,i);try{var _=de.getStreamFromFD(n),u=ce.mmap(_,e,l,r,t),c=u.ptr;return w[a>>2]=u.allocated,E[s>>2]=c,0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},v:function(e,r,t,n,o,i,a){var s=he(i,a);try{var l=de.getStreamFromFD(o);2&t&&de.doMsync(e,l,r,n,s)}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return-e.errno}},D:(e,r)=>{if(ye[e]&&(clearTimeout(ye[e].id),delete ye[e]),!r)return 0;var t=setTimeout(()=>{delete ye[e],Me(()=>Re(e,De()))},r);return ye[e]={id:t,timeout_ms:r},0},P:(e,r,t,n)=>{var o=(new Date).getFullYear(),i=new Date(o,0,1),a=new Date(o,6,1),s=i.getTimezoneOffset(),l=a.getTimezoneOffset(),_=Math.max(s,l);E[e>>2]=60*_,w[r>>2]=Number(s!=l);var u=e=>{var r=e>=0?"-":"+",t=Math.abs(e);return`UTC${r}${String(Math.floor(t/60)).padStart(2,"0")}${String(t%60).padStart(2,"0")}`},c=u(s),d=u(l);l<s?(pe(c,t,17),pe(d,n,17)):(pe(c,n,17),pe(d,t,17))},n:()=>Date.now(),g:De,E:e=>{var r=k.length,t=2147483648;if((e>>>=0)>t)return!1;for(var n=1;n<=4;n*=2){var o=r*(1+.2/n);o=Math.min(o,e+100663296);var i=Math.min(t,te(Math.max(e,o),65536));if(Fe(i))return!0}return!1},R:(e,r)=>{var t=0,n=0;for(var o of Ce()){var i=r+t;E[e+n>>2]=i,t+=pe(o,i,1/0)+1,n+=4}return 0},S:(e,r)=>{var t=Ce();E[e>>2]=t.length;var n=0;for(var o of t)n+=Q(o)+1;return E[r>>2]=n,0},o:function(e){try{var r=de.getStreamFromFD(e);return ce.close(r),0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return e.errno}},F:function(e,r){try{var t=de.getStreamFromFD(e),n=t.tty?2:ce.isDir(t.mode)?3:ce.isLink(t.mode)?7:4;return b[r]=n,v[r+2>>1]=0,p=[0,(h=0,+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[r+8>>2]=p[0],w[r+12>>2]=p[1],p=[0,(h=0,+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[r+16>>2]=p[0],w[r+20>>2]=p[1],0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return e.errno}},L:function(e,r,t,n){try{var o=((e,r,t,n)=>{for(var o=0,i=0;i<t;i++){var a=E[r>>2],s=E[r+4>>2];r+=8;var l=ce.read(e,b,a,s,n);if(l<0)return-1;if(o+=l,l<s)break}return o})(de.getStreamFromFD(e),r,t);return E[n>>2]=o,0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return e.errno}},x:function(e,r,t,n,o){var i=he(r,t);try{if(isNaN(i))return 61;var a=de.getStreamFromFD(e);return ce.llseek(a,i,n),p=[a.position>>>0,(h=a.position,+Math.abs(h)>=1?h>0?+Math.floor(h/4294967296)>>>0:~~+Math.ceil((h-+(~~h>>>0))/4294967296)>>>0:0)],w[o>>2]=p[0],w[o+4>>2]=p[1],a.getdents&&0===i&&0===n&&(a.getdents=null),0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return e.errno}},V:function(e){try{var r=de.getStreamFromFD(e),t=r.stream_ops?.fsync?.(r);return t}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return e.errno}},I:function(e,r,t,n){try{var o=((e,r,t,n)=>{for(var o=0,i=0;i<t;i++){var a=E[r>>2],s=E[r+4>>2];r+=8;var l=ce.write(e,b,a,s,n);if(l<0)return-1;if(o+=l,l<s)break}return o})(de.getStreamFromFD(e),r,t);return E[n>>2]=o,0}catch(e){if(void 0===ce||"ErrnoError"!==e.name)throw e;return e.errno}},s:function(...e){return Pe(!1,...e)},t:function(...e){return Pe(!0,...e)},la:function(...e){return Pe(!1,...e)},pa:function(...e){return Pe(!0,...e)},j:function(...e){return Pe(!1,...e)},k:function(...e){return Pe(!0,...e)},c:function(...e){return Pe(!1,...e)},d:function(...e){return Pe(!0,...e)},ha:function(...e){return Pe(!1,...e)},ia:function(...e){return Pe(!0,...e)},ja:function(...e){return Pe(!1,...e)},ka:function(...e){return Pe(!0,...e)},h:function(...e){return Pe(!1,...e)},i:function(...e){return Pe(!0,...e)},z:function(...e){return Pe(!1,...e)},A:function(...e){return Pe(!0,...e)},e:function(...e){return Pe(!1,...e)},f:function(...e){return Pe(!0,...e)},fa:function(...e){return Pe(!1,...e)},ga:function(...e){return Pe(!0,...e)},B:function(...e){return Pe(!1,...e)},C:function(...e){return Pe(!0,...e)},p:function(...e){return Pe(!1,...e)},q:function(...e){return Pe(!0,...e)},ma:function(...e){return Pe(!1,...e)},na:function(...e){return Pe(!0,...e)},M:ke,T:(e,r)=>V(k.subarray(e,e+r)),oa:function(...e){return Pe(!1,...e)},r:function(...e){return Pe(!0,...e)},l:function(...e){return Pe(!1,...e)},m:function(...e){return Pe(!0,...e)},X:function(...e){return Pe(!1,...e)},da:function(...e){return Pe(!0,...e)}};return nr=await async function(){function e(e,t){return function(e){r._powersync_init_static=e.sa,r._sqlite3_status64=e.ta,r._sqlite3_status=e.ua,r._sqlite3_msize=e.va,r._sqlite3_db_status=e.wa,r._sqlite3_vfs_find=e.xa,r._sqlite3_vfs_register=e.ya,r._sqlite3_vfs_unregister=e.za,r._sqlite3_release_memory=e.Aa,r._sqlite3_soft_heap_limit64=e.Ba,r._sqlite3_memory_used=e.Ca,r._sqlite3_hard_heap_limit64=e.Da,r._sqlite3_memory_highwater=e.Ea,r._sqlite3_malloc=e.Fa,r._sqlite3_malloc64=e.Ga,r._sqlite3_free=e.Ha,r._sqlite3_realloc=e.Ia,r._sqlite3_realloc64=e.Ja,r._sqlite3_str_vappendf=e.Ka,r._sqlite3_str_append=e.La,r._sqlite3_str_appendchar=e.Ma,r._sqlite3_str_appendall=e.Na,r._sqlite3_str_appendf=e.Oa,r._sqlite3_str_finish=e.Pa,r._sqlite3_str_errcode=e.Qa,r._sqlite3_str_length=e.Ra,r._sqlite3_str_value=e.Sa,r._sqlite3_str_reset=e.Ta,r._sqlite3_str_new=e.Ua,r._sqlite3_vmprintf=e.Va,r._sqlite3_mprintf=e.Wa,r._sqlite3_vsnprintf=e.Xa,r._sqlite3_snprintf=e.Ya,r._sqlite3_log=e.Za,r._sqlite3_randomness=e._a,r._sqlite3_stricmp=e.$a,r._sqlite3_strnicmp=e.ab,r._sqlite3_os_init=e.bb,r._sqlite3_os_end=e.cb,r._sqlite3_serialize=e.db,r._sqlite3_prepare_v2=e.eb,r._sqlite3_step=e.fb,r._sqlite3_column_int64=e.gb,r._sqlite3_reset=e.hb,r._sqlite3_exec=e.ib,r._sqlite3_column_int=e.jb,r._sqlite3_finalize=e.kb,r._sqlite3_deserialize=e.lb,r._sqlite3_database_file_object=e.mb,r._sqlite3_backup_init=e.nb,r._sqlite3_backup_step=e.ob,r._sqlite3_backup_finish=e.pb,r._sqlite3_backup_remaining=e.qb,r._sqlite3_backup_pagecount=e.rb,r._sqlite3_clear_bindings=e.sb,r._sqlite3_value_blob=e.tb,r._sqlite3_value_text=e.ub,r._sqlite3_value_bytes=e.vb,r._sqlite3_value_bytes16=e.wb,r._sqlite3_value_double=e.xb,r._sqlite3_value_int=e.yb,r._sqlite3_value_int64=e.zb,r._sqlite3_value_subtype=e.Ab,r._sqlite3_value_pointer=e.Bb,r._sqlite3_value_text16=e.Cb,r._sqlite3_value_text16be=e.Db,r._sqlite3_value_text16le=e.Eb,r._sqlite3_value_type=e.Fb,r._sqlite3_value_encoding=e.Gb,r._sqlite3_value_nochange=e.Hb,r._sqlite3_value_frombind=e.Ib,r._sqlite3_value_dup=e.Jb,r._sqlite3_value_free=e.Kb,r._sqlite3_result_blob=e.Lb,r._sqlite3_result_blob64=e.Mb,r._sqlite3_result_double=e.Nb,r._sqlite3_result_error=e.Ob,r._sqlite3_result_error16=e.Pb,r._sqlite3_result_int=e.Qb,r._sqlite3_result_int64=e.Rb,r._sqlite3_result_null=e.Sb,r._sqlite3_result_pointer=e.Tb,r._sqlite3_result_subtype=e.Ub,r._sqlite3_result_text=e.Vb,r._sqlite3_result_text64=e.Wb,r._sqlite3_result_text16=e.Xb,r._sqlite3_result_text16be=e.Yb,r._sqlite3_result_text16le=e.Zb,r._sqlite3_result_value=e._b,r._sqlite3_result_error_toobig=e.$b,r._sqlite3_result_zeroblob=e.ac,r._sqlite3_result_zeroblob64=e.bc,r._sqlite3_result_error_code=e.cc,r._sqlite3_result_error_nomem=e.dc,r._sqlite3_user_data=e.ec,r._sqlite3_context_db_handle=e.fc,r._sqlite3_vtab_nochange=e.gc,r._sqlite3_vtab_in_first=e.hc,r._sqlite3_vtab_in_next=e.ic,r._sqlite3_aggregate_context=e.jc,r._sqlite3_get_auxdata=e.kc,r._sqlite3_set_auxdata=e.lc,r._sqlite3_column_count=e.mc,r._sqlite3_data_count=e.nc,r._sqlite3_column_blob=e.oc,r._sqlite3_column_bytes=e.pc,r._sqlite3_column_bytes16=e.qc,r._sqlite3_column_double=e.rc,r._sqlite3_column_text=e.sc,r._sqlite3_column_value=e.tc,r._sqlite3_column_text16=e.uc,r._sqlite3_column_type=e.vc,r._sqlite3_column_name=e.wc,r._sqlite3_column_name16=e.xc,r._sqlite3_bind_blob=e.yc,r._sqlite3_bind_blob64=e.zc,r._sqlite3_bind_double=e.Ac,r._sqlite3_bind_int=e.Bc,r._sqlite3_bind_int64=e.Cc,r._sqlite3_bind_null=e.Dc,r._sqlite3_bind_pointer=e.Ec,r._sqlite3_bind_text=e.Fc,r._sqlite3_bind_text64=e.Gc,r._sqlite3_bind_text16=e.Hc,r._sqlite3_bind_value=e.Ic,r._sqlite3_bind_zeroblob=e.Jc,r._sqlite3_bind_zeroblob64=e.Kc,r._sqlite3_bind_parameter_count=e.Lc,r._sqlite3_bind_parameter_name=e.Mc,r._sqlite3_bind_parameter_index=e.Nc,r._sqlite3_db_handle=e.Oc,r._sqlite3_stmt_readonly=e.Pc,r._sqlite3_stmt_isexplain=e.Qc,r._sqlite3_stmt_explain=e.Rc,r._sqlite3_stmt_busy=e.Sc,r._sqlite3_next_stmt=e.Tc,r._sqlite3_stmt_status=e.Uc,r._sqlite3_sql=e.Vc,r._sqlite3_expanded_sql=e.Wc,r._sqlite3_value_numeric_type=e.Xc,r._sqlite3_blob_open=e.Yc,r._sqlite3_blob_close=e.Zc,r._sqlite3_blob_read=e._c,r._sqlite3_blob_write=e.$c,r._sqlite3_blob_bytes=e.ad,r._sqlite3_blob_reopen=e.bd,r._sqlite3_set_authorizer=e.cd,r._sqlite3_strglob=e.dd,r._sqlite3_strlike=e.ed,r._sqlite3_errmsg=e.fd,r._sqlite3_load_extension=e.gd,r._sqlite3_enable_load_extension=e.hd,r._sqlite3_auto_extension=e.id,r._sqlite3_cancel_auto_extension=e.jd,r._sqlite3_reset_auto_extension=e.kd,r._sqlite3_prepare=e.ld,r._sqlite3_prepare_v3=e.md,r._sqlite3_prepare16=e.nd,r._sqlite3_prepare16_v2=e.od,r._sqlite3_prepare16_v3=e.pd,r._sqlite3_get_table=e.qd,r._sqlite3_free_table=e.rd,r._sqlite3_create_module=e.sd,r._sqlite3_create_module_v2=e.td,r._sqlite3_drop_modules=e.ud,r._sqlite3_declare_vtab=e.vd,r._sqlite3_vtab_on_conflict=e.wd,r._sqlite3_vtab_config=e.xd,r._sqlite3_vtab_collation=e.yd,r._sqlite3_vtab_in=e.zd,r._sqlite3_vtab_rhs_value=e.Ad,r._sqlite3_vtab_distinct=e.Bd,r._sqlite3_keyword_name=e.Cd,r._sqlite3_keyword_count=e.Dd,r._sqlite3_keyword_check=e.Ed,r._sqlite3_complete=e.Fd,r._sqlite3_complete16=e.Gd,r._sqlite3_libversion=e.Hd,r._sqlite3_libversion_number=e.Id,r._sqlite3_threadsafe=e.Jd,r._sqlite3_initialize=e.Kd,r._sqlite3_shutdown=e.Ld,r._sqlite3_config=e.Md,r._sqlite3_db_mutex=e.Nd,r._sqlite3_db_release_memory=e.Od,r._sqlite3_db_cacheflush=e.Pd,r._sqlite3_db_config=e.Qd,r._sqlite3_last_insert_rowid=e.Rd,r._sqlite3_set_last_insert_rowid=e.Sd,r._sqlite3_changes64=e.Td,r._sqlite3_changes=e.Ud,r._sqlite3_total_changes64=e.Vd,r._sqlite3_total_changes=e.Wd,r._sqlite3_txn_state=e.Xd,r._sqlite3_close=e.Yd,r._sqlite3_close_v2=e.Zd,r._sqlite3_busy_handler=e._d,r._sqlite3_progress_handler=e.$d,r._sqlite3_busy_timeout=e.ae,r._sqlite3_interrupt=e.be,r._sqlite3_is_interrupted=e.ce,r._sqlite3_create_function=e.de,r._sqlite3_create_function_v2=e.ee,r._sqlite3_create_window_function=e.fe,r._sqlite3_create_function16=e.ge,r._sqlite3_overload_function=e.he,r._sqlite3_trace_v2=e.ie,r._sqlite3_commit_hook=e.je,r._sqlite3_update_hook=e.ke,r._sqlite3_rollback_hook=e.le,r._sqlite3_autovacuum_pages=e.me,r._sqlite3_wal_autocheckpoint=e.ne,r._sqlite3_wal_hook=e.oe,r._sqlite3_wal_checkpoint_v2=e.pe,r._sqlite3_wal_checkpoint=e.qe,r._sqlite3_error_offset=e.re,r._sqlite3_errmsg16=e.se,r._sqlite3_errcode=e.te,r._sqlite3_extended_errcode=e.ue,r._sqlite3_system_errno=e.ve,r._sqlite3_errstr=e.we,r._sqlite3_limit=e.xe,r._sqlite3_open=e.ye,r._sqlite3_open_v2=e.ze,r._sqlite3_open16=e.Ae,r._sqlite3_create_collation=e.Be,r._sqlite3_create_collation_v2=e.Ce,r._sqlite3_create_collation16=e.De,r._sqlite3_collation_needed=e.Ee,r._sqlite3_collation_needed16=e.Fe,r._sqlite3_get_clientdata=e.Ge,r._sqlite3_set_clientdata=e.He,r._sqlite3_get_autocommit=e.Ie,r._sqlite3_table_column_metadata=e.Je,r._sqlite3_sleep=e.Ke,r._sqlite3_extended_result_codes=e.Le,r._sqlite3_file_control=e.Me,r._sqlite3_test_control=e.Ne,r._sqlite3_create_filename=e.Oe,r._sqlite3_free_filename=e.Pe,r._sqlite3_uri_parameter=e.Qe,r._sqlite3_uri_key=e.Re,r._sqlite3_uri_boolean=e.Se,r._sqlite3_uri_int64=e.Te,r._sqlite3_filename_database=e.Ue,r._sqlite3_filename_journal=e.Ve,r._sqlite3_filename_wal=e.We,r._sqlite3_db_name=e.Xe,r._sqlite3_db_filename=e.Ye,r._sqlite3_db_readonly=e.Ze,r._sqlite3_compileoption_used=e._e,r._sqlite3_compileoption_get=e.$e,r._sqlite3_sourceid=e.af,r._sqlite3mc_config=e.bf,r._sqlite3mc_cipher_count=e.cf,r._sqlite3mc_cipher_index=e.df,r._sqlite3mc_cipher_name=e.ef,r._sqlite3mc_config_cipher=e.ff,r._sqlite3mc_vfs_create=e.gf,r._memcmp=e.hf,r._malloc=e.jf,r._free=e.kf,r._memset=e.lf,r._RegisterExtensionFunctions=e.nf,r._getSqliteFree=e.of,je=r._main=e.pf,r._libauthorizer_set_authorizer=e.qf,r._libfunction_create_function=e.rf,r._libhook_commit_hook=e.sf,r._libhook_update_hook=e.tf,r._libprogress_progress_handler=e.uf,r._libvfs_vfs_register=e.vf,r._memcpy=e.wf,ze=e.yf,Re=e.zf,Ne=e.Af,Oe=e.Bf,Le=e.Cf,Ue=e.Df,e.dynCall_viiiij,e.dynCall_vijii,e.dynCall_iiiij,e.dynCall_viji,e.dynCall_iij,e.dynCall_iijii,e.dynCall_iiji,e.dynCall_iiiiiij,e.dynCall_iiij,e.dynCall_jii,e.dynCall_ji,e.dynCall_vij,e.dynCall_iiiiijii,e.dynCall_j,e.dynCall_jj,e.dynCall_jiij,e.dynCall_iiiiji,e.dynCall_iiiijii,e.dynCall_ij,e.dynCall_viiji,e.dynCall_viijii,e.dynCall_iiiijji,Be=e.qa,r._sqlite3_version=e.mf.value,Ie=e.xf}(nr=e.exports),F(),nr}var t={a:or};return r.instantiateWasm?new Promise((n,o)=>{r.instantiateWasm(t,(r,t)=>{n(e(r))})}):(m??=C(),function(r){return e(r.instance)}(await T(u,m,t)))}(),function e(){function t(){(r.calledRun=!0,M)||(D=!0,r.noFSInit||ce.initialized||ce.init(),nr.ra(),ce.ignorePermissions=!1,d?.(r),r.onRuntimeInitialized?.(),r.noInitialRun||!1||function(){var e=je;try{var r=e(0,0);return xe(r),r}catch(e){return qe(e)}}(),function(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)N(r.postRun.shift());z(R)}())}se>0?le=e:(!function(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;)L(r.preRun.shift());z(O)}(),se>0?le=e:r.setStatus?(r.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>r.setStatus(""),1),t()},1)):t())}(),function(){const e=Object.getPrototypeOf(async function(){}).constructor;let t=0;r.set_authorizer=function(n,o,i){t&&(r.deleteCallback(t),r._sqlite3_free(t),t=0),t=r._sqlite3_malloc(4),I(t,o instanceof e?1:0,"i32");const a=Ze("libauthorizer_set_authorizer","number",["number","number","number"],[n,o?1:0,t]);return!a&&o&&r.setCallback(t,(e,r,t,n,a,s)=>o(i,r,t,n,a,s)),a}}(),function(){const e=Object.getPrototypeOf(async function(){}).constructor,t=["xFunc","xStep","xFinal"],n=new Map;r.create_function=function(o,i,a,s,l,_,u,c){const d=r._sqlite3_malloc(4),f={xFunc:_,xStep:u,xFinal:c};I(d,t.reduce((r,t,n)=>f[t]instanceof e?r|1<<n:r,0),"i32");const m=Ze("libfunction_create_function","number",["number","string","number","number","number","number","number","number"],[o,i,a,s,d,_?1:0,u?1:0,c?1:0]);if(!m){if(n.has(i)){const e=n.get(i);r.deleteCallback(e)}n.set(i,d),r.setCallback(d,{xFunc:_,xStep:u,xFinal:c})}return m}}(),function(){const e=Object.getPrototypeOf(async function(){}).constructor;let t=0;r.update_hook=function(n,o){t&&(r.deleteCallback(t),r._sqlite3_free(t),t=0),t=r._sqlite3_malloc(4),I(t,o instanceof e?1:0,"i32"),Ze("libhook_update_hook","void",["number","number","number"],[n,o?1:0,t]),o&&r.setCallback(t,(e,r,t,n,i,a)=>o(r,t,n,i,a))}}(),function(){const e=Object.getPrototypeOf(async function(){}).constructor;let t=0;r.commit_hook=function(n,o){t&&(r.deleteCallback(t),r._sqlite3_free(t),t=0),t=r._sqlite3_malloc(4),I(t,o instanceof e?1:0,"i32"),Ze("libhook_commit_hook","void",["number","number","number"],[n,o?1:0,t]),o&&r.setCallback(t,e=>o())}}(),function(){const e=Object.getPrototypeOf(async function(){}).constructor;let t=0;r.progress_handler=function(n,o,i,a){t&&(r.deleteCallback(t),r._sqlite3_free(t),t=0),t=r._sqlite3_malloc(4),I(t,i instanceof e?1:0,"i32"),Ze("libprogress_progress_handler","number",["number","number","number","number"],[n,o,i?1:0,t]),i&&r.setCallback(t,e=>i(a))}}(),function(){const e=["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"],t=new Map;r.vfs_register=function(n,o){let i=0,a=0;e.forEach((e,r)=>{n[e]&&(i|=1<<r,n.hasAsyncMethod(e)&&(a|=1<<r))});const s=r._sqlite3_malloc(4);try{const e=Ze("libvfs_vfs_register","number",["string","number","number","number","number","number"],[n.name,n.mxPathname,i,a,o?1:0,s]);if(!e){if(t.has(n.name)){const e=t.get(n.name);r.deleteCallback(e)}const e=U(s,"*");t.set(n.name,e),r.setCallback(e,n)}return e}finally{r._sqlite3_free(s)}}}(),D?r:new Promise((e,r)=>{d=e,f=r})}export{e as default};
2
- //# sourceMappingURL=mc-wa-sqlite-DiBqIVE5.js.map