@lotsa/verdant-js 0.7.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.
- package/LICENSE +373 -0
- package/README.md +39 -0
- package/package.json +54 -0
- package/pkg/index.d.ts +152 -0
- package/pkg/index.js +332 -0
- package/pkg/verdant-js.d.ts +28 -0
- package/pkg/verdant-js.js +2 -0
- package/pkg/verdant_js.wasm +0 -0
- package/src/index.ts +392 -0
package/pkg/index.js
ADDED
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import initModule from './verdant-js.js';
|
|
11
|
+
const PTR_SIZE = Float32Array.BYTES_PER_ELEMENT;
|
|
12
|
+
let Module = null;
|
|
13
|
+
/**
|
|
14
|
+
* Defines how to style highlight captures.
|
|
15
|
+
*
|
|
16
|
+
* Mirrors {@link https://rubixdev.github.io/syntastica/syntastica/theme/struct.ResolvedTheme.html | this Rust definition}.
|
|
17
|
+
*/
|
|
18
|
+
export class Theme {
|
|
19
|
+
constructor(styles) {
|
|
20
|
+
this.styles = styles;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The default foreground color, if the theme defines one.
|
|
24
|
+
*/
|
|
25
|
+
get fg() {
|
|
26
|
+
var _a;
|
|
27
|
+
return ((_a = this.styles['_normal']) === null || _a === void 0 ? void 0 : _a.color) || null;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The default background color, if the theme defines one.
|
|
31
|
+
*/
|
|
32
|
+
get bg() {
|
|
33
|
+
var _a;
|
|
34
|
+
return ((_a = this.styles['_normal']) === null || _a === void 0 ? void 0 : _a.bg) || null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Retreives the style map for a {@link BuiltinTheme}.
|
|
38
|
+
*/
|
|
39
|
+
static fromBuiltin(theme) {
|
|
40
|
+
checkModule();
|
|
41
|
+
const errmsgPtr = Module._malloc(PTR_SIZE);
|
|
42
|
+
const themePtr = Module.stringToNewUTF8(theme);
|
|
43
|
+
const resultPtr = Module._get_builtin_theme(errmsgPtr, themePtr);
|
|
44
|
+
if (resultPtr === 0) {
|
|
45
|
+
const errPtr = Module.getValue(errmsgPtr, 'i8*');
|
|
46
|
+
const err = Module.UTF8ToString(errPtr);
|
|
47
|
+
Module._free(errPtr);
|
|
48
|
+
Module._free(errmsgPtr);
|
|
49
|
+
Module._free(themePtr);
|
|
50
|
+
Module._free(resultPtr);
|
|
51
|
+
throw new Error(err);
|
|
52
|
+
}
|
|
53
|
+
const result = JSON.parse(Module.UTF8ToString(resultPtr));
|
|
54
|
+
Module._free(errmsgPtr);
|
|
55
|
+
Module._free(themePtr);
|
|
56
|
+
Module._free(resultPtr);
|
|
57
|
+
return new Theme(result);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Initialize the Wasm module.
|
|
62
|
+
*
|
|
63
|
+
* This function _must_ be called before any of the others
|
|
64
|
+
*/
|
|
65
|
+
export function init(moduleOverrides) {
|
|
66
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
if (Module === null) {
|
|
68
|
+
Module = yield initModule(moduleOverrides);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
function checkModule() {
|
|
73
|
+
if (Module === null)
|
|
74
|
+
throw new Error('syntastica module is not initialized, call `init` first');
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Load a language from a WebAssembly module.
|
|
78
|
+
*
|
|
79
|
+
* The module can be provided as a path to a file or as a buffer.
|
|
80
|
+
*/
|
|
81
|
+
export function loadLanguage(input) {
|
|
82
|
+
var _a;
|
|
83
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
84
|
+
checkModule();
|
|
85
|
+
let bytes;
|
|
86
|
+
if (input instanceof Uint8Array) {
|
|
87
|
+
bytes = Promise.resolve(input);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// @ts-expect-error
|
|
91
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
92
|
+
if ((_a = globalThis.process) === null || _a === void 0 ? void 0 : _a.versions.node) {
|
|
93
|
+
// @ts-expect-error
|
|
94
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-require-imports
|
|
95
|
+
const fs = yield import('fs/promises');
|
|
96
|
+
bytes = fs.readFile(input);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
bytes = fetch(input)
|
|
100
|
+
.then(response => response.arrayBuffer()
|
|
101
|
+
.then(buffer => {
|
|
102
|
+
if (response.ok) {
|
|
103
|
+
return new Uint8Array(buffer);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
const body = new TextDecoder('utf-8').decode(buffer);
|
|
107
|
+
throw new Error(`loadLanguage failed with status ${response.status}.\n\n${body}`);
|
|
108
|
+
}
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const mod = yield Module.loadWebAssemblyModule(yield bytes, { loadAsync: true });
|
|
113
|
+
const symbolNames = Object.keys(mod);
|
|
114
|
+
const langFuncName = symbolNames.find(key => key.startsWith('verdant_lang_'));
|
|
115
|
+
if (!langFuncName) {
|
|
116
|
+
console.log(`Couldn't find language function in WASM file. Symbols:\n${JSON.stringify(symbolNames, null, 2)}`);
|
|
117
|
+
throw new Error('loadLanguage failed: no language function found in WASM file');
|
|
118
|
+
}
|
|
119
|
+
const langInfoPtr = mod[langFuncName]();
|
|
120
|
+
Module._add_language(langInfoPtr);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Highlight code and render to the requested format.
|
|
125
|
+
*
|
|
126
|
+
* If you plan to highlight the same input multiple times, use {@link process} and {@link render} instead.
|
|
127
|
+
*
|
|
128
|
+
* @param code - The code to highlight.
|
|
129
|
+
*
|
|
130
|
+
* @param language - The name of the code's language.
|
|
131
|
+
*
|
|
132
|
+
* The language must have been loaded previously by calling {@link loadLanguage}.
|
|
133
|
+
*
|
|
134
|
+
* @param theme - The name of the theme to use.
|
|
135
|
+
*
|
|
136
|
+
* All themes from {@link https://rubixdev.github.io/syntastica/syntastica_themes/ | the default collection}
|
|
137
|
+
* are supported. The theme name is equivalent to its Rust path specifier, so for example the gruvbox dark theme
|
|
138
|
+
* is named `gruvbox::dark`. Alternatively, a {@link Theme | custom theme} can be specified.
|
|
139
|
+
*
|
|
140
|
+
* @param renderer - The renderer to use.
|
|
141
|
+
*
|
|
142
|
+
* The renderer name is either `HTML` or `Terminal` in any casing. To specify a background color
|
|
143
|
+
* for the terminal renderer, append a hex color literal like `terminal#282828` or `Terminal#fff`.
|
|
144
|
+
*
|
|
145
|
+
* By default, the `HTML` renderer will be used.
|
|
146
|
+
*
|
|
147
|
+
* @returns The highlighted code as HTML code.
|
|
148
|
+
*
|
|
149
|
+
* See {@link https://rubixdev.github.io/syntastica/syntastica/renderer/struct.HtmlRenderer.html | here} for
|
|
150
|
+
* more information on the output.
|
|
151
|
+
*/
|
|
152
|
+
export function highlight(code, language, theme, renderer = 'HTML') {
|
|
153
|
+
checkModule();
|
|
154
|
+
const errmsgPtr = Module._malloc(PTR_SIZE);
|
|
155
|
+
const codePtr = Module.stringToNewUTF8(code);
|
|
156
|
+
const languagePtr = Module.stringToNewUTF8(language);
|
|
157
|
+
const themePtr = Module.stringToNewUTF8(JSON.stringify(theme instanceof Theme ? { custom: theme.styles } : { builtin: theme }));
|
|
158
|
+
const rendererPtr = Module.stringToNewUTF8(renderer);
|
|
159
|
+
const resultPtr = Module._highlight(errmsgPtr, codePtr, languagePtr, themePtr, rendererPtr);
|
|
160
|
+
if (resultPtr === 0) {
|
|
161
|
+
const errPtr = Module.getValue(errmsgPtr, 'i8*');
|
|
162
|
+
const err = Module.UTF8ToString(errPtr);
|
|
163
|
+
Module._free(errPtr);
|
|
164
|
+
Module._free(errmsgPtr);
|
|
165
|
+
Module._free(codePtr);
|
|
166
|
+
Module._free(languagePtr);
|
|
167
|
+
Module._free(themePtr);
|
|
168
|
+
Module._free(rendererPtr);
|
|
169
|
+
Module._free(resultPtr);
|
|
170
|
+
throw new Error(err);
|
|
171
|
+
}
|
|
172
|
+
const result = Module.UTF8ToString(resultPtr);
|
|
173
|
+
Module._free(errmsgPtr);
|
|
174
|
+
Module._free(codePtr);
|
|
175
|
+
Module._free(languagePtr);
|
|
176
|
+
Module._free(themePtr);
|
|
177
|
+
Module._free(rendererPtr);
|
|
178
|
+
Module._free(resultPtr);
|
|
179
|
+
return result;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Prepare code for rendering multiple times.
|
|
183
|
+
*
|
|
184
|
+
* @param code - The code to highlight.
|
|
185
|
+
*
|
|
186
|
+
* @param language - The name of the code's language.
|
|
187
|
+
*
|
|
188
|
+
* The language must have been loaded previously by calling {@link loadLanguage}.
|
|
189
|
+
*
|
|
190
|
+
* @returns Highlight information about the code to be used by {@link render}.
|
|
191
|
+
*/
|
|
192
|
+
export function process(code, language) {
|
|
193
|
+
checkModule();
|
|
194
|
+
const errmsgPtr = Module._malloc(PTR_SIZE);
|
|
195
|
+
const codePtr = Module.stringToNewUTF8(code);
|
|
196
|
+
const languagePtr = Module.stringToNewUTF8(language);
|
|
197
|
+
const resultPtr = Module._process(errmsgPtr, codePtr, languagePtr);
|
|
198
|
+
if (resultPtr === 0) {
|
|
199
|
+
const errPtr = Module.getValue(errmsgPtr, 'i8*');
|
|
200
|
+
const err = Module.UTF8ToString(errPtr);
|
|
201
|
+
Module._free(errPtr);
|
|
202
|
+
Module._free(errmsgPtr);
|
|
203
|
+
Module._free(codePtr);
|
|
204
|
+
Module._free(languagePtr);
|
|
205
|
+
Module._free(resultPtr);
|
|
206
|
+
throw new Error(err);
|
|
207
|
+
}
|
|
208
|
+
const result = JSON.parse(Module.UTF8ToString(resultPtr));
|
|
209
|
+
Module._free(errmsgPtr);
|
|
210
|
+
Module._free(codePtr);
|
|
211
|
+
Module._free(languagePtr);
|
|
212
|
+
return result;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Render code that was previously processed by calling {@link process}.
|
|
216
|
+
*
|
|
217
|
+
* @param highlights - The processed highlight information to render.
|
|
218
|
+
*
|
|
219
|
+
* @param theme - The name of the theme to use.
|
|
220
|
+
*
|
|
221
|
+
* All themes from {@link https://rubixdev.github.io/syntastica/syntastica_themes/ | the default collection}
|
|
222
|
+
* are supported. The theme name is equivalent to its Rust path specifier, so for example the gruvbox dark theme
|
|
223
|
+
* is named `gruvbox::dark`. Alternatively, a {@link Theme | custom theme} can be specified.
|
|
224
|
+
*
|
|
225
|
+
* @param renderer - The renderer to use.
|
|
226
|
+
*
|
|
227
|
+
* The renderer name is either `HTML` or `Terminal` in any casing. To specify a background color
|
|
228
|
+
* for the terminal renderer, append a hex color literal like `terminal#282828` or `Terminal#fff`.
|
|
229
|
+
*
|
|
230
|
+
* By default, the `HTML` renderer will be used.
|
|
231
|
+
*
|
|
232
|
+
* @returns The highlighted code in the requested format.
|
|
233
|
+
*/
|
|
234
|
+
export function render(highlights, theme, renderer = 'HTML') {
|
|
235
|
+
checkModule();
|
|
236
|
+
const errmsgPtr = Module._malloc(PTR_SIZE);
|
|
237
|
+
const themePtr = Module.stringToNewUTF8(JSON.stringify(theme instanceof Theme ? { custom: theme.styles } : { builtin: theme }));
|
|
238
|
+
const rendererPtr = Module.stringToNewUTF8(renderer);
|
|
239
|
+
const highlightsPtr = Module.stringToNewUTF8(JSON.stringify(highlights));
|
|
240
|
+
const resultPtr = Module._render(errmsgPtr, highlightsPtr, themePtr, rendererPtr);
|
|
241
|
+
if (resultPtr === 0) {
|
|
242
|
+
const errPtr = Module.getValue(errmsgPtr, 'i8*');
|
|
243
|
+
const err = Module.UTF8ToString(errPtr);
|
|
244
|
+
Module._free(errPtr);
|
|
245
|
+
Module._free(errmsgPtr);
|
|
246
|
+
Module._free(themePtr);
|
|
247
|
+
Module._free(rendererPtr);
|
|
248
|
+
Module._free(highlightsPtr);
|
|
249
|
+
Module._free(resultPtr);
|
|
250
|
+
throw new Error(err);
|
|
251
|
+
}
|
|
252
|
+
const result = Module.UTF8ToString(resultPtr);
|
|
253
|
+
Module._free(errmsgPtr);
|
|
254
|
+
Module._free(themePtr);
|
|
255
|
+
Module._free(rendererPtr);
|
|
256
|
+
Module._free(highlightsPtr);
|
|
257
|
+
Module._free(resultPtr);
|
|
258
|
+
return result;
|
|
259
|
+
}
|
|
260
|
+
export default { init, loadLanguage, highlight, process, render, Theme };
|
|
261
|
+
// DISCLAIMER: All code below this line is generated with `cargo xtask codegen js-list`
|
|
262
|
+
// in the syntastica workspace. Do not edit this code manually!
|
|
263
|
+
/**
|
|
264
|
+
* A list of all builtin themes.
|
|
265
|
+
*
|
|
266
|
+
* @see The {@link BuiltinTheme} type.
|
|
267
|
+
*/
|
|
268
|
+
export const BUILTIN_THEMES = [
|
|
269
|
+
'abscs::abscs',
|
|
270
|
+
'aurora::aurora',
|
|
271
|
+
'blue_moon::blue_moon',
|
|
272
|
+
'boo::boo',
|
|
273
|
+
'catppuccin::frappe',
|
|
274
|
+
'catppuccin::latte',
|
|
275
|
+
'catppuccin::macchiato',
|
|
276
|
+
'catppuccin::mocha',
|
|
277
|
+
'darcula::darcula',
|
|
278
|
+
'dracula::dracula',
|
|
279
|
+
'everblush::everblush',
|
|
280
|
+
'everforest::dark',
|
|
281
|
+
'everforest::light',
|
|
282
|
+
'falcon::falcon',
|
|
283
|
+
'github::dark',
|
|
284
|
+
'github::dark_colorblind',
|
|
285
|
+
'github::dark_default',
|
|
286
|
+
'github::dark_dimmed',
|
|
287
|
+
'github::dark_high_contrast',
|
|
288
|
+
'github::dark_tritanopia',
|
|
289
|
+
'github::light',
|
|
290
|
+
'github::light_colorblind',
|
|
291
|
+
'github::light_default',
|
|
292
|
+
'github::light_high_contrast',
|
|
293
|
+
'github::light_tritanopia',
|
|
294
|
+
'gruvbox::dark',
|
|
295
|
+
'gruvbox::light',
|
|
296
|
+
'melange::melange',
|
|
297
|
+
'minimal::minimal',
|
|
298
|
+
'monochrome::monochrome',
|
|
299
|
+
'monokai::monokai',
|
|
300
|
+
'monokai::pro',
|
|
301
|
+
'monokai::ristretto',
|
|
302
|
+
'monokai::soda',
|
|
303
|
+
'moonfly::moonfly',
|
|
304
|
+
'moonlight::moonlight',
|
|
305
|
+
'neon::dark',
|
|
306
|
+
'neon::default',
|
|
307
|
+
'neon::doom',
|
|
308
|
+
'neon::light',
|
|
309
|
+
'nightfly::nightfly',
|
|
310
|
+
'nord::nord',
|
|
311
|
+
'oceanicnext::dark',
|
|
312
|
+
'oceanicnext::light',
|
|
313
|
+
'omni::omni',
|
|
314
|
+
'one::cool',
|
|
315
|
+
'one::dark',
|
|
316
|
+
'one::darker',
|
|
317
|
+
'one::deep',
|
|
318
|
+
'one::light',
|
|
319
|
+
'one::warm',
|
|
320
|
+
'one::warmer',
|
|
321
|
+
'oxocarbon::dark',
|
|
322
|
+
'oxocarbon::light',
|
|
323
|
+
'solarized::dark',
|
|
324
|
+
'solarized::light',
|
|
325
|
+
'tokyo::day',
|
|
326
|
+
'tokyo::moon',
|
|
327
|
+
'tokyo::night',
|
|
328
|
+
'tokyo::storm',
|
|
329
|
+
'vscode::dark',
|
|
330
|
+
'vscode::light',
|
|
331
|
+
'zephyr::zephyr',
|
|
332
|
+
];
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface VerdantModule extends EmscriptenModule {
|
|
2
|
+
_add_language(infoPtr: number): void
|
|
3
|
+
_highlight(errmsgPtr: number, codePtr: number, langPtr: number, themePtr: number, rendererPtr: number): number
|
|
4
|
+
_process(errmsgPtr: number, codePtr: number, langPtr: number): number
|
|
5
|
+
_render(errmsgPtr: number, highlightsPtr: number, themePtr: number, rendererPtr: number): number
|
|
6
|
+
_get_builtin_theme(errmsgPtr: number, themePtr: number): number
|
|
7
|
+
|
|
8
|
+
getValue: typeof getValue
|
|
9
|
+
setValue: typeof setValue
|
|
10
|
+
stringToNewUTF8: typeof allocateUTF8
|
|
11
|
+
UTF8ToString: typeof UTF8ToString
|
|
12
|
+
|
|
13
|
+
loadWebAssemblyModule(
|
|
14
|
+
binary: Uint8Array,
|
|
15
|
+
flags: {
|
|
16
|
+
allowUndefined?: boolean
|
|
17
|
+
loadAsync?: boolean
|
|
18
|
+
global?: boolean
|
|
19
|
+
nodelete?: boolean
|
|
20
|
+
},
|
|
21
|
+
libName?: string,
|
|
22
|
+
localScope?: Record<string, any>,
|
|
23
|
+
handle?: number,
|
|
24
|
+
): Promise<Record<string, () => number>>
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
declare const module: EmscriptenModuleFactory<VerdantModule>
|
|
28
|
+
export = module
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
async function Module(moduleArg={}){var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var programArgs=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}programArgs=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{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=async url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var dynamicLibraries=[];var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");var HEAP_DATA_VIEW;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b);HEAP_DATA_VIEW=new DataView(b);LE_HEAP_UPDATE()}var __RELOC_FUNCS__=[];function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__RELOC_FUNCS__);wasmExports["__wasm_call_ctors"]();callRuntimeCallbacks(onPostCtors)}function preMain(){}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";if(runtimeInitialized){___trap()}var e=new WebAssembly.RuntimeError(what);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("verdant_js.wasm")}return new URL("verdant_js.wasm",import.meta.url).href}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"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var GOTProxyHandler=new Proxy(new Set([]),GOTHandler);var imports={env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":GOTProxyHandler,"GOT.func":GOTProxyHandler};return imports}async function createWasm(){async function receiveInstance(instance,module){wasmExports=instance.exports;var origExports=wasmExports;mergeLibSymbols(wasmExports,"main");var metadata=getDylinkMetadata(module);if(metadata.neededDynlibs){dynamicLibraries=metadata.neededDynlibs.concat(dynamicLibraries)}assignWasmExports(wasmExports);updateGOT(origExports);updateMemoryViews();LDSO.init();await loadDylibs();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"],result["module"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=await receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var GOT={};var GOTHandler={get(weakImports,symName){var rtn=GOT[symName];if(!rtn){rtn=GOT[symName]=new WebAssembly.Global({value:"i32",mutable:true},-1)}if(!weakImports.has(symName)){rtn.required=true}return rtn}};var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var LE_ATOMICS_NATIVE_BYTE_ORDER=[];var LE_HEAP_LOAD_F32=byteOffset=>HEAP_DATA_VIEW.getFloat32(byteOffset,true);var LE_HEAP_LOAD_F64=byteOffset=>HEAP_DATA_VIEW.getFloat64(byteOffset,true);var LE_HEAP_LOAD_I16=byteOffset=>HEAP_DATA_VIEW.getInt16(byteOffset,true);var LE_HEAP_LOAD_I32=byteOffset=>HEAP_DATA_VIEW.getInt32(byteOffset,true);var LE_HEAP_LOAD_I64=byteOffset=>HEAP_DATA_VIEW.getBigInt64(byteOffset,true);var LE_HEAP_LOAD_U32=byteOffset=>HEAP_DATA_VIEW.getUint32(byteOffset,true);var LE_HEAP_STORE_I32=(byteOffset,value)=>HEAP_DATA_VIEW.setInt32(byteOffset,value,true);var LE_HEAP_STORE_U32=(byteOffset,value)=>HEAP_DATA_VIEW.setUint32(byteOffset,value,true);var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var UTF8Decoder=globalThis.TextDecoder&&new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);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 getDylinkMetadata=binary=>{var offset=0;var end=0;function getU8(){return binary[offset++]}function getLEB(){var ret=0;var mul=1;while(1){var byte=binary[offset++];ret+=(byte&127)*mul;mul*=128;if(!(byte&128))break}return ret}function getString(){var len=getLEB();offset+=len;return UTF8ArrayToString(binary,offset-len,len)}function getStringList(){var count=getLEB();var rtn=[];while(count--)rtn.push(getString());return rtn}function failIf(condition,message){if(condition)throw new Error(message)}if(binary instanceof WebAssembly.Module){var dylinkSection=WebAssembly.Module.customSections(binary,"dylink.0");failIf(dylinkSection.length===0,"need dylink section");binary=new Uint8Array(dylinkSection[0]);end=binary.length}else{var int32View=new Uint32Array(new Uint8Array(binary.subarray(0,24)).buffer);var magicNumberFound=int32View[0]==1836278016||int32View[0]==6386541;failIf(!magicNumberFound,"need to see wasm magic number");failIf(binary[8]!==0,"need the dylink section to be first");offset=9;var section_size=getLEB();end=offset+section_size;var name=getString();failIf(name!=="dylink.0")}var customSection={neededDynlibs:[],tlsExports:new Set,weakImports:new Set,runtimePaths:[]};var WASM_DYLINK_MEM_INFO=1;var WASM_DYLINK_NEEDED=2;var WASM_DYLINK_EXPORT_INFO=3;var WASM_DYLINK_IMPORT_INFO=4;var WASM_DYLINK_RUNTIME_PATH=5;var WASM_SYMBOL_TLS=256;var WASM_SYMBOL_BINDING_MASK=3;var WASM_SYMBOL_BINDING_WEAK=1;while(offset<end){var subsectionType=getU8();var subsectionSize=getLEB();if(subsectionType===WASM_DYLINK_MEM_INFO){customSection.memorySize=getLEB();customSection.memoryAlign=getLEB();customSection.tableSize=getLEB();customSection.tableAlign=getLEB()}else if(subsectionType===WASM_DYLINK_NEEDED){customSection.neededDynlibs=getStringList()}else if(subsectionType===WASM_DYLINK_EXPORT_INFO){var count=getLEB();while(count--){var symname=getString();var flags=getLEB();if(flags&WASM_SYMBOL_TLS){customSection.tlsExports.add(symname)}}}else if(subsectionType===WASM_DYLINK_IMPORT_INFO){var count=getLEB();while(count--){var modname=getString();var symname=getString();var flags=getLEB();if((flags&WASM_SYMBOL_BINDING_MASK)==WASM_SYMBOL_BINDING_WEAK){customSection.weakImports.add(symname)}}}else if(subsectionType===WASM_DYLINK_RUNTIME_PATH){customSection.runtimePaths=getStringList()}else{offset+=subsectionSize}}return customSection};function getValue(ptr,type="i8"){if(type.endsWith("*"))type="*";switch(type){case"i1":return HEAP8[ptr];case"i8":return HEAP8[ptr];case"i16":return LE_HEAP_LOAD_I16((ptr>>1)*2);case"i32":return LE_HEAP_LOAD_I32((ptr>>2)*4);case"i64":return LE_HEAP_LOAD_I64((ptr>>3)*8);case"float":return LE_HEAP_LOAD_F32((ptr>>2)*4);case"double":return LE_HEAP_LOAD_F64((ptr>>3)*8);case"*":return LE_HEAP_LOAD_U32((ptr>>2)*4);default:abort(`invalid type for getValue: ${type}`)}}var newDSO=(name,handle,syms)=>{var dso={refcount:Infinity,name,exports:syms,global:true};LDSO.loadedLibsByName[name]=dso;if(handle!=undefined){LDSO.loadedLibsByHandle[handle]=dso}return dso};var LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO("__main__",0,wasmImports)}};var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var getMemory=size=>{if(runtimeInitialized){return _calloc(size,1)}var ret=___heap_base;var end=ret+alignMemory(size,16);___heap_base=end;var sbrk_ptr=_emscripten_get_sbrk_ptr();LE_HEAP_STORE_U32((sbrk_ptr>>2)*4,end);return ret};var isInternalSym=symName=>["memory","__memory_base","__table_base","__stack_pointer","__indirect_function_table","__cpp_exception","__c_longjmp","__wasm_apply_data_relocs","__dso_handle","__tls_size","__tls_align","__set_stack_limits","_emscripten_tls_init","__wasm_init_tls","__wasm_call_ctors","__start_em_asm","__stop_em_asm","__start_em_js","__stop_em_js"].includes(symName)||symName.startsWith("__em_js__");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()}return wasmTable["grow"](1)};var setWasmTableEntry=(idx,func)=>wasmTable.set(idx,func);var uleb128EncodeWithLen=arr=>{const n=arr.length;return[n%128|128,n>>7,...arr]};var wasmTypeCodes={i:127,p:127,j:126,f:125,d:124,e:111};var generateTypePack=types=>uleb128EncodeWithLen(Array.from(types,type=>{var code=wasmTypeCodes[type];return code}));var convertJsFunctionToWasm=(func,sig)=>{var bytes=Uint8Array.of(0,97,115,109,1,0,0,0,1,...uleb128EncodeWithLen([1,96,...generateTypePack(sig.slice(1)),...generateTypePack(sig[0]==="v"?"":sig[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var module=new WebAssembly.Module(bytes);var instance=new WebAssembly.Instance(module,{e:{f:func}});var wrappedFunc=instance.exports["f"];return wrappedFunc};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 updateGOT=(exports,replace)=>{for(var symName in exports){if(isInternalSym(symName)){continue}var value=exports[symName];var existingEntry=GOT[symName]&&GOT[symName].value!=-1;if(replace||!existingEntry){var newValue;if(typeof value=="function"){newValue=addFunction(value)}else if(typeof value.value=="number"){newValue=value}else{continue}GOT[symName]??=new WebAssembly.Global({value:"i32",mutable:true});GOT[symName].value=newValue}}};var isImmutableGlobal=val=>{if(val instanceof WebAssembly.Global){try{val.value=val.value}catch{return true}}return false};var relocateExports=(exports,memoryBase=0)=>{function relocateExport(name,value){if(isImmutableGlobal(value)){return new WebAssembly.Global({value:"i32"},value.value+memoryBase)}return value}var relocated={};for(var e in exports){relocated[e]=relocateExport(e,exports[e])}return relocated};var isSymbolDefined=symName=>{var existing=wasmImports[symName];if(!existing||existing.stub){return false}return true};var resolveGlobalSymbol=(symName,direct=false)=>{var sym;if(isSymbolDefined(symName)){sym=wasmImports[symName]}return{sym,name:symName}};var onPostCtors=[];var addOnPostCtor=cb=>onPostCtors.push(cb);var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var loadWebAssemblyModule=(binary,flags,libName,localScope,handle)=>{var metadata=getDylinkMetadata(binary);function loadModule(){var memAlign=Math.pow(2,metadata.memoryAlign);var memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0;var tableBase=metadata.tableSize?wasmTable.length:0;if(handle){HEAP8[handle+8]=1;LE_HEAP_STORE_U32((handle+12>>2)*4,memoryBase);LE_HEAP_STORE_I32((handle+16>>2)*4,metadata.memorySize);LE_HEAP_STORE_U32((handle+20>>2)*4,tableBase);LE_HEAP_STORE_I32((handle+24>>2)*4,metadata.tableSize)}if(metadata.tableSize){wasmTable.grow(metadata.tableSize)}var moduleExports;function resolveSymbol(sym){var resolved=resolveGlobalSymbol(sym).sym;if(!resolved&&localScope){resolved=localScope[sym]}if(!resolved){resolved=moduleExports[sym]}return resolved}var proxyHandler={get(stubs,prop){switch(prop){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(prop in wasmImports&&!wasmImports[prop].stub){var res=wasmImports[prop];return res}if(!(prop in stubs)){var resolved;stubs[prop]=(...args)=>{resolved||=resolveSymbol(prop);return resolved(...args)}}return stubs[prop]}};var proxy=new Proxy({},proxyHandler);var GOTProxy=new Proxy(metadata.weakImports,GOTHandler);var info={"GOT.mem":GOTProxy,"GOT.func":GOTProxy,env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(module,instance){updateTableMap(tableBase,metadata.tableSize);moduleExports=relocateExports(instance.exports,memoryBase);updateGOT(moduleExports);if(!flags.allowUndefined){reportUndefinedSymbols()}function addEmAsm(addr,body){var args=[];for(var arity=0;;arity++){var argName="$"+arity;if(!body.includes(argName))break;args.push(argName)}args=args.join(",");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if("__start_em_asm"in moduleExports){var start=moduleExports["__start_em_asm"].value;var stop=moduleExports["__stop_em_asm"].value;while(start<stop){var jsString=UTF8ToString(start);addEmAsm(start,jsString);start=HEAPU8.indexOf(0,start)+1}}function addEmJs(name,cSig,body){var jsArgs=[];cSig=cSig.slice(1,-1);if(cSig!="void"){cSig=cSig.split(",");for(var arg of cSig){var jsArg=arg.split(" ").pop();jsArgs.push(jsArg.replaceAll("*",""))}}var func=`(${jsArgs}) => ${body};`;moduleExports[name]=eval(func)}for(var name in moduleExports){if(name.startsWith("__em_js__")){var start=moduleExports[name].value;var jsString=UTF8ToString(start);var[sig,body]=jsString.split("<::>");addEmJs(name.replace("__em_js__",""),sig,body);delete moduleExports[name]}}var applyRelocs=moduleExports["__wasm_apply_data_relocs"];if(applyRelocs){if(runtimeInitialized){applyRelocs()}else{__RELOC_FUNCS__.push(applyRelocs)}}var init=moduleExports["__wasm_call_ctors"];if(init){if(runtimeInitialized){init()}else{addOnPostCtor(init)}}return moduleExports}if(flags.loadAsync){return(async()=>{var instance;if(binary instanceof WebAssembly.Module){instance=new WebAssembly.Instance(binary,info)}else{({module:binary,instance}=await WebAssembly.instantiate(binary,info))}return postInstantiation(binary,instance)})()}var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary);var instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}flags={...flags,rpath:{parentLibPath:libName,paths:metadata.runtimePaths}};if(flags.loadAsync){return metadata.neededDynlibs.reduce((chain,needed)=>chain.then(()=>loadDynamicLibrary(needed,flags,localScope)),Promise.resolve()).then(loadModule)}for(var needed of metadata.neededDynlibs){loadDynamicLibrary(needed,flags,localScope)}return loadModule()};var mergeLibSymbols=(exports,libName)=>{for(var[sym,exp]of Object.entries(exports)){const setImport=target=>{if(!isSymbolDefined(target)){wasmImports[target]=exp}};setImport(sym);const main_alias="__main_argc_argv";if(sym=="main"){setImport(main_alias)}if(sym==main_alias){setImport("main")}}};var asyncLoad=async url=>{var arrayBuffer=await readAsync(url);return new Uint8Array(arrayBuffer)};function loadDynamicLibrary(libName,flags={global:true,nodelete:true},localScope,handle){var dso=LDSO.loadedLibsByName[libName];if(dso){if(!flags.global){if(localScope){Object.assign(localScope,dso.exports)}}else if(!dso.global){dso.global=true;mergeLibSymbols(dso.exports,libName)}if(flags.nodelete&&dso.refcount!==Infinity){dso.refcount=Infinity}dso.refcount++;if(handle){LDSO.loadedLibsByHandle[handle]=dso}return flags.loadAsync?Promise.resolve(true):true}dso=newDSO(libName,handle,"loading");dso.refcount=flags.nodelete?Infinity:1;dso.global=flags.global;function loadLibData(){if(handle){var data=LE_HEAP_LOAD_U32((handle+28>>2)*4);var dataSize=LE_HEAP_LOAD_U32((handle+32>>2)*4);if(data&&dataSize){var libData=HEAP8.slice(data,data+dataSize);return flags.loadAsync?Promise.resolve(libData):libData}}var libFile=locateFile(libName);if(flags.loadAsync){return asyncLoad(libFile)}if(!readBinary){throw new Error(`${libFile}: file not found, and synchronous loading of external files is not available`)}return readBinary(libFile)}function getExports(){if(flags.loadAsync){return loadLibData().then(libData=>loadWebAssemblyModule(libData,flags,libName,localScope,handle))}return loadWebAssemblyModule(loadLibData(),flags,libName,localScope,handle)}function moduleLoaded(exports){if(dso.global){mergeLibSymbols(exports,libName)}else if(localScope){Object.assign(localScope,exports)}dso.exports=exports}if(flags.loadAsync){return getExports().then(exports=>{moduleLoaded(exports);return true})}moduleLoaded(getExports());return true}var reportUndefinedSymbols=()=>{for(var[symName,entry]of Object.entries(GOT)){if(entry.value==-1){var value=resolveGlobalSymbol(symName,true).sym;if(!value&&!entry.required){entry.value=0;continue}if(typeof value=="function"){entry.value=addFunction(value,value.sig)}else if(typeof value=="number"){entry.value=value}else if(typeof value.value=="number"){entry.value=value}else{throw new Error(`bad export type for '${symName}': ${typeof value} (${value})`)}}}};var loadDylibs=async()=>{if(!dynamicLibraries.length){reportUndefinedSymbols();return}for(var lib of dynamicLibraries){await loadDynamicLibrary(lib,{loadAsync:true,global:true,nodelete:true,allowUndefined:true})}reportUndefinedSymbols()};var noExitRuntime=true;var ___assert_fail=(condition,filename,line,func)=>abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"]);___assert_fail.sig="vppip";var ___syscall_getcwd=(buf,size)=>{};___syscall_getcwd.sig="ipp";var __abort_js=()=>abort("");__abort_js.sig="v";var getHeapMax=()=>2147483648;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;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}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,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};_emscripten_resize_heap.sig="ip";var ENV={};var getExecutableName=()=>thisProgram;var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??"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 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.codePointAt(i);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;i++}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;LE_HEAP_STORE_U32((__environ+envp>>2)*4,ptr);bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};_environ_get.sig="ipp";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 _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();LE_HEAP_STORE_U32((penviron_count>>2)*4,strings.length);var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}LE_HEAP_STORE_U32((penviron_buf_size>>2)*4,bufSize);return 0};_environ_sizes_get.sig="ipp";var _fd_close=fd=>52;_fd_close.sig="ii";var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>num<INT53_MIN||num>INT53_MAX?NaN:Number(num);function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);return 70}_fd_seek.sig="iijip";var printCharBuffers=[null,[],[]];var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i<iovcnt;i++){var ptr=LE_HEAP_LOAD_U32((iov>>2)*4);var len=LE_HEAP_LOAD_U32((iov+4>>2)*4);iov+=8;for(var j=0;j<len;j++){printChar(fd,HEAPU8[ptr+j])}num+=len}LE_HEAP_STORE_U32((pnum>>2)*4,num);return 0};_fd_write.sig="iippp";var initRandomFill=()=>{if(ENVIRONMENT_IS_NODE){var nodeCrypto=require("node:crypto");return view=>(nodeCrypto.randomFillSync(view),0)}return view=>(crypto.getRandomValues(view),0)};var randomFill=view=>(randomFill=initRandomFill())(view);var _random_get=(buffer,size)=>randomFill(HEAPU8.subarray(buffer,buffer+size));_random_get.sig="ipp";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))};_proc_exit.sig="vi";var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};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 stringToNewUTF8=str=>{var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8(str,ret,size);return ret};LE_ATOMICS_NATIVE_BYTE_ORDER=new Int8Array(new Int16Array([1]).buffer)[0]===1?[x=>x,x=>x,undefined,x=>x]:[x=>x,x=>((x&65280)<<8|(x&255)<<24)>>16,undefined,x=>x>>24&255|x>>8&65280|(x&65280)<<8|(x&255)<<24];function LE_HEAP_UPDATE(){HEAPU16.unsigned=x=>x&65535;HEAPU32.unsigned=x=>x>>>0}{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["dynamicLibraries"])dynamicLibraries=Module["dynamicLibraries"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])programArgs=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}Module["getValue"]=getValue;Module["UTF8ToString"]=UTF8ToString;Module["stringToNewUTF8"]=stringToNewUTF8;Module["loadWebAssemblyModule"]=loadWebAssemblyModule;var ASM_CONSTS={};var _add_language,_get_builtin_theme,_highlight,_process,_render,_strlen,_malloc,_free,_realloc,_calloc,_memcmp,_memcpy,_memmove,_memset,_strncmp,_iswalnum,_iswalpha,_iswblank,_iswdigit,_iswlower,_iswspace,_iswupper,_iswxdigit,_memchr,_strcmp,_strncat,_strncpy,_towlower,_towupper,_emscripten_get_sbrk_ptr,___trap,__emscripten_stack_alloc,memory,__indirect_function_table,___heap_base,wasmTable,wasmMemory;function assignWasmExports(wasmExports){_add_language=Module["_add_language"]=wasmExports["add_language"];_get_builtin_theme=Module["_get_builtin_theme"]=wasmExports["get_builtin_theme"];_highlight=Module["_highlight"]=wasmExports["highlight"];_process=Module["_process"]=wasmExports["process"];_render=Module["_render"]=wasmExports["render"];_strlen=Module["_strlen"]=wasmExports["strlen"];_malloc=Module["_malloc"]=wasmExports["malloc"];_free=Module["_free"]=wasmExports["free"];_realloc=Module["_realloc"]=wasmExports["realloc"];_calloc=Module["_calloc"]=wasmExports["calloc"];_memcmp=Module["_memcmp"]=wasmExports["memcmp"];_memcpy=Module["_memcpy"]=wasmExports["memcpy"];_memmove=Module["_memmove"]=wasmExports["memmove"];_memset=Module["_memset"]=wasmExports["memset"];_strncmp=Module["_strncmp"]=wasmExports["strncmp"];_iswalnum=Module["_iswalnum"]=wasmExports["iswalnum"];_iswalpha=Module["_iswalpha"]=wasmExports["iswalpha"];_iswblank=Module["_iswblank"]=wasmExports["iswblank"];_iswdigit=Module["_iswdigit"]=wasmExports["iswdigit"];_iswlower=Module["_iswlower"]=wasmExports["iswlower"];_iswspace=Module["_iswspace"]=wasmExports["iswspace"];_iswupper=Module["_iswupper"]=wasmExports["iswupper"];_iswxdigit=Module["_iswxdigit"]=wasmExports["iswxdigit"];_memchr=Module["_memchr"]=wasmExports["memchr"];_strcmp=Module["_strcmp"]=wasmExports["strcmp"];_strncat=Module["_strncat"]=wasmExports["strncat"];_strncpy=Module["_strncpy"]=wasmExports["strncpy"];_towlower=Module["_towlower"]=wasmExports["towlower"];_towupper=Module["_towupper"]=wasmExports["towupper"];_emscripten_get_sbrk_ptr=wasmExports["emscripten_get_sbrk_ptr"];___trap=wasmExports["__trap"];__emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"];memory=wasmMemory=wasmExports["memory"];__indirect_function_table=wasmTable=wasmExports["__indirect_function_table"];___heap_base=wasmExports["__heap_base"].value}var wasmImports={__assert_fail:___assert_fail,__syscall_getcwd:___syscall_getcwd,_abort_js:__abort_js,emscripten_resize_heap:_emscripten_resize_heap,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,random_get:_random_get};function callMain(args=[]){var entryFunction=resolveGlobalSymbol("main").sym;if(!entryFunction)return;args.unshift(thisProgram);var argc=args.length;var argv=stackAlloc((argc+1)*4);var argv_ptr=argv;for(var arg of args){LE_HEAP_STORE_U32((argv_ptr>>2)*4,stringToUTF8OnStack(arg));argv_ptr+=4}LE_HEAP_STORE_U32((argv_ptr>>2)*4,0);try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}async function run(args=programArgs){preRun();var setStatus=Module["setStatus"];if(setStatus){setStatus("Running...");await new Promise(resolve=>setTimeout(resolve,1));setTimeout(setStatus,1,"")}if(ABORT)return;initRuntime();preMain();Module["onRuntimeInitialized"]?.();var noInitialRun=Module["noInitialRun"]||false;if(!noInitialRun)callMain(args);postRun()}var wasmExports;wasmExports=await createWasm();await run();
|
|
2
|
+
;return Module}export default Module;
|
|
Binary file
|