summaryrefslogtreecommitdiff
path: root/server/.pnp.cjs
diff options
context:
space:
mode:
Diffstat (limited to 'server/.pnp.cjs')
-rwxr-xr-xserver/.pnp.cjs9571
1 files changed, 9571 insertions, 0 deletions
diff --git a/server/.pnp.cjs b/server/.pnp.cjs
new file mode 100755
index 0000000..e70abe1
--- /dev/null
+++ b/server/.pnp.cjs
@@ -0,0 +1,9571 @@
+#!/usr/bin/env node
+/* eslint-disable */
+"use strict";
+
+const RAW_RUNTIME_STATE =
+'{\
+ "__info": [\
+ "This file is automatically generated. Do not touch it, or risk",\
+ "your modifications being lost."\
+ ],\
+ "dependencyTreeRoots": [\
+ {\
+ "name": "server",\
+ "reference": "workspace:."\
+ }\
+ ],\
+ "enableTopLevelFallback": true,\
+ "ignorePatternData": "(^(?:\\\\.yarn\\\\/sdks(?:\\\\/(?!\\\\.{1,2}(?:\\\\/|$))(?:(?:(?!(?:^|\\\\/)\\\\.{1,2}(?:\\\\/|$)).)*?)|$))$)",\
+ "fallbackExclusionList": [\
+ ["server", ["workspace:."]]\
+ ],\
+ "fallbackPool": [\
+ ],\
+ "packageRegistryData": [\
+ [null, [\
+ [null, {\
+ "packageLocation": "./",\
+ "packageDependencies": [\
+ ["body-parser", "npm:1.20.0"],\
+ ["cors", "npm:2.8.5"],\
+ ["dotenv", "npm:16.0.1"],\
+ ["express", "npm:4.18.1"],\
+ ["mongoose", "npm:6.5.0"],\
+ ["nodemon", "npm:2.0.19"],\
+ ["twilio", "npm:3.80.1"]\
+ ],\
+ "linkType": "SOFT"\
+ }]\
+ ]],\
+ ["@gar/promisify", [\
+ ["npm:1.1.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/@gar-promisify-npm-1.1.3-ac1a325862-9.zip/node_modules/@gar/promisify/",\
+ "packageDependencies": [\
+ ["@gar/promisify", "npm:1.1.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["@npmcli/fs", [\
+ ["npm:2.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/@npmcli-fs-npm-2.1.2-08d434e77b-9.zip/node_modules/@npmcli/fs/",\
+ "packageDependencies": [\
+ ["@npmcli/fs", "npm:2.1.2"],\
+ ["@gar/promisify", "npm:1.1.3"],\
+ ["semver", "npm:7.3.8"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["@npmcli/move-file", [\
+ ["npm:2.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/@npmcli-move-file-npm-2.0.1-b593d8f741-9.zip/node_modules/@npmcli/move-file/",\
+ "packageDependencies": [\
+ ["@npmcli/move-file", "npm:2.0.1"],\
+ ["mkdirp", "npm:1.0.4"],\
+ ["rimraf", "npm:3.0.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["@tootallnate/once", [\
+ ["npm:2.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/@tootallnate-once-npm-2.0.0-e36cf4f140-9.zip/node_modules/@tootallnate/once/",\
+ "packageDependencies": [\
+ ["@tootallnate/once", "npm:2.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["@types/node", [\
+ ["npm:18.6.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/@types-node-npm-18.6.2-cd106eb850-9.zip/node_modules/@types/node/",\
+ "packageDependencies": [\
+ ["@types/node", "npm:18.6.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["@types/webidl-conversions", [\
+ ["npm:6.1.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/@types-webidl-conversions-npm-6.1.1-ce4d057614-9.zip/node_modules/@types/webidl-conversions/",\
+ "packageDependencies": [\
+ ["@types/webidl-conversions", "npm:6.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["@types/whatwg-url", [\
+ ["npm:8.2.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/@types-whatwg-url-npm-8.2.2-54c5c24e6c-9.zip/node_modules/@types/whatwg-url/",\
+ "packageDependencies": [\
+ ["@types/whatwg-url", "npm:8.2.2"],\
+ ["@types/node", "npm:18.6.2"],\
+ ["@types/webidl-conversions", "npm:6.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["abbrev", [\
+ ["npm:1.1.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/abbrev-npm-1.1.1-3659247eab-9.zip/node_modules/abbrev/",\
+ "packageDependencies": [\
+ ["abbrev", "npm:1.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["accepts", [\
+ ["npm:1.3.8", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/accepts-npm-1.3.8-9a812371c9-9.zip/node_modules/accepts/",\
+ "packageDependencies": [\
+ ["accepts", "npm:1.3.8"],\
+ ["mime-types", "npm:2.1.35"],\
+ ["negotiator", "npm:0.6.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["agent-base", [\
+ ["npm:6.0.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/agent-base-npm-6.0.2-428f325a93-9.zip/node_modules/agent-base/",\
+ "packageDependencies": [\
+ ["agent-base", "npm:6.0.2"],\
+ ["debug", "virtual:993368e4d5b99ecbd76d0bd2c43aca0cecadb2a241ef3dc8dc18085b2d79167d5195671fbb701c9e6312177b2cac6e3d058c4aa296d48c4e02c788163cdcab10#npm:4.3.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["agentkeepalive", [\
+ ["npm:4.2.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/agentkeepalive-npm-4.2.1-b86a9fb343-9.zip/node_modules/agentkeepalive/",\
+ "packageDependencies": [\
+ ["agentkeepalive", "npm:4.2.1"],\
+ ["debug", "virtual:993368e4d5b99ecbd76d0bd2c43aca0cecadb2a241ef3dc8dc18085b2d79167d5195671fbb701c9e6312177b2cac6e3d058c4aa296d48c4e02c788163cdcab10#npm:4.3.4"],\
+ ["depd", "npm:1.1.2"],\
+ ["humanize-ms", "npm:1.2.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["aggregate-error", [\
+ ["npm:3.1.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/aggregate-error-npm-3.1.0-415a406f4e-9.zip/node_modules/aggregate-error/",\
+ "packageDependencies": [\
+ ["aggregate-error", "npm:3.1.0"],\
+ ["clean-stack", "npm:2.2.0"],\
+ ["indent-string", "npm:4.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["ansi-regex", [\
+ ["npm:5.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/ansi-regex-npm-5.0.1-c963a48615-9.zip/node_modules/ansi-regex/",\
+ "packageDependencies": [\
+ ["ansi-regex", "npm:5.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["anymatch", [\
+ ["npm:3.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/anymatch-npm-3.1.2-1d5471acfa-9.zip/node_modules/anymatch/",\
+ "packageDependencies": [\
+ ["anymatch", "npm:3.1.2"],\
+ ["normalize-path", "npm:3.0.0"],\
+ ["picomatch", "npm:2.3.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["aproba", [\
+ ["npm:2.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/aproba-npm-2.0.0-8716bcfde6-9.zip/node_modules/aproba/",\
+ "packageDependencies": [\
+ ["aproba", "npm:2.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["are-we-there-yet", [\
+ ["npm:3.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/are-we-there-yet-npm-3.0.1-3395b1512f-9.zip/node_modules/are-we-there-yet/",\
+ "packageDependencies": [\
+ ["are-we-there-yet", "npm:3.0.1"],\
+ ["delegates", "npm:1.0.0"],\
+ ["readable-stream", "npm:3.6.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["array-flatten", [\
+ ["npm:1.1.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/array-flatten-npm-1.1.1-9d94ad5f1d-9.zip/node_modules/array-flatten/",\
+ "packageDependencies": [\
+ ["array-flatten", "npm:1.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["asap", [\
+ ["npm:2.0.6", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/asap-npm-2.0.6-36714d439d-9.zip/node_modules/asap/",\
+ "packageDependencies": [\
+ ["asap", "npm:2.0.6"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["axios", [\
+ ["npm:0.26.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/axios-npm-0.26.1-a6641ce4e3-9.zip/node_modules/axios/",\
+ "packageDependencies": [\
+ ["axios", "npm:0.26.1"],\
+ ["follow-redirects", "virtual:a6641ce4e3bdcc0997f8f53d9481b67c5d38e21276de8eeee7bf92881685b3ad5600bae416c2af904ceab8132bac649e7efd0af93f18e158e0e65ee05a263d72#npm:1.15.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["balanced-match", [\
+ ["npm:1.0.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/balanced-match-npm-1.0.2-a53c126459-9.zip/node_modules/balanced-match/",\
+ "packageDependencies": [\
+ ["balanced-match", "npm:1.0.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["base64-js", [\
+ ["npm:1.5.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/base64-js-npm-1.5.1-b2f7275641-9.zip/node_modules/base64-js/",\
+ "packageDependencies": [\
+ ["base64-js", "npm:1.5.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["binary-extensions", [\
+ ["npm:2.2.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/binary-extensions-npm-2.2.0-180c33fec7-9.zip/node_modules/binary-extensions/",\
+ "packageDependencies": [\
+ ["binary-extensions", "npm:2.2.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["body-parser", [\
+ ["npm:1.20.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/body-parser-npm-1.20.0-1820eff49a-9.zip/node_modules/body-parser/",\
+ "packageDependencies": [\
+ ["body-parser", "npm:1.20.0"],\
+ ["bytes", "npm:3.1.2"],\
+ ["content-type", "npm:1.0.4"],\
+ ["debug", "virtual:1820eff49a3510f59844b6605d494e2deca1520fa9e3aa7cf6600a27b1172a18c035fa06a11454e24c22ee26b6472ef79ca6bf8d7f3c9067161707279e01bef3#npm:2.6.9"],\
+ ["depd", "npm:2.0.0"],\
+ ["destroy", "npm:1.2.0"],\
+ ["http-errors", "npm:2.0.0"],\
+ ["iconv-lite", "npm:0.4.24"],\
+ ["on-finished", "npm:2.4.1"],\
+ ["qs", "npm:6.10.3"],\
+ ["raw-body", "npm:2.5.1"],\
+ ["type-is", "npm:1.6.18"],\
+ ["unpipe", "npm:1.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["brace-expansion", [\
+ ["npm:1.1.11", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/brace-expansion-npm-1.1.11-fb95eb05ad-9.zip/node_modules/brace-expansion/",\
+ "packageDependencies": [\
+ ["brace-expansion", "npm:1.1.11"],\
+ ["balanced-match", "npm:1.0.2"],\
+ ["concat-map", "npm:0.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:2.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/brace-expansion-npm-2.0.1-17aa2616f9-9.zip/node_modules/brace-expansion/",\
+ "packageDependencies": [\
+ ["brace-expansion", "npm:2.0.1"],\
+ ["balanced-match", "npm:1.0.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["braces", [\
+ ["npm:3.0.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/braces-npm-3.0.2-782240b28a-9.zip/node_modules/braces/",\
+ "packageDependencies": [\
+ ["braces", "npm:3.0.2"],\
+ ["fill-range", "npm:7.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["bson", [\
+ ["npm:4.6.5", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/bson-npm-4.6.5-e3f9f5300c-9.zip/node_modules/bson/",\
+ "packageDependencies": [\
+ ["bson", "npm:4.6.5"],\
+ ["buffer", "npm:5.7.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["buffer", [\
+ ["npm:5.7.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/buffer-npm-5.7.1-513ef8259e-9.zip/node_modules/buffer/",\
+ "packageDependencies": [\
+ ["buffer", "npm:5.7.1"],\
+ ["base64-js", "npm:1.5.1"],\
+ ["ieee754", "npm:1.2.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["buffer-equal-constant-time", [\
+ ["npm:1.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/buffer-equal-constant-time-npm-1.0.1-41826f3419-9.zip/node_modules/buffer-equal-constant-time/",\
+ "packageDependencies": [\
+ ["buffer-equal-constant-time", "npm:1.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["bytes", [\
+ ["npm:3.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/bytes-npm-3.1.2-28b8643004-9.zip/node_modules/bytes/",\
+ "packageDependencies": [\
+ ["bytes", "npm:3.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["cacache", [\
+ ["npm:16.1.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/cacache-npm-16.1.3-4e2088ed0d-9.zip/node_modules/cacache/",\
+ "packageDependencies": [\
+ ["cacache", "npm:16.1.3"],\
+ ["@npmcli/fs", "npm:2.1.2"],\
+ ["@npmcli/move-file", "npm:2.0.1"],\
+ ["chownr", "npm:2.0.0"],\
+ ["fs-minipass", "npm:2.1.0"],\
+ ["glob", "npm:8.1.0"],\
+ ["infer-owner", "npm:1.0.4"],\
+ ["lru-cache", "npm:7.14.1"],\
+ ["minipass", "npm:3.3.6"],\
+ ["minipass-collect", "npm:1.0.2"],\
+ ["minipass-flush", "npm:1.0.5"],\
+ ["minipass-pipeline", "npm:1.2.4"],\
+ ["mkdirp", "npm:1.0.4"],\
+ ["p-map", "npm:4.0.0"],\
+ ["promise-inflight", "virtual:4e2088ed0df52533102f445d7e7aeba6560b7effa0cabbc7cc20dd1e36a86dd838cc541de4414688f4ce3ec77b0ad5298cea6de581350d934ceb35c3e0fe3462#npm:1.0.1"],\
+ ["rimraf", "npm:3.0.2"],\
+ ["ssri", "npm:9.0.1"],\
+ ["tar", "npm:6.1.13"],\
+ ["unique-filename", "npm:2.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["call-bind", [\
+ ["npm:1.0.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/call-bind-npm-1.0.2-c957124861-9.zip/node_modules/call-bind/",\
+ "packageDependencies": [\
+ ["call-bind", "npm:1.0.2"],\
+ ["function-bind", "npm:1.1.1"],\
+ ["get-intrinsic", "npm:1.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["chokidar", [\
+ ["npm:3.5.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/chokidar-npm-3.5.3-c5f9b0a56a-9.zip/node_modules/chokidar/",\
+ "packageDependencies": [\
+ ["chokidar", "npm:3.5.3"],\
+ ["anymatch", "npm:3.1.2"],\
+ ["braces", "npm:3.0.2"],\
+ ["fsevents", "patch:fsevents@npm%3A2.3.2#optional!builtin<compat/fsevents>::version=2.3.2&hash=df0bf1"],\
+ ["glob-parent", "npm:5.1.2"],\
+ ["is-binary-path", "npm:2.1.0"],\
+ ["is-glob", "npm:4.0.3"],\
+ ["normalize-path", "npm:3.0.0"],\
+ ["readdirp", "npm:3.6.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["chownr", [\
+ ["npm:2.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/chownr-npm-2.0.0-638f1c9c61-9.zip/node_modules/chownr/",\
+ "packageDependencies": [\
+ ["chownr", "npm:2.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["clean-stack", [\
+ ["npm:2.2.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/clean-stack-npm-2.2.0-a8ce435a5c-9.zip/node_modules/clean-stack/",\
+ "packageDependencies": [\
+ ["clean-stack", "npm:2.2.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["color-support", [\
+ ["npm:1.1.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/color-support-npm-1.1.3-3be5c53455-9.zip/node_modules/color-support/",\
+ "packageDependencies": [\
+ ["color-support", "npm:1.1.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["concat-map", [\
+ ["npm:0.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/concat-map-npm-0.0.1-85a921b7ee-9.zip/node_modules/concat-map/",\
+ "packageDependencies": [\
+ ["concat-map", "npm:0.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["console-control-strings", [\
+ ["npm:1.1.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/console-control-strings-npm-1.1.0-e3160e5275-9.zip/node_modules/console-control-strings/",\
+ "packageDependencies": [\
+ ["console-control-strings", "npm:1.1.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["content-disposition", [\
+ ["npm:0.5.4", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/content-disposition-npm-0.5.4-2d93678616-9.zip/node_modules/content-disposition/",\
+ "packageDependencies": [\
+ ["content-disposition", "npm:0.5.4"],\
+ ["safe-buffer", "npm:5.2.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["content-type", [\
+ ["npm:1.0.4", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/content-type-npm-1.0.4-3b1a5ca16b-9.zip/node_modules/content-type/",\
+ "packageDependencies": [\
+ ["content-type", "npm:1.0.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["cookie", [\
+ ["npm:0.5.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/cookie-npm-0.5.0-e2d58a161a-9.zip/node_modules/cookie/",\
+ "packageDependencies": [\
+ ["cookie", "npm:0.5.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["cookie-signature", [\
+ ["npm:1.0.6", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/cookie-signature-npm-1.0.6-93f325f7f0-9.zip/node_modules/cookie-signature/",\
+ "packageDependencies": [\
+ ["cookie-signature", "npm:1.0.6"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["cors", [\
+ ["npm:2.8.5", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/cors-npm-2.8.5-c9935a2d12-9.zip/node_modules/cors/",\
+ "packageDependencies": [\
+ ["cors", "npm:2.8.5"],\
+ ["object-assign", "npm:4.1.1"],\
+ ["vary", "npm:1.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["dayjs", [\
+ ["npm:1.11.4", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/dayjs-npm-1.11.4-97921cd375-9.zip/node_modules/dayjs/",\
+ "packageDependencies": [\
+ ["dayjs", "npm:1.11.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["debug", [\
+ ["npm:2.6.9", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/debug-npm-2.6.9-7d4cb597dc-9.zip/node_modules/debug/",\
+ "packageDependencies": [\
+ ["debug", "npm:2.6.9"]\
+ ],\
+ "linkType": "SOFT"\
+ }],\
+ ["npm:3.2.7", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/debug-npm-3.2.7-754e818c7a-9.zip/node_modules/debug/",\
+ "packageDependencies": [\
+ ["debug", "npm:3.2.7"]\
+ ],\
+ "linkType": "SOFT"\
+ }],\
+ ["npm:4.3.4", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/",\
+ "packageDependencies": [\
+ ["debug", "npm:4.3.4"]\
+ ],\
+ "linkType": "SOFT"\
+ }],\
+ ["virtual:1820eff49a3510f59844b6605d494e2deca1520fa9e3aa7cf6600a27b1172a18c035fa06a11454e24c22ee26b6472ef79ca6bf8d7f3c9067161707279e01bef3#npm:2.6.9", {\
+ "packageLocation": "./.yarn/__virtual__/debug-virtual-e67ff7b3fa/6/.yarn/berry/cache/debug-npm-2.6.9-7d4cb597dc-9.zip/node_modules/debug/",\
+ "packageDependencies": [\
+ ["debug", "virtual:1820eff49a3510f59844b6605d494e2deca1520fa9e3aa7cf6600a27b1172a18c035fa06a11454e24c22ee26b6472ef79ca6bf8d7f3c9067161707279e01bef3#npm:2.6.9"],\
+ ["@types/supports-color", null],\
+ ["ms", "npm:2.0.0"],\
+ ["supports-color", null]\
+ ],\
+ "packagePeers": [\
+ "@types/supports-color",\
+ "supports-color"\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["virtual:5d6fa595c641abcb43d18b774684bacd52037a1e3ff8c4155feb531408a1913bd7a19513bf820252cfaae35026a75a776e3349943c7c05cd54bf6c51005e9d45#npm:3.2.7", {\
+ "packageLocation": "./.yarn/__virtual__/debug-virtual-9f0f33c158/6/.yarn/berry/cache/debug-npm-3.2.7-754e818c7a-9.zip/node_modules/debug/",\
+ "packageDependencies": [\
+ ["debug", "virtual:5d6fa595c641abcb43d18b774684bacd52037a1e3ff8c4155feb531408a1913bd7a19513bf820252cfaae35026a75a776e3349943c7c05cd54bf6c51005e9d45#npm:3.2.7"],\
+ ["@types/supports-color", null],\
+ ["ms", "npm:2.1.3"],\
+ ["supports-color", "npm:5.5.0"]\
+ ],\
+ "packagePeers": [\
+ "@types/supports-color",\
+ "supports-color"\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["virtual:993368e4d5b99ecbd76d0bd2c43aca0cecadb2a241ef3dc8dc18085b2d79167d5195671fbb701c9e6312177b2cac6e3d058c4aa296d48c4e02c788163cdcab10#npm:4.3.4", {\
+ "packageLocation": "./.yarn/__virtual__/debug-virtual-cd71439dc0/6/.yarn/berry/cache/debug-npm-4.3.4-4513954577-9.zip/node_modules/debug/",\
+ "packageDependencies": [\
+ ["debug", "virtual:993368e4d5b99ecbd76d0bd2c43aca0cecadb2a241ef3dc8dc18085b2d79167d5195671fbb701c9e6312177b2cac6e3d058c4aa296d48c4e02c788163cdcab10#npm:4.3.4"],\
+ ["@types/supports-color", null],\
+ ["ms", "npm:2.1.2"],\
+ ["supports-color", null]\
+ ],\
+ "packagePeers": [\
+ "@types/supports-color",\
+ "supports-color"\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["delegates", [\
+ ["npm:1.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/delegates-npm-1.0.0-9b1942d75f-9.zip/node_modules/delegates/",\
+ "packageDependencies": [\
+ ["delegates", "npm:1.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["denque", [\
+ ["npm:2.1.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/denque-npm-2.1.0-578d0b6297-9.zip/node_modules/denque/",\
+ "packageDependencies": [\
+ ["denque", "npm:2.1.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["depd", [\
+ ["npm:1.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/depd-npm-1.1.2-b0c8414da7-9.zip/node_modules/depd/",\
+ "packageDependencies": [\
+ ["depd", "npm:1.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:2.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/depd-npm-2.0.0-b6c51a4b43-9.zip/node_modules/depd/",\
+ "packageDependencies": [\
+ ["depd", "npm:2.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["destroy", [\
+ ["npm:1.2.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/destroy-npm-1.2.0-6a511802e2-9.zip/node_modules/destroy/",\
+ "packageDependencies": [\
+ ["destroy", "npm:1.2.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["dotenv", [\
+ ["npm:16.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/dotenv-npm-16.0.1-d99e72bb95-9.zip/node_modules/dotenv/",\
+ "packageDependencies": [\
+ ["dotenv", "npm:16.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["ecdsa-sig-formatter", [\
+ ["npm:1.0.11", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/ecdsa-sig-formatter-npm-1.0.11-b6784e7852-9.zip/node_modules/ecdsa-sig-formatter/",\
+ "packageDependencies": [\
+ ["ecdsa-sig-formatter", "npm:1.0.11"],\
+ ["safe-buffer", "npm:5.2.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["ee-first", [\
+ ["npm:1.1.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/ee-first-npm-1.1.1-33f8535b39-9.zip/node_modules/ee-first/",\
+ "packageDependencies": [\
+ ["ee-first", "npm:1.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["emoji-regex", [\
+ ["npm:8.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/emoji-regex-npm-8.0.0-213764015c-9.zip/node_modules/emoji-regex/",\
+ "packageDependencies": [\
+ ["emoji-regex", "npm:8.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["encodeurl", [\
+ ["npm:1.0.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/encodeurl-npm-1.0.2-f8c8454c41-9.zip/node_modules/encodeurl/",\
+ "packageDependencies": [\
+ ["encodeurl", "npm:1.0.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["encoding", [\
+ ["npm:0.1.13", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/encoding-npm-0.1.13-82a1837d30-9.zip/node_modules/encoding/",\
+ "packageDependencies": [\
+ ["encoding", "npm:0.1.13"],\
+ ["iconv-lite", "npm:0.6.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["env-paths", [\
+ ["npm:2.2.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/env-paths-npm-2.2.1-7c7577428c-9.zip/node_modules/env-paths/",\
+ "packageDependencies": [\
+ ["env-paths", "npm:2.2.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["err-code", [\
+ ["npm:2.0.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/err-code-npm-2.0.3-082e0ff9a7-9.zip/node_modules/err-code/",\
+ "packageDependencies": [\
+ ["err-code", "npm:2.0.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["escape-html", [\
+ ["npm:1.0.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/escape-html-npm-1.0.3-376c22ee74-9.zip/node_modules/escape-html/",\
+ "packageDependencies": [\
+ ["escape-html", "npm:1.0.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["etag", [\
+ ["npm:1.8.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/etag-npm-1.8.1-54a3b989d9-9.zip/node_modules/etag/",\
+ "packageDependencies": [\
+ ["etag", "npm:1.8.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["express", [\
+ ["npm:4.18.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/express-npm-4.18.1-842e583ae1-9.zip/node_modules/express/",\
+ "packageDependencies": [\
+ ["express", "npm:4.18.1"],\
+ ["accepts", "npm:1.3.8"],\
+ ["array-flatten", "npm:1.1.1"],\
+ ["body-parser", "npm:1.20.0"],\
+ ["content-disposition", "npm:0.5.4"],\
+ ["content-type", "npm:1.0.4"],\
+ ["cookie", "npm:0.5.0"],\
+ ["cookie-signature", "npm:1.0.6"],\
+ ["debug", "virtual:1820eff49a3510f59844b6605d494e2deca1520fa9e3aa7cf6600a27b1172a18c035fa06a11454e24c22ee26b6472ef79ca6bf8d7f3c9067161707279e01bef3#npm:2.6.9"],\
+ ["depd", "npm:2.0.0"],\
+ ["encodeurl", "npm:1.0.2"],\
+ ["escape-html", "npm:1.0.3"],\
+ ["etag", "npm:1.8.1"],\
+ ["finalhandler", "npm:1.2.0"],\
+ ["fresh", "npm:0.5.2"],\
+ ["http-errors", "npm:2.0.0"],\
+ ["merge-descriptors", "npm:1.0.1"],\
+ ["methods", "npm:1.1.2"],\
+ ["on-finished", "npm:2.4.1"],\
+ ["parseurl", "npm:1.3.3"],\
+ ["path-to-regexp", "npm:0.1.7"],\
+ ["proxy-addr", "npm:2.0.7"],\
+ ["qs", "npm:6.10.3"],\
+ ["range-parser", "npm:1.2.1"],\
+ ["safe-buffer", "npm:5.2.1"],\
+ ["send", "npm:0.18.0"],\
+ ["serve-static", "npm:1.15.0"],\
+ ["setprototypeof", "npm:1.2.0"],\
+ ["statuses", "npm:2.0.1"],\
+ ["type-is", "npm:1.6.18"],\
+ ["utils-merge", "npm:1.0.1"],\
+ ["vary", "npm:1.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["fill-range", [\
+ ["npm:7.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/fill-range-npm-7.0.1-b8b1817caa-9.zip/node_modules/fill-range/",\
+ "packageDependencies": [\
+ ["fill-range", "npm:7.0.1"],\
+ ["to-regex-range", "npm:5.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["finalhandler", [\
+ ["npm:1.2.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/finalhandler-npm-1.2.0-593d001463-9.zip/node_modules/finalhandler/",\
+ "packageDependencies": [\
+ ["finalhandler", "npm:1.2.0"],\
+ ["debug", "virtual:1820eff49a3510f59844b6605d494e2deca1520fa9e3aa7cf6600a27b1172a18c035fa06a11454e24c22ee26b6472ef79ca6bf8d7f3c9067161707279e01bef3#npm:2.6.9"],\
+ ["encodeurl", "npm:1.0.2"],\
+ ["escape-html", "npm:1.0.3"],\
+ ["on-finished", "npm:2.4.1"],\
+ ["parseurl", "npm:1.3.3"],\
+ ["statuses", "npm:2.0.1"],\
+ ["unpipe", "npm:1.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["follow-redirects", [\
+ ["npm:1.15.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/follow-redirects-npm-1.15.1-6b191885cd-9.zip/node_modules/follow-redirects/",\
+ "packageDependencies": [\
+ ["follow-redirects", "npm:1.15.1"]\
+ ],\
+ "linkType": "SOFT"\
+ }],\
+ ["virtual:a6641ce4e3bdcc0997f8f53d9481b67c5d38e21276de8eeee7bf92881685b3ad5600bae416c2af904ceab8132bac649e7efd0af93f18e158e0e65ee05a263d72#npm:1.15.1", {\
+ "packageLocation": "./.yarn/__virtual__/follow-redirects-virtual-7946991bdf/6/.yarn/berry/cache/follow-redirects-npm-1.15.1-6b191885cd-9.zip/node_modules/follow-redirects/",\
+ "packageDependencies": [\
+ ["follow-redirects", "virtual:a6641ce4e3bdcc0997f8f53d9481b67c5d38e21276de8eeee7bf92881685b3ad5600bae416c2af904ceab8132bac649e7efd0af93f18e158e0e65ee05a263d72#npm:1.15.1"],\
+ ["@types/debug", null],\
+ ["debug", null]\
+ ],\
+ "packagePeers": [\
+ "@types/debug",\
+ "debug"\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["forwarded", [\
+ ["npm:0.2.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/forwarded-npm-0.2.0-6473dabe35-9.zip/node_modules/forwarded/",\
+ "packageDependencies": [\
+ ["forwarded", "npm:0.2.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["fresh", [\
+ ["npm:0.5.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/fresh-npm-0.5.2-ad2bb4c0a2-9.zip/node_modules/fresh/",\
+ "packageDependencies": [\
+ ["fresh", "npm:0.5.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["fs-minipass", [\
+ ["npm:2.1.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/fs-minipass-npm-2.1.0-501ef87306-9.zip/node_modules/fs-minipass/",\
+ "packageDependencies": [\
+ ["fs-minipass", "npm:2.1.0"],\
+ ["minipass", "npm:3.3.6"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["fs.realpath", [\
+ ["npm:1.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/fs.realpath-npm-1.0.0-c8f05d8126-9.zip/node_modules/fs.realpath/",\
+ "packageDependencies": [\
+ ["fs.realpath", "npm:1.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["fsevents", [\
+ ["patch:fsevents@npm%3A2.3.2#optional!builtin<compat/fsevents>::version=2.3.2&hash=df0bf1", {\
+ "packageLocation": "./.yarn/unplugged/fsevents-patch-19706e7e35/node_modules/fsevents/",\
+ "packageDependencies": [\
+ ["fsevents", "patch:fsevents@npm%3A2.3.2#optional!builtin<compat/fsevents>::version=2.3.2&hash=df0bf1"],\
+ ["node-gyp", "npm:9.3.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["function-bind", [\
+ ["npm:1.1.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/function-bind-npm-1.1.1-b56b322ae9-9.zip/node_modules/function-bind/",\
+ "packageDependencies": [\
+ ["function-bind", "npm:1.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["gauge", [\
+ ["npm:4.0.4", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/gauge-npm-4.0.4-8f878385e9-9.zip/node_modules/gauge/",\
+ "packageDependencies": [\
+ ["gauge", "npm:4.0.4"],\
+ ["aproba", "npm:2.0.0"],\
+ ["color-support", "npm:1.1.3"],\
+ ["console-control-strings", "npm:1.1.0"],\
+ ["has-unicode", "npm:2.0.1"],\
+ ["signal-exit", "npm:3.0.7"],\
+ ["string-width", "npm:4.2.3"],\
+ ["strip-ansi", "npm:6.0.1"],\
+ ["wide-align", "npm:1.1.5"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["get-intrinsic", [\
+ ["npm:1.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/get-intrinsic-npm-1.1.2-89f421122b-9.zip/node_modules/get-intrinsic/",\
+ "packageDependencies": [\
+ ["get-intrinsic", "npm:1.1.2"],\
+ ["function-bind", "npm:1.1.1"],\
+ ["has", "npm:1.0.3"],\
+ ["has-symbols", "npm:1.0.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["glob", [\
+ ["npm:7.2.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/glob-npm-7.2.3-2d866d17a5-9.zip/node_modules/glob/",\
+ "packageDependencies": [\
+ ["glob", "npm:7.2.3"],\
+ ["fs.realpath", "npm:1.0.0"],\
+ ["inflight", "npm:1.0.6"],\
+ ["inherits", "npm:2.0.4"],\
+ ["minimatch", "npm:3.1.2"],\
+ ["once", "npm:1.4.0"],\
+ ["path-is-absolute", "npm:1.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:8.1.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/glob-npm-8.1.0-65f64af8b1-9.zip/node_modules/glob/",\
+ "packageDependencies": [\
+ ["glob", "npm:8.1.0"],\
+ ["fs.realpath", "npm:1.0.0"],\
+ ["inflight", "npm:1.0.6"],\
+ ["inherits", "npm:2.0.4"],\
+ ["minimatch", "npm:5.1.6"],\
+ ["once", "npm:1.4.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["glob-parent", [\
+ ["npm:5.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/glob-parent-npm-5.1.2-021ab32634-9.zip/node_modules/glob-parent/",\
+ "packageDependencies": [\
+ ["glob-parent", "npm:5.1.2"],\
+ ["is-glob", "npm:4.0.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["graceful-fs", [\
+ ["npm:4.2.10", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/graceful-fs-npm-4.2.10-79c70989ca-9.zip/node_modules/graceful-fs/",\
+ "packageDependencies": [\
+ ["graceful-fs", "npm:4.2.10"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["has", [\
+ ["npm:1.0.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/has-npm-1.0.3-b7f00631c1-9.zip/node_modules/has/",\
+ "packageDependencies": [\
+ ["has", "npm:1.0.3"],\
+ ["function-bind", "npm:1.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["has-flag", [\
+ ["npm:3.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/has-flag-npm-3.0.0-16ac11fe05-9.zip/node_modules/has-flag/",\
+ "packageDependencies": [\
+ ["has-flag", "npm:3.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["has-symbols", [\
+ ["npm:1.0.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/has-symbols-npm-1.0.3-1986bff2c4-9.zip/node_modules/has-symbols/",\
+ "packageDependencies": [\
+ ["has-symbols", "npm:1.0.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["has-unicode", [\
+ ["npm:2.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/has-unicode-npm-2.0.1-893adb4747-9.zip/node_modules/has-unicode/",\
+ "packageDependencies": [\
+ ["has-unicode", "npm:2.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["http-cache-semantics", [\
+ ["npm:4.1.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/http-cache-semantics-npm-4.1.1-1120131375-9.zip/node_modules/http-cache-semantics/",\
+ "packageDependencies": [\
+ ["http-cache-semantics", "npm:4.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["http-errors", [\
+ ["npm:2.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/http-errors-npm-2.0.0-3f1c503428-9.zip/node_modules/http-errors/",\
+ "packageDependencies": [\
+ ["http-errors", "npm:2.0.0"],\
+ ["depd", "npm:2.0.0"],\
+ ["inherits", "npm:2.0.4"],\
+ ["setprototypeof", "npm:1.2.0"],\
+ ["statuses", "npm:2.0.1"],\
+ ["toidentifier", "npm:1.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["http-proxy-agent", [\
+ ["npm:5.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/http-proxy-agent-npm-5.0.0-7f1f121b83-9.zip/node_modules/http-proxy-agent/",\
+ "packageDependencies": [\
+ ["http-proxy-agent", "npm:5.0.0"],\
+ ["@tootallnate/once", "npm:2.0.0"],\
+ ["agent-base", "npm:6.0.2"],\
+ ["debug", "virtual:993368e4d5b99ecbd76d0bd2c43aca0cecadb2a241ef3dc8dc18085b2d79167d5195671fbb701c9e6312177b2cac6e3d058c4aa296d48c4e02c788163cdcab10#npm:4.3.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["https-proxy-agent", [\
+ ["npm:5.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/https-proxy-agent-npm-5.0.1-42d65f358e-9.zip/node_modules/https-proxy-agent/",\
+ "packageDependencies": [\
+ ["https-proxy-agent", "npm:5.0.1"],\
+ ["agent-base", "npm:6.0.2"],\
+ ["debug", "virtual:993368e4d5b99ecbd76d0bd2c43aca0cecadb2a241ef3dc8dc18085b2d79167d5195671fbb701c9e6312177b2cac6e3d058c4aa296d48c4e02c788163cdcab10#npm:4.3.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["humanize-ms", [\
+ ["npm:1.2.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/humanize-ms-npm-1.2.1-e942bd7329-9.zip/node_modules/humanize-ms/",\
+ "packageDependencies": [\
+ ["humanize-ms", "npm:1.2.1"],\
+ ["ms", "npm:2.1.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["iconv-lite", [\
+ ["npm:0.4.24", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/iconv-lite-npm-0.4.24-c5c4ac6695-9.zip/node_modules/iconv-lite/",\
+ "packageDependencies": [\
+ ["iconv-lite", "npm:0.4.24"],\
+ ["safer-buffer", "npm:2.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:0.6.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/iconv-lite-npm-0.6.3-24b8aae27e-9.zip/node_modules/iconv-lite/",\
+ "packageDependencies": [\
+ ["iconv-lite", "npm:0.6.3"],\
+ ["safer-buffer", "npm:2.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["ieee754", [\
+ ["npm:1.2.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/ieee754-npm-1.2.1-fb63b3caeb-9.zip/node_modules/ieee754/",\
+ "packageDependencies": [\
+ ["ieee754", "npm:1.2.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["ignore-by-default", [\
+ ["npm:1.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/ignore-by-default-npm-1.0.1-78ea10bc54-9.zip/node_modules/ignore-by-default/",\
+ "packageDependencies": [\
+ ["ignore-by-default", "npm:1.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["imurmurhash", [\
+ ["npm:0.1.4", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/imurmurhash-npm-0.1.4-610c5068a0-9.zip/node_modules/imurmurhash/",\
+ "packageDependencies": [\
+ ["imurmurhash", "npm:0.1.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["indent-string", [\
+ ["npm:4.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/indent-string-npm-4.0.0-7b717435b2-9.zip/node_modules/indent-string/",\
+ "packageDependencies": [\
+ ["indent-string", "npm:4.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["infer-owner", [\
+ ["npm:1.0.4", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/infer-owner-npm-1.0.4-685ac3d2af-9.zip/node_modules/infer-owner/",\
+ "packageDependencies": [\
+ ["infer-owner", "npm:1.0.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["inflight", [\
+ ["npm:1.0.6", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/inflight-npm-1.0.6-ccedb4b908-9.zip/node_modules/inflight/",\
+ "packageDependencies": [\
+ ["inflight", "npm:1.0.6"],\
+ ["once", "npm:1.4.0"],\
+ ["wrappy", "npm:1.0.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["inherits", [\
+ ["npm:2.0.4", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/inherits-npm-2.0.4-c66b3957a0-9.zip/node_modules/inherits/",\
+ "packageDependencies": [\
+ ["inherits", "npm:2.0.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["ip", [\
+ ["npm:2.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/ip-npm-2.0.0-204facb3cc-9.zip/node_modules/ip/",\
+ "packageDependencies": [\
+ ["ip", "npm:2.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["ipaddr.js", [\
+ ["npm:1.9.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/ipaddr.js-npm-1.9.1-19ae7878b4-9.zip/node_modules/ipaddr.js/",\
+ "packageDependencies": [\
+ ["ipaddr.js", "npm:1.9.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["is-binary-path", [\
+ ["npm:2.1.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/is-binary-path-npm-2.1.0-e61d46f557-9.zip/node_modules/is-binary-path/",\
+ "packageDependencies": [\
+ ["is-binary-path", "npm:2.1.0"],\
+ ["binary-extensions", "npm:2.2.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["is-extglob", [\
+ ["npm:2.1.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/is-extglob-npm-2.1.1-0870ea68b5-9.zip/node_modules/is-extglob/",\
+ "packageDependencies": [\
+ ["is-extglob", "npm:2.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["is-fullwidth-code-point", [\
+ ["npm:3.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-9.zip/node_modules/is-fullwidth-code-point/",\
+ "packageDependencies": [\
+ ["is-fullwidth-code-point", "npm:3.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["is-glob", [\
+ ["npm:4.0.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/is-glob-npm-4.0.3-cb87bf1bdb-9.zip/node_modules/is-glob/",\
+ "packageDependencies": [\
+ ["is-glob", "npm:4.0.3"],\
+ ["is-extglob", "npm:2.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["is-lambda", [\
+ ["npm:1.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/is-lambda-npm-1.0.1-7ab55bc8a8-9.zip/node_modules/is-lambda/",\
+ "packageDependencies": [\
+ ["is-lambda", "npm:1.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["is-number", [\
+ ["npm:7.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/is-number-npm-7.0.0-060086935c-9.zip/node_modules/is-number/",\
+ "packageDependencies": [\
+ ["is-number", "npm:7.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["isexe", [\
+ ["npm:2.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/isexe-npm-2.0.0-b58870bd2e-9.zip/node_modules/isexe/",\
+ "packageDependencies": [\
+ ["isexe", "npm:2.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["jsonwebtoken", [\
+ ["npm:8.5.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/jsonwebtoken-npm-8.5.1-c007670b76-9.zip/node_modules/jsonwebtoken/",\
+ "packageDependencies": [\
+ ["jsonwebtoken", "npm:8.5.1"],\
+ ["jws", "npm:3.2.2"],\
+ ["lodash.includes", "npm:4.3.0"],\
+ ["lodash.isboolean", "npm:3.0.3"],\
+ ["lodash.isinteger", "npm:4.0.4"],\
+ ["lodash.isnumber", "npm:3.0.3"],\
+ ["lodash.isplainobject", "npm:4.0.6"],\
+ ["lodash.isstring", "npm:4.0.1"],\
+ ["lodash.once", "npm:4.1.1"],\
+ ["ms", "npm:2.1.3"],\
+ ["semver", "npm:5.7.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["jwa", [\
+ ["npm:1.4.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/jwa-npm-1.4.1-4f19d6572c-9.zip/node_modules/jwa/",\
+ "packageDependencies": [\
+ ["jwa", "npm:1.4.1"],\
+ ["buffer-equal-constant-time", "npm:1.0.1"],\
+ ["ecdsa-sig-formatter", "npm:1.0.11"],\
+ ["safe-buffer", "npm:5.2.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["jws", [\
+ ["npm:3.2.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/jws-npm-3.2.2-c1ae59c7af-9.zip/node_modules/jws/",\
+ "packageDependencies": [\
+ ["jws", "npm:3.2.2"],\
+ ["jwa", "npm:1.4.1"],\
+ ["safe-buffer", "npm:5.2.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["kareem", [\
+ ["npm:2.4.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/kareem-npm-2.4.1-cb643c6e21-9.zip/node_modules/kareem/",\
+ "packageDependencies": [\
+ ["kareem", "npm:2.4.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["lodash", [\
+ ["npm:4.17.21", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/lodash-npm-4.17.21-6382451519-9.zip/node_modules/lodash/",\
+ "packageDependencies": [\
+ ["lodash", "npm:4.17.21"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["lodash.includes", [\
+ ["npm:4.3.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/lodash.includes-npm-4.3.0-3a2f6fa22c-9.zip/node_modules/lodash.includes/",\
+ "packageDependencies": [\
+ ["lodash.includes", "npm:4.3.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["lodash.isboolean", [\
+ ["npm:3.0.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/lodash.isboolean-npm-3.0.3-b575b41488-9.zip/node_modules/lodash.isboolean/",\
+ "packageDependencies": [\
+ ["lodash.isboolean", "npm:3.0.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["lodash.isinteger", [\
+ ["npm:4.0.4", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/lodash.isinteger-npm-4.0.4-42add9f4e1-9.zip/node_modules/lodash.isinteger/",\
+ "packageDependencies": [\
+ ["lodash.isinteger", "npm:4.0.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["lodash.isnumber", [\
+ ["npm:3.0.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/lodash.isnumber-npm-3.0.3-b3bb5f7347-9.zip/node_modules/lodash.isnumber/",\
+ "packageDependencies": [\
+ ["lodash.isnumber", "npm:3.0.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["lodash.isplainobject", [\
+ ["npm:4.0.6", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/lodash.isplainobject-npm-4.0.6-d73937742f-9.zip/node_modules/lodash.isplainobject/",\
+ "packageDependencies": [\
+ ["lodash.isplainobject", "npm:4.0.6"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["lodash.isstring", [\
+ ["npm:4.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/lodash.isstring-npm-4.0.1-721fee791c-9.zip/node_modules/lodash.isstring/",\
+ "packageDependencies": [\
+ ["lodash.isstring", "npm:4.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["lodash.once", [\
+ ["npm:4.1.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/lodash.once-npm-4.1.1-d8ba329ead-9.zip/node_modules/lodash.once/",\
+ "packageDependencies": [\
+ ["lodash.once", "npm:4.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["lru-cache", [\
+ ["npm:6.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/lru-cache-npm-6.0.0-b4c8668fe1-9.zip/node_modules/lru-cache/",\
+ "packageDependencies": [\
+ ["lru-cache", "npm:6.0.0"],\
+ ["yallist", "npm:4.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:7.14.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/lru-cache-npm-7.14.1-d3ba9407b6-9.zip/node_modules/lru-cache/",\
+ "packageDependencies": [\
+ ["lru-cache", "npm:7.14.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["make-fetch-happen", [\
+ ["npm:10.2.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/make-fetch-happen-npm-10.2.1-f1cc7cd2df-9.zip/node_modules/make-fetch-happen/",\
+ "packageDependencies": [\
+ ["make-fetch-happen", "npm:10.2.1"],\
+ ["agentkeepalive", "npm:4.2.1"],\
+ ["cacache", "npm:16.1.3"],\
+ ["http-cache-semantics", "npm:4.1.1"],\
+ ["http-proxy-agent", "npm:5.0.0"],\
+ ["https-proxy-agent", "npm:5.0.1"],\
+ ["is-lambda", "npm:1.0.1"],\
+ ["lru-cache", "npm:7.14.1"],\
+ ["minipass", "npm:3.3.6"],\
+ ["minipass-collect", "npm:1.0.2"],\
+ ["minipass-fetch", "npm:2.1.2"],\
+ ["minipass-flush", "npm:1.0.5"],\
+ ["minipass-pipeline", "npm:1.2.4"],\
+ ["negotiator", "npm:0.6.3"],\
+ ["promise-retry", "npm:2.0.1"],\
+ ["socks-proxy-agent", "npm:7.0.0"],\
+ ["ssri", "npm:9.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["media-typer", [\
+ ["npm:0.3.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/media-typer-npm-0.3.0-8674f8f0f5-9.zip/node_modules/media-typer/",\
+ "packageDependencies": [\
+ ["media-typer", "npm:0.3.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["memory-pager", [\
+ ["npm:1.5.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/memory-pager-npm-1.5.0-46e20e6c81-9.zip/node_modules/memory-pager/",\
+ "packageDependencies": [\
+ ["memory-pager", "npm:1.5.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["merge-descriptors", [\
+ ["npm:1.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/merge-descriptors-npm-1.0.1-615287aaa8-9.zip/node_modules/merge-descriptors/",\
+ "packageDependencies": [\
+ ["merge-descriptors", "npm:1.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["methods", [\
+ ["npm:1.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/methods-npm-1.1.2-92f6fdb39b-9.zip/node_modules/methods/",\
+ "packageDependencies": [\
+ ["methods", "npm:1.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["mime", [\
+ ["npm:1.6.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/mime-npm-1.6.0-60ae95038a-9.zip/node_modules/mime/",\
+ "packageDependencies": [\
+ ["mime", "npm:1.6.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["mime-db", [\
+ ["npm:1.52.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/mime-db-npm-1.52.0-b5371d6fd2-9.zip/node_modules/mime-db/",\
+ "packageDependencies": [\
+ ["mime-db", "npm:1.52.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["mime-types", [\
+ ["npm:2.1.35", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/mime-types-npm-2.1.35-dd9ea9f3e2-9.zip/node_modules/mime-types/",\
+ "packageDependencies": [\
+ ["mime-types", "npm:2.1.35"],\
+ ["mime-db", "npm:1.52.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["minimatch", [\
+ ["npm:3.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/minimatch-npm-3.1.2-9405269906-9.zip/node_modules/minimatch/",\
+ "packageDependencies": [\
+ ["minimatch", "npm:3.1.2"],\
+ ["brace-expansion", "npm:1.1.11"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:5.1.6", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/minimatch-npm-5.1.6-1e71429f4c-9.zip/node_modules/minimatch/",\
+ "packageDependencies": [\
+ ["minimatch", "npm:5.1.6"],\
+ ["brace-expansion", "npm:2.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["minipass", [\
+ ["npm:3.3.6", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/minipass-npm-3.3.6-b8d93a945b-9.zip/node_modules/minipass/",\
+ "packageDependencies": [\
+ ["minipass", "npm:3.3.6"],\
+ ["yallist", "npm:4.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:4.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/minipass-npm-4.0.0-2520d5ae3c-9.zip/node_modules/minipass/",\
+ "packageDependencies": [\
+ ["minipass", "npm:4.0.0"],\
+ ["yallist", "npm:4.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["minipass-collect", [\
+ ["npm:1.0.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/minipass-collect-npm-1.0.2-3b4676eab5-9.zip/node_modules/minipass-collect/",\
+ "packageDependencies": [\
+ ["minipass-collect", "npm:1.0.2"],\
+ ["minipass", "npm:3.3.6"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["minipass-fetch", [\
+ ["npm:2.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/minipass-fetch-npm-2.1.2-9b21a5c930-9.zip/node_modules/minipass-fetch/",\
+ "packageDependencies": [\
+ ["minipass-fetch", "npm:2.1.2"],\
+ ["encoding", "npm:0.1.13"],\
+ ["minipass", "npm:3.3.6"],\
+ ["minipass-sized", "npm:1.0.3"],\
+ ["minizlib", "npm:2.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["minipass-flush", [\
+ ["npm:1.0.5", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/minipass-flush-npm-1.0.5-efe79d9826-9.zip/node_modules/minipass-flush/",\
+ "packageDependencies": [\
+ ["minipass-flush", "npm:1.0.5"],\
+ ["minipass", "npm:3.3.6"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["minipass-pipeline", [\
+ ["npm:1.2.4", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/minipass-pipeline-npm-1.2.4-5924cb077f-9.zip/node_modules/minipass-pipeline/",\
+ "packageDependencies": [\
+ ["minipass-pipeline", "npm:1.2.4"],\
+ ["minipass", "npm:3.3.6"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["minipass-sized", [\
+ ["npm:1.0.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/minipass-sized-npm-1.0.3-306d86f432-9.zip/node_modules/minipass-sized/",\
+ "packageDependencies": [\
+ ["minipass-sized", "npm:1.0.3"],\
+ ["minipass", "npm:3.3.6"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["minizlib", [\
+ ["npm:2.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/minizlib-npm-2.1.2-ea89cd0cfb-9.zip/node_modules/minizlib/",\
+ "packageDependencies": [\
+ ["minizlib", "npm:2.1.2"],\
+ ["minipass", "npm:3.3.6"],\
+ ["yallist", "npm:4.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["mkdirp", [\
+ ["npm:1.0.4", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/mkdirp-npm-1.0.4-37f6ef56b9-9.zip/node_modules/mkdirp/",\
+ "packageDependencies": [\
+ ["mkdirp", "npm:1.0.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["mongodb", [\
+ ["npm:4.8.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/mongodb-npm-4.8.1-95f8dfccef-9.zip/node_modules/mongodb/",\
+ "packageDependencies": [\
+ ["mongodb", "npm:4.8.1"],\
+ ["bson", "npm:4.6.5"],\
+ ["denque", "npm:2.1.0"],\
+ ["mongodb-connection-string-url", "npm:2.5.3"],\
+ ["saslprep", "npm:1.0.3"],\
+ ["socks", "npm:2.7.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["mongodb-connection-string-url", [\
+ ["npm:2.5.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/mongodb-connection-string-url-npm-2.5.3-217bf1563c-9.zip/node_modules/mongodb-connection-string-url/",\
+ "packageDependencies": [\
+ ["mongodb-connection-string-url", "npm:2.5.3"],\
+ ["@types/whatwg-url", "npm:8.2.2"],\
+ ["whatwg-url", "npm:11.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["mongoose", [\
+ ["npm:6.5.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/mongoose-npm-6.5.0-f07fec75b3-9.zip/node_modules/mongoose/",\
+ "packageDependencies": [\
+ ["mongoose", "npm:6.5.0"],\
+ ["bson", "npm:4.6.5"],\
+ ["kareem", "npm:2.4.1"],\
+ ["mongodb", "npm:4.8.1"],\
+ ["mpath", "npm:0.9.0"],\
+ ["mquery", "npm:4.0.3"],\
+ ["ms", "npm:2.1.3"],\
+ ["sift", "npm:16.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["mpath", [\
+ ["npm:0.9.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/mpath-npm-0.9.0-e79cc94aea-9.zip/node_modules/mpath/",\
+ "packageDependencies": [\
+ ["mpath", "npm:0.9.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["mquery", [\
+ ["npm:4.0.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/mquery-npm-4.0.3-993368e4d5-9.zip/node_modules/mquery/",\
+ "packageDependencies": [\
+ ["mquery", "npm:4.0.3"],\
+ ["debug", "virtual:993368e4d5b99ecbd76d0bd2c43aca0cecadb2a241ef3dc8dc18085b2d79167d5195671fbb701c9e6312177b2cac6e3d058c4aa296d48c4e02c788163cdcab10#npm:4.3.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["ms", [\
+ ["npm:2.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/ms-npm-2.0.0-9e1101a471-9.zip/node_modules/ms/",\
+ "packageDependencies": [\
+ ["ms", "npm:2.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:2.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/ms-npm-2.1.2-ec0c1512ff-9.zip/node_modules/ms/",\
+ "packageDependencies": [\
+ ["ms", "npm:2.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:2.1.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/ms-npm-2.1.3-81ff3cfac1-9.zip/node_modules/ms/",\
+ "packageDependencies": [\
+ ["ms", "npm:2.1.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["negotiator", [\
+ ["npm:0.6.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/negotiator-npm-0.6.3-9d50e36171-9.zip/node_modules/negotiator/",\
+ "packageDependencies": [\
+ ["negotiator", "npm:0.6.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["node-gyp", [\
+ ["npm:9.3.1", {\
+ "packageLocation": "./.yarn/unplugged/node-gyp-npm-9.3.1-43540bab9c/node_modules/node-gyp/",\
+ "packageDependencies": [\
+ ["node-gyp", "npm:9.3.1"],\
+ ["env-paths", "npm:2.2.1"],\
+ ["glob", "npm:7.2.3"],\
+ ["graceful-fs", "npm:4.2.10"],\
+ ["make-fetch-happen", "npm:10.2.1"],\
+ ["nopt", "npm:6.0.0"],\
+ ["npmlog", "npm:6.0.2"],\
+ ["rimraf", "npm:3.0.2"],\
+ ["semver", "npm:7.3.8"],\
+ ["tar", "npm:6.1.13"],\
+ ["which", "npm:2.0.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["nodemon", [\
+ ["npm:2.0.19", {\
+ "packageLocation": "./.yarn/unplugged/nodemon-npm-2.0.19-5d6fa595c6/node_modules/nodemon/",\
+ "packageDependencies": [\
+ ["nodemon", "npm:2.0.19"],\
+ ["chokidar", "npm:3.5.3"],\
+ ["debug", "virtual:5d6fa595c641abcb43d18b774684bacd52037a1e3ff8c4155feb531408a1913bd7a19513bf820252cfaae35026a75a776e3349943c7c05cd54bf6c51005e9d45#npm:3.2.7"],\
+ ["ignore-by-default", "npm:1.0.1"],\
+ ["minimatch", "npm:3.1.2"],\
+ ["pstree.remy", "npm:1.1.8"],\
+ ["semver", "npm:5.7.1"],\
+ ["simple-update-notifier", "npm:1.0.7"],\
+ ["supports-color", "npm:5.5.0"],\
+ ["touch", "npm:3.1.0"],\
+ ["undefsafe", "npm:2.0.5"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["nopt", [\
+ ["npm:1.0.10", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/nopt-npm-1.0.10-f3db192976-9.zip/node_modules/nopt/",\
+ "packageDependencies": [\
+ ["nopt", "npm:1.0.10"],\
+ ["abbrev", "npm:1.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:6.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/nopt-npm-6.0.0-5ea8050815-9.zip/node_modules/nopt/",\
+ "packageDependencies": [\
+ ["nopt", "npm:6.0.0"],\
+ ["abbrev", "npm:1.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["normalize-path", [\
+ ["npm:3.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/normalize-path-npm-3.0.0-658ba7d77f-9.zip/node_modules/normalize-path/",\
+ "packageDependencies": [\
+ ["normalize-path", "npm:3.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["npmlog", [\
+ ["npm:6.0.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/npmlog-npm-6.0.2-e0e69455c7-9.zip/node_modules/npmlog/",\
+ "packageDependencies": [\
+ ["npmlog", "npm:6.0.2"],\
+ ["are-we-there-yet", "npm:3.0.1"],\
+ ["console-control-strings", "npm:1.1.0"],\
+ ["gauge", "npm:4.0.4"],\
+ ["set-blocking", "npm:2.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["object-assign", [\
+ ["npm:4.1.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/object-assign-npm-4.1.1-1004ad6dec-9.zip/node_modules/object-assign/",\
+ "packageDependencies": [\
+ ["object-assign", "npm:4.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["object-inspect", [\
+ ["npm:1.12.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/object-inspect-npm-1.12.2-f125a822c0-9.zip/node_modules/object-inspect/",\
+ "packageDependencies": [\
+ ["object-inspect", "npm:1.12.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["on-finished", [\
+ ["npm:2.4.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/on-finished-npm-2.4.1-907af70f88-9.zip/node_modules/on-finished/",\
+ "packageDependencies": [\
+ ["on-finished", "npm:2.4.1"],\
+ ["ee-first", "npm:1.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["once", [\
+ ["npm:1.4.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/once-npm-1.4.0-ccf03ef07a-9.zip/node_modules/once/",\
+ "packageDependencies": [\
+ ["once", "npm:1.4.0"],\
+ ["wrappy", "npm:1.0.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["p-map", [\
+ ["npm:4.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/p-map-npm-4.0.0-4677ae07c7-9.zip/node_modules/p-map/",\
+ "packageDependencies": [\
+ ["p-map", "npm:4.0.0"],\
+ ["aggregate-error", "npm:3.1.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["parseurl", [\
+ ["npm:1.3.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/parseurl-npm-1.3.3-1542397e00-9.zip/node_modules/parseurl/",\
+ "packageDependencies": [\
+ ["parseurl", "npm:1.3.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["path-is-absolute", [\
+ ["npm:1.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/path-is-absolute-npm-1.0.1-31bc695ffd-9.zip/node_modules/path-is-absolute/",\
+ "packageDependencies": [\
+ ["path-is-absolute", "npm:1.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["path-to-regexp", [\
+ ["npm:0.1.7", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/path-to-regexp-npm-0.1.7-2605347373-9.zip/node_modules/path-to-regexp/",\
+ "packageDependencies": [\
+ ["path-to-regexp", "npm:0.1.7"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["picomatch", [\
+ ["npm:2.3.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/picomatch-npm-2.3.1-c782cfd986-9.zip/node_modules/picomatch/",\
+ "packageDependencies": [\
+ ["picomatch", "npm:2.3.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["pop-iterate", [\
+ ["npm:1.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/pop-iterate-npm-1.0.1-9d72ac11a3-9.zip/node_modules/pop-iterate/",\
+ "packageDependencies": [\
+ ["pop-iterate", "npm:1.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["promise-inflight", [\
+ ["npm:1.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/promise-inflight-npm-1.0.1-5bb925afac-9.zip/node_modules/promise-inflight/",\
+ "packageDependencies": [\
+ ["promise-inflight", "npm:1.0.1"]\
+ ],\
+ "linkType": "SOFT"\
+ }],\
+ ["virtual:4e2088ed0df52533102f445d7e7aeba6560b7effa0cabbc7cc20dd1e36a86dd838cc541de4414688f4ce3ec77b0ad5298cea6de581350d934ceb35c3e0fe3462#npm:1.0.1", {\
+ "packageLocation": "./.yarn/__virtual__/promise-inflight-virtual-faec2dbb37/6/.yarn/berry/cache/promise-inflight-npm-1.0.1-5bb925afac-9.zip/node_modules/promise-inflight/",\
+ "packageDependencies": [\
+ ["promise-inflight", "virtual:4e2088ed0df52533102f445d7e7aeba6560b7effa0cabbc7cc20dd1e36a86dd838cc541de4414688f4ce3ec77b0ad5298cea6de581350d934ceb35c3e0fe3462#npm:1.0.1"],\
+ ["@types/bluebird", null],\
+ ["bluebird", null]\
+ ],\
+ "packagePeers": [\
+ "@types/bluebird",\
+ "bluebird"\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["promise-retry", [\
+ ["npm:2.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/promise-retry-npm-2.0.1-871f0b01b7-9.zip/node_modules/promise-retry/",\
+ "packageDependencies": [\
+ ["promise-retry", "npm:2.0.1"],\
+ ["err-code", "npm:2.0.3"],\
+ ["retry", "npm:0.12.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["proxy-addr", [\
+ ["npm:2.0.7", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/proxy-addr-npm-2.0.7-dae6552872-9.zip/node_modules/proxy-addr/",\
+ "packageDependencies": [\
+ ["proxy-addr", "npm:2.0.7"],\
+ ["forwarded", "npm:0.2.0"],\
+ ["ipaddr.js", "npm:1.9.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["pstree.remy", [\
+ ["npm:1.1.8", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/pstree.remy-npm-1.1.8-2dd5d55de2-9.zip/node_modules/pstree.remy/",\
+ "packageDependencies": [\
+ ["pstree.remy", "npm:1.1.8"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["punycode", [\
+ ["npm:2.1.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/punycode-npm-2.1.1-26eb3e15cf-9.zip/node_modules/punycode/",\
+ "packageDependencies": [\
+ ["punycode", "npm:2.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["q", [\
+ ["npm:2.0.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/q-npm-2.0.3-1c304a58d9-9.zip/node_modules/q/",\
+ "packageDependencies": [\
+ ["q", "npm:2.0.3"],\
+ ["asap", "npm:2.0.6"],\
+ ["pop-iterate", "npm:1.0.1"],\
+ ["weak-map", "npm:1.0.8"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["qs", [\
+ ["npm:6.10.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/qs-npm-6.10.3-172e1a3fb7-9.zip/node_modules/qs/",\
+ "packageDependencies": [\
+ ["qs", "npm:6.10.3"],\
+ ["side-channel", "npm:1.0.4"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:6.11.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/qs-npm-6.11.0-caf1bc9dea-9.zip/node_modules/qs/",\
+ "packageDependencies": [\
+ ["qs", "npm:6.11.0"],\
+ ["side-channel", "npm:1.0.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["querystringify", [\
+ ["npm:2.2.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/querystringify-npm-2.2.0-4e77c9f606-9.zip/node_modules/querystringify/",\
+ "packageDependencies": [\
+ ["querystringify", "npm:2.2.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["range-parser", [\
+ ["npm:1.2.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/range-parser-npm-1.2.1-1a470fa390-9.zip/node_modules/range-parser/",\
+ "packageDependencies": [\
+ ["range-parser", "npm:1.2.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["raw-body", [\
+ ["npm:2.5.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/raw-body-npm-2.5.1-9dd1d9fff9-9.zip/node_modules/raw-body/",\
+ "packageDependencies": [\
+ ["raw-body", "npm:2.5.1"],\
+ ["bytes", "npm:3.1.2"],\
+ ["http-errors", "npm:2.0.0"],\
+ ["iconv-lite", "npm:0.4.24"],\
+ ["unpipe", "npm:1.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["readable-stream", [\
+ ["npm:3.6.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/readable-stream-npm-3.6.0-23a4a5eb56-9.zip/node_modules/readable-stream/",\
+ "packageDependencies": [\
+ ["readable-stream", "npm:3.6.0"],\
+ ["inherits", "npm:2.0.4"],\
+ ["string_decoder", "npm:1.3.0"],\
+ ["util-deprecate", "npm:1.0.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["readdirp", [\
+ ["npm:3.6.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/readdirp-npm-3.6.0-f950cc74ab-9.zip/node_modules/readdirp/",\
+ "packageDependencies": [\
+ ["readdirp", "npm:3.6.0"],\
+ ["picomatch", "npm:2.3.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["requires-port", [\
+ ["npm:1.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/requires-port-npm-1.0.0-fd036b488a-9.zip/node_modules/requires-port/",\
+ "packageDependencies": [\
+ ["requires-port", "npm:1.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["retry", [\
+ ["npm:0.12.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/retry-npm-0.12.0-72ac7fb4cc-9.zip/node_modules/retry/",\
+ "packageDependencies": [\
+ ["retry", "npm:0.12.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["rimraf", [\
+ ["npm:3.0.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/rimraf-npm-3.0.2-2cb7dac69a-9.zip/node_modules/rimraf/",\
+ "packageDependencies": [\
+ ["rimraf", "npm:3.0.2"],\
+ ["glob", "npm:7.2.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["rootpath", [\
+ ["npm:0.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/rootpath-npm-0.1.2-017ccc065e-9.zip/node_modules/rootpath/",\
+ "packageDependencies": [\
+ ["rootpath", "npm:0.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["safe-buffer", [\
+ ["npm:5.2.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/safe-buffer-npm-5.2.1-3481c8aa9b-9.zip/node_modules/safe-buffer/",\
+ "packageDependencies": [\
+ ["safe-buffer", "npm:5.2.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["safer-buffer", [\
+ ["npm:2.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/safer-buffer-npm-2.1.2-8d5c0b705e-9.zip/node_modules/safer-buffer/",\
+ "packageDependencies": [\
+ ["safer-buffer", "npm:2.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["saslprep", [\
+ ["npm:1.0.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/saslprep-npm-1.0.3-8db649c346-9.zip/node_modules/saslprep/",\
+ "packageDependencies": [\
+ ["saslprep", "npm:1.0.3"],\
+ ["sparse-bitfield", "npm:3.0.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["scmp", [\
+ ["npm:2.1.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/scmp-npm-2.1.0-01d7acfc93-9.zip/node_modules/scmp/",\
+ "packageDependencies": [\
+ ["scmp", "npm:2.1.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["semver", [\
+ ["npm:5.7.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/semver-npm-5.7.1-40bcea106b-9.zip/node_modules/semver/",\
+ "packageDependencies": [\
+ ["semver", "npm:5.7.1"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:7.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/semver-npm-7.0.0-218e8c00ca-9.zip/node_modules/semver/",\
+ "packageDependencies": [\
+ ["semver", "npm:7.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }],\
+ ["npm:7.3.8", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/semver-npm-7.3.8-25a996cb4f-9.zip/node_modules/semver/",\
+ "packageDependencies": [\
+ ["semver", "npm:7.3.8"],\
+ ["lru-cache", "npm:6.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["send", [\
+ ["npm:0.18.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/send-npm-0.18.0-faadf6353f-9.zip/node_modules/send/",\
+ "packageDependencies": [\
+ ["send", "npm:0.18.0"],\
+ ["debug", "virtual:1820eff49a3510f59844b6605d494e2deca1520fa9e3aa7cf6600a27b1172a18c035fa06a11454e24c22ee26b6472ef79ca6bf8d7f3c9067161707279e01bef3#npm:2.6.9"],\
+ ["depd", "npm:2.0.0"],\
+ ["destroy", "npm:1.2.0"],\
+ ["encodeurl", "npm:1.0.2"],\
+ ["escape-html", "npm:1.0.3"],\
+ ["etag", "npm:1.8.1"],\
+ ["fresh", "npm:0.5.2"],\
+ ["http-errors", "npm:2.0.0"],\
+ ["mime", "npm:1.6.0"],\
+ ["ms", "npm:2.1.3"],\
+ ["on-finished", "npm:2.4.1"],\
+ ["range-parser", "npm:1.2.1"],\
+ ["statuses", "npm:2.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["serve-static", [\
+ ["npm:1.15.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/serve-static-npm-1.15.0-86c81879f5-9.zip/node_modules/serve-static/",\
+ "packageDependencies": [\
+ ["serve-static", "npm:1.15.0"],\
+ ["encodeurl", "npm:1.0.2"],\
+ ["escape-html", "npm:1.0.3"],\
+ ["parseurl", "npm:1.3.3"],\
+ ["send", "npm:0.18.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["server", [\
+ ["workspace:.", {\
+ "packageLocation": "./",\
+ "packageDependencies": [\
+ ["server", "workspace:."],\
+ ["body-parser", "npm:1.20.0"],\
+ ["cors", "npm:2.8.5"],\
+ ["dotenv", "npm:16.0.1"],\
+ ["express", "npm:4.18.1"],\
+ ["mongoose", "npm:6.5.0"],\
+ ["nodemon", "npm:2.0.19"],\
+ ["twilio", "npm:3.80.1"]\
+ ],\
+ "linkType": "SOFT"\
+ }]\
+ ]],\
+ ["set-blocking", [\
+ ["npm:2.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/set-blocking-npm-2.0.0-49e2cffa24-9.zip/node_modules/set-blocking/",\
+ "packageDependencies": [\
+ ["set-blocking", "npm:2.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["setprototypeof", [\
+ ["npm:1.2.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/setprototypeof-npm-1.2.0-0fedbdcd3a-9.zip/node_modules/setprototypeof/",\
+ "packageDependencies": [\
+ ["setprototypeof", "npm:1.2.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["side-channel", [\
+ ["npm:1.0.4", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/side-channel-npm-1.0.4-e1f38b9e06-9.zip/node_modules/side-channel/",\
+ "packageDependencies": [\
+ ["side-channel", "npm:1.0.4"],\
+ ["call-bind", "npm:1.0.2"],\
+ ["get-intrinsic", "npm:1.1.2"],\
+ ["object-inspect", "npm:1.12.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["sift", [\
+ ["npm:16.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/sift-npm-16.0.0-c5d447b898-9.zip/node_modules/sift/",\
+ "packageDependencies": [\
+ ["sift", "npm:16.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["signal-exit", [\
+ ["npm:3.0.7", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/signal-exit-npm-3.0.7-bd270458a3-9.zip/node_modules/signal-exit/",\
+ "packageDependencies": [\
+ ["signal-exit", "npm:3.0.7"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["simple-update-notifier", [\
+ ["npm:1.0.7", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/simple-update-notifier-npm-1.0.7-c27b0a20ac-9.zip/node_modules/simple-update-notifier/",\
+ "packageDependencies": [\
+ ["simple-update-notifier", "npm:1.0.7"],\
+ ["semver", "npm:7.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["smart-buffer", [\
+ ["npm:4.2.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/smart-buffer-npm-4.2.0-5ac3f668bb-9.zip/node_modules/smart-buffer/",\
+ "packageDependencies": [\
+ ["smart-buffer", "npm:4.2.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["socks", [\
+ ["npm:2.7.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/socks-npm-2.7.0-cc1cb019db-9.zip/node_modules/socks/",\
+ "packageDependencies": [\
+ ["socks", "npm:2.7.0"],\
+ ["ip", "npm:2.0.0"],\
+ ["smart-buffer", "npm:4.2.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["socks-proxy-agent", [\
+ ["npm:7.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/socks-proxy-agent-npm-7.0.0-7aacf32ea0-9.zip/node_modules/socks-proxy-agent/",\
+ "packageDependencies": [\
+ ["socks-proxy-agent", "npm:7.0.0"],\
+ ["agent-base", "npm:6.0.2"],\
+ ["debug", "virtual:993368e4d5b99ecbd76d0bd2c43aca0cecadb2a241ef3dc8dc18085b2d79167d5195671fbb701c9e6312177b2cac6e3d058c4aa296d48c4e02c788163cdcab10#npm:4.3.4"],\
+ ["socks", "npm:2.7.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["sparse-bitfield", [\
+ ["npm:3.0.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/sparse-bitfield-npm-3.0.3-cb80d0c89f-9.zip/node_modules/sparse-bitfield/",\
+ "packageDependencies": [\
+ ["sparse-bitfield", "npm:3.0.3"],\
+ ["memory-pager", "npm:1.5.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["ssri", [\
+ ["npm:9.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/ssri-npm-9.0.1-33ce27f4f8-9.zip/node_modules/ssri/",\
+ "packageDependencies": [\
+ ["ssri", "npm:9.0.1"],\
+ ["minipass", "npm:3.3.6"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["statuses", [\
+ ["npm:2.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/statuses-npm-2.0.1-81d2b97fee-9.zip/node_modules/statuses/",\
+ "packageDependencies": [\
+ ["statuses", "npm:2.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["string-width", [\
+ ["npm:4.2.3", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/string-width-npm-4.2.3-2c27177bae-9.zip/node_modules/string-width/",\
+ "packageDependencies": [\
+ ["string-width", "npm:4.2.3"],\
+ ["emoji-regex", "npm:8.0.0"],\
+ ["is-fullwidth-code-point", "npm:3.0.0"],\
+ ["strip-ansi", "npm:6.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["string_decoder", [\
+ ["npm:1.3.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/string_decoder-npm-1.3.0-2422117fd0-9.zip/node_modules/string_decoder/",\
+ "packageDependencies": [\
+ ["string_decoder", "npm:1.3.0"],\
+ ["safe-buffer", "npm:5.2.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["strip-ansi", [\
+ ["npm:6.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/strip-ansi-npm-6.0.1-caddc7cb40-9.zip/node_modules/strip-ansi/",\
+ "packageDependencies": [\
+ ["strip-ansi", "npm:6.0.1"],\
+ ["ansi-regex", "npm:5.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["supports-color", [\
+ ["npm:5.5.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/supports-color-npm-5.5.0-183ac537bc-9.zip/node_modules/supports-color/",\
+ "packageDependencies": [\
+ ["supports-color", "npm:5.5.0"],\
+ ["has-flag", "npm:3.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["tar", [\
+ ["npm:6.1.13", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/tar-npm-6.1.13-3234e72781-9.zip/node_modules/tar/",\
+ "packageDependencies": [\
+ ["tar", "npm:6.1.13"],\
+ ["chownr", "npm:2.0.0"],\
+ ["fs-minipass", "npm:2.1.0"],\
+ ["minipass", "npm:4.0.0"],\
+ ["minizlib", "npm:2.1.2"],\
+ ["mkdirp", "npm:1.0.4"],\
+ ["yallist", "npm:4.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["to-regex-range", [\
+ ["npm:5.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/to-regex-range-npm-5.0.1-f1e8263b00-9.zip/node_modules/to-regex-range/",\
+ "packageDependencies": [\
+ ["to-regex-range", "npm:5.0.1"],\
+ ["is-number", "npm:7.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["toidentifier", [\
+ ["npm:1.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/toidentifier-npm-1.0.1-f759712599-9.zip/node_modules/toidentifier/",\
+ "packageDependencies": [\
+ ["toidentifier", "npm:1.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["touch", [\
+ ["npm:3.1.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/touch-npm-3.1.0-e2eacebbda-9.zip/node_modules/touch/",\
+ "packageDependencies": [\
+ ["touch", "npm:3.1.0"],\
+ ["nopt", "npm:1.0.10"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["tr46", [\
+ ["npm:3.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/tr46-npm-3.0.0-e1ae1ea7c9-9.zip/node_modules/tr46/",\
+ "packageDependencies": [\
+ ["tr46", "npm:3.0.0"],\
+ ["punycode", "npm:2.1.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["twilio", [\
+ ["npm:3.80.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/twilio-npm-3.80.1-d0c1bebad2-9.zip/node_modules/twilio/",\
+ "packageDependencies": [\
+ ["twilio", "npm:3.80.1"],\
+ ["axios", "npm:0.26.1"],\
+ ["dayjs", "npm:1.11.4"],\
+ ["https-proxy-agent", "npm:5.0.1"],\
+ ["jsonwebtoken", "npm:8.5.1"],\
+ ["lodash", "npm:4.17.21"],\
+ ["q", "npm:2.0.3"],\
+ ["qs", "npm:6.11.0"],\
+ ["rootpath", "npm:0.1.2"],\
+ ["scmp", "npm:2.1.0"],\
+ ["url-parse", "npm:1.5.10"],\
+ ["xmlbuilder", "npm:13.0.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["type-is", [\
+ ["npm:1.6.18", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/type-is-npm-1.6.18-6dee4d4961-9.zip/node_modules/type-is/",\
+ "packageDependencies": [\
+ ["type-is", "npm:1.6.18"],\
+ ["media-typer", "npm:0.3.0"],\
+ ["mime-types", "npm:2.1.35"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["undefsafe", [\
+ ["npm:2.0.5", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/undefsafe-npm-2.0.5-8c3bbf9354-9.zip/node_modules/undefsafe/",\
+ "packageDependencies": [\
+ ["undefsafe", "npm:2.0.5"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["unique-filename", [\
+ ["npm:2.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/unique-filename-npm-2.0.1-183c6c7c2b-9.zip/node_modules/unique-filename/",\
+ "packageDependencies": [\
+ ["unique-filename", "npm:2.0.1"],\
+ ["unique-slug", "npm:3.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["unique-slug", [\
+ ["npm:3.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/unique-slug-npm-3.0.0-0b82e51577-9.zip/node_modules/unique-slug/",\
+ "packageDependencies": [\
+ ["unique-slug", "npm:3.0.0"],\
+ ["imurmurhash", "npm:0.1.4"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["unpipe", [\
+ ["npm:1.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/unpipe-npm-1.0.0-2ed2a3c2bf-9.zip/node_modules/unpipe/",\
+ "packageDependencies": [\
+ ["unpipe", "npm:1.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["url-parse", [\
+ ["npm:1.5.10", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/url-parse-npm-1.5.10-64fa2bcd6d-9.zip/node_modules/url-parse/",\
+ "packageDependencies": [\
+ ["url-parse", "npm:1.5.10"],\
+ ["querystringify", "npm:2.2.0"],\
+ ["requires-port", "npm:1.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["util-deprecate", [\
+ ["npm:1.0.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/util-deprecate-npm-1.0.2-e3fe1a219c-9.zip/node_modules/util-deprecate/",\
+ "packageDependencies": [\
+ ["util-deprecate", "npm:1.0.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["utils-merge", [\
+ ["npm:1.0.1", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/utils-merge-npm-1.0.1-363bbdfbca-9.zip/node_modules/utils-merge/",\
+ "packageDependencies": [\
+ ["utils-merge", "npm:1.0.1"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["vary", [\
+ ["npm:1.1.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/vary-npm-1.1.2-b49f70ae63-9.zip/node_modules/vary/",\
+ "packageDependencies": [\
+ ["vary", "npm:1.1.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["weak-map", [\
+ ["npm:1.0.8", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/weak-map-npm-1.0.8-752d38a0d7-9.zip/node_modules/weak-map/",\
+ "packageDependencies": [\
+ ["weak-map", "npm:1.0.8"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["webidl-conversions", [\
+ ["npm:7.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/webidl-conversions-npm-7.0.0-e8c8e30c68-9.zip/node_modules/webidl-conversions/",\
+ "packageDependencies": [\
+ ["webidl-conversions", "npm:7.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["whatwg-url", [\
+ ["npm:11.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/whatwg-url-npm-11.0.0-073529d93a-9.zip/node_modules/whatwg-url/",\
+ "packageDependencies": [\
+ ["whatwg-url", "npm:11.0.0"],\
+ ["tr46", "npm:3.0.0"],\
+ ["webidl-conversions", "npm:7.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["which", [\
+ ["npm:2.0.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/which-npm-2.0.2-320ddf72f7-9.zip/node_modules/which/",\
+ "packageDependencies": [\
+ ["which", "npm:2.0.2"],\
+ ["isexe", "npm:2.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["wide-align", [\
+ ["npm:1.1.5", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/wide-align-npm-1.1.5-889d77e592-9.zip/node_modules/wide-align/",\
+ "packageDependencies": [\
+ ["wide-align", "npm:1.1.5"],\
+ ["string-width", "npm:4.2.3"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["wrappy", [\
+ ["npm:1.0.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/wrappy-npm-1.0.2-916de4d4b3-9.zip/node_modules/wrappy/",\
+ "packageDependencies": [\
+ ["wrappy", "npm:1.0.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["xmlbuilder", [\
+ ["npm:13.0.2", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/xmlbuilder-npm-13.0.2-6582e71992-9.zip/node_modules/xmlbuilder/",\
+ "packageDependencies": [\
+ ["xmlbuilder", "npm:13.0.2"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]],\
+ ["yallist", [\
+ ["npm:4.0.0", {\
+ "packageLocation": "../../../../../.yarn/berry/cache/yallist-npm-4.0.0-b493d9e907-9.zip/node_modules/yallist/",\
+ "packageDependencies": [\
+ ["yallist", "npm:4.0.0"]\
+ ],\
+ "linkType": "HARD"\
+ }]\
+ ]]\
+ ]\
+}';
+
+function $$SETUP_STATE(hydrateRuntimeState, basePath) {
+ return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname});
+}
+
+const fs = require('fs');
+const path = require('path');
+const crypto = require('crypto');
+const os = require('os');
+const events = require('events');
+const nodeUtils = require('util');
+const stream = require('stream');
+const zlib = require('zlib');
+const require$$0 = require('module');
+const StringDecoder = require('string_decoder');
+const url = require('url');
+const readline = require('readline');
+const assert = require('assert');
+
+const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
+
+function _interopNamespace(e) {
+ if (e && e.__esModule) return e;
+ const n = Object.create(null);
+ if (e) {
+ for (const k in e) {
+ if (k !== 'default') {
+ const d = Object.getOwnPropertyDescriptor(e, k);
+ Object.defineProperty(n, k, d.get ? d : {
+ enumerable: true,
+ get: () => e[k]
+ });
+ }
+ }
+ }
+ n.default = e;
+ return Object.freeze(n);
+}
+
+const fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
+const path__default = /*#__PURE__*/_interopDefaultLegacy(path);
+const nodeUtils__namespace = /*#__PURE__*/_interopNamespace(nodeUtils);
+const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib);
+const require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
+const StringDecoder__default = /*#__PURE__*/_interopDefaultLegacy(StringDecoder);
+const assert__default = /*#__PURE__*/_interopDefaultLegacy(assert);
+
+const S_IFMT = 61440;
+const S_IFDIR = 16384;
+const S_IFREG = 32768;
+const S_IFLNK = 40960;
+const SAFE_TIME = 456789e3;
+
+function makeError$1(code, message) {
+ return Object.assign(new Error(`${code}: ${message}`), { code });
+}
+function EBUSY(message) {
+ return makeError$1(`EBUSY`, message);
+}
+function ENOSYS(message, reason) {
+ return makeError$1(`ENOSYS`, `${message}, ${reason}`);
+}
+function EINVAL(reason) {
+ return makeError$1(`EINVAL`, `invalid argument, ${reason}`);
+}
+function EBADF(reason) {
+ return makeError$1(`EBADF`, `bad file descriptor, ${reason}`);
+}
+function ENOENT(reason) {
+ return makeError$1(`ENOENT`, `no such file or directory, ${reason}`);
+}
+function ENOTDIR(reason) {
+ return makeError$1(`ENOTDIR`, `not a directory, ${reason}`);
+}
+function EISDIR(reason) {
+ return makeError$1(`EISDIR`, `illegal operation on a directory, ${reason}`);
+}
+function EEXIST(reason) {
+ return makeError$1(`EEXIST`, `file already exists, ${reason}`);
+}
+function EROFS(reason) {
+ return makeError$1(`EROFS`, `read-only filesystem, ${reason}`);
+}
+function ENOTEMPTY(reason) {
+ return makeError$1(`ENOTEMPTY`, `directory not empty, ${reason}`);
+}
+function EOPNOTSUPP(reason) {
+ return makeError$1(`EOPNOTSUPP`, `operation not supported, ${reason}`);
+}
+function ERR_DIR_CLOSED() {
+ return makeError$1(`ERR_DIR_CLOSED`, `Directory handle was closed`);
+}
+
+const DEFAULT_MODE = S_IFREG | 420;
+class StatEntry {
+ constructor() {
+ this.uid = 0;
+ this.gid = 0;
+ this.size = 0;
+ this.blksize = 0;
+ this.atimeMs = 0;
+ this.mtimeMs = 0;
+ this.ctimeMs = 0;
+ this.birthtimeMs = 0;
+ this.atime = new Date(0);
+ this.mtime = new Date(0);
+ this.ctime = new Date(0);
+ this.birthtime = new Date(0);
+ this.dev = 0;
+ this.ino = 0;
+ this.mode = DEFAULT_MODE;
+ this.nlink = 1;
+ this.rdev = 0;
+ this.blocks = 1;
+ }
+ isBlockDevice() {
+ return false;
+ }
+ isCharacterDevice() {
+ return false;
+ }
+ isDirectory() {
+ return (this.mode & S_IFMT) === S_IFDIR;
+ }
+ isFIFO() {
+ return false;
+ }
+ isFile() {
+ return (this.mode & S_IFMT) === S_IFREG;
+ }
+ isSocket() {
+ return false;
+ }
+ isSymbolicLink() {
+ return (this.mode & S_IFMT) === S_IFLNK;
+ }
+}
+class BigIntStatsEntry {
+ constructor() {
+ this.uid = BigInt(0);
+ this.gid = BigInt(0);
+ this.size = BigInt(0);
+ this.blksize = BigInt(0);
+ this.atimeMs = BigInt(0);
+ this.mtimeMs = BigInt(0);
+ this.ctimeMs = BigInt(0);
+ this.birthtimeMs = BigInt(0);
+ this.atimeNs = BigInt(0);
+ this.mtimeNs = BigInt(0);
+ this.ctimeNs = BigInt(0);
+ this.birthtimeNs = BigInt(0);
+ this.atime = new Date(0);
+ this.mtime = new Date(0);
+ this.ctime = new Date(0);
+ this.birthtime = new Date(0);
+ this.dev = BigInt(0);
+ this.ino = BigInt(0);
+ this.mode = BigInt(DEFAULT_MODE);
+ this.nlink = BigInt(1);
+ this.rdev = BigInt(0);
+ this.blocks = BigInt(1);
+ }
+ isBlockDevice() {
+ return false;
+ }
+ isCharacterDevice() {
+ return false;
+ }
+ isDirectory() {
+ return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFDIR);
+ }
+ isFIFO() {
+ return false;
+ }
+ isFile() {
+ return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFREG);
+ }
+ isSocket() {
+ return false;
+ }
+ isSymbolicLink() {
+ return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFLNK);
+ }
+}
+function makeDefaultStats() {
+ return new StatEntry();
+}
+function clearStats(stats) {
+ for (const key in stats) {
+ if (Object.prototype.hasOwnProperty.call(stats, key)) {
+ const element = stats[key];
+ if (typeof element === `number`) {
+ stats[key] = 0;
+ } else if (typeof element === `bigint`) {
+ stats[key] = BigInt(0);
+ } else if (nodeUtils__namespace.types.isDate(element)) {
+ stats[key] = new Date(0);
+ }
+ }
+ }
+ return stats;
+}
+function convertToBigIntStats(stats) {
+ const bigintStats = new BigIntStatsEntry();
+ for (const key in stats) {
+ if (Object.prototype.hasOwnProperty.call(stats, key)) {
+ const element = stats[key];
+ if (typeof element === `number`) {
+ bigintStats[key] = BigInt(element);
+ } else if (nodeUtils__namespace.types.isDate(element)) {
+ bigintStats[key] = new Date(element);
+ }
+ }
+ }
+ bigintStats.atimeNs = bigintStats.atimeMs * BigInt(1e6);
+ bigintStats.mtimeNs = bigintStats.mtimeMs * BigInt(1e6);
+ bigintStats.ctimeNs = bigintStats.ctimeMs * BigInt(1e6);
+ bigintStats.birthtimeNs = bigintStats.birthtimeMs * BigInt(1e6);
+ return bigintStats;
+}
+function areStatsEqual(a, b) {
+ if (a.atimeMs !== b.atimeMs)
+ return false;
+ if (a.birthtimeMs !== b.birthtimeMs)
+ return false;
+ if (a.blksize !== b.blksize)
+ return false;
+ if (a.blocks !== b.blocks)
+ return false;
+ if (a.ctimeMs !== b.ctimeMs)
+ return false;
+ if (a.dev !== b.dev)
+ return false;
+ if (a.gid !== b.gid)
+ return false;
+ if (a.ino !== b.ino)
+ return false;
+ if (a.isBlockDevice() !== b.isBlockDevice())
+ return false;
+ if (a.isCharacterDevice() !== b.isCharacterDevice())
+ return false;
+ if (a.isDirectory() !== b.isDirectory())
+ return false;
+ if (a.isFIFO() !== b.isFIFO())
+ return false;
+ if (a.isFile() !== b.isFile())
+ return false;
+ if (a.isSocket() !== b.isSocket())
+ return false;
+ if (a.isSymbolicLink() !== b.isSymbolicLink())
+ return false;
+ if (a.mode !== b.mode)
+ return false;
+ if (a.mtimeMs !== b.mtimeMs)
+ return false;
+ if (a.nlink !== b.nlink)
+ return false;
+ if (a.rdev !== b.rdev)
+ return false;
+ if (a.size !== b.size)
+ return false;
+ if (a.uid !== b.uid)
+ return false;
+ const aN = a;
+ const bN = b;
+ if (aN.atimeNs !== bN.atimeNs)
+ return false;
+ if (aN.mtimeNs !== bN.mtimeNs)
+ return false;
+ if (aN.ctimeNs !== bN.ctimeNs)
+ return false;
+ if (aN.birthtimeNs !== bN.birthtimeNs)
+ return false;
+ return true;
+}
+
+const PortablePath = {
+ root: `/`,
+ dot: `.`,
+ parent: `..`
+};
+const Filename = {
+ home: `~`,
+ nodeModules: `node_modules`,
+ manifest: `package.json`,
+ lockfile: `yarn.lock`,
+ virtual: `__virtual__`,
+ pnpJs: `.pnp.js`,
+ pnpCjs: `.pnp.cjs`,
+ pnpData: `.pnp.data.json`,
+ pnpEsmLoader: `.pnp.loader.mjs`,
+ rc: `.yarnrc.yml`
+};
+const npath = Object.create(path__default.default);
+const ppath = Object.create(path__default.default.posix);
+npath.cwd = () => process.cwd();
+ppath.cwd = () => toPortablePath(process.cwd());
+ppath.resolve = (...segments) => {
+ if (segments.length > 0 && ppath.isAbsolute(segments[0])) {
+ return path__default.default.posix.resolve(...segments);
+ } else {
+ return path__default.default.posix.resolve(ppath.cwd(), ...segments);
+ }
+};
+const contains = function(pathUtils, from, to) {
+ from = pathUtils.normalize(from);
+ to = pathUtils.normalize(to);
+ if (from === to)
+ return `.`;
+ if (!from.endsWith(pathUtils.sep))
+ from = from + pathUtils.sep;
+ if (to.startsWith(from)) {
+ return to.slice(from.length);
+ } else {
+ return null;
+ }
+};
+npath.fromPortablePath = fromPortablePath;
+npath.toPortablePath = toPortablePath;
+npath.contains = (from, to) => contains(npath, from, to);
+ppath.contains = (from, to) => contains(ppath, from, to);
+const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/;
+const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/;
+const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/;
+const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/;
+function fromPortablePath(p) {
+ if (process.platform !== `win32`)
+ return p;
+ let portablePathMatch, uncPortablePathMatch;
+ if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP))
+ p = portablePathMatch[1];
+ else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP))
+ p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`;
+ else
+ return p;
+ return p.replace(/\//g, `\\`);
+}
+function toPortablePath(p) {
+ if (process.platform !== `win32`)
+ return p;
+ p = p.replace(/\\/g, `/`);
+ let windowsPathMatch, uncWindowsPathMatch;
+ if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP))
+ p = `/${windowsPathMatch[1]}`;
+ else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP))
+ p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`;
+ return p;
+}
+function convertPath(targetPathUtils, sourcePath) {
+ return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath);
+}
+
+const defaultTime = new Date(SAFE_TIME * 1e3);
+const defaultTimeMs = defaultTime.getTime();
+async function copyPromise(destinationFs, destination, sourceFs, source, opts) {
+ const normalizedDestination = destinationFs.pathUtils.normalize(destination);
+ const normalizedSource = sourceFs.pathUtils.normalize(source);
+ const prelayout = [];
+ const postlayout = [];
+ const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource);
+ await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] });
+ await copyImpl(prelayout, postlayout, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true });
+ for (const operation of prelayout)
+ await operation();
+ await Promise.all(postlayout.map((operation) => {
+ return operation();
+ }));
+}
+async function copyImpl(prelayout, postlayout, destinationFs, destination, sourceFs, source, opts) {
+ var _a, _b, _c;
+ const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null;
+ const sourceStat = await sourceFs.lstatPromise(source);
+ const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat;
+ let updated;
+ switch (true) {
+ case sourceStat.isDirectory():
+ {
+ updated = await copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
+ }
+ break;
+ case sourceStat.isFile():
+ {
+ updated = await copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
+ }
+ break;
+ case sourceStat.isSymbolicLink():
+ {
+ updated = await copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
+ }
+ break;
+ default:
+ {
+ throw new Error(`Unsupported file type (${sourceStat.mode})`);
+ }
+ }
+ if (((_a = opts.linkStrategy) == null ? void 0 : _a.type) !== `HardlinkFromIndex` || !sourceStat.isFile()) {
+ if (updated || ((_b = destinationStat == null ? void 0 : destinationStat.mtime) == null ? void 0 : _b.getTime()) !== mtime.getTime() || ((_c = destinationStat == null ? void 0 : destinationStat.atime) == null ? void 0 : _c.getTime()) !== atime.getTime()) {
+ postlayout.push(() => destinationFs.lutimesPromise(destination, atime, mtime));
+ updated = true;
+ }
+ if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) {
+ postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511));
+ updated = true;
+ }
+ }
+ return updated;
+}
+async function maybeLStat(baseFs, p) {
+ try {
+ return await baseFs.lstatPromise(p);
+ } catch (e) {
+ return null;
+ }
+}
+async function copyFolder(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
+ if (destinationStat !== null && !destinationStat.isDirectory()) {
+ if (opts.overwrite) {
+ prelayout.push(async () => destinationFs.removePromise(destination));
+ destinationStat = null;
+ } else {
+ return false;
+ }
+ }
+ let updated = false;
+ if (destinationStat === null) {
+ prelayout.push(async () => {
+ try {
+ await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode });
+ } catch (err) {
+ if (err.code !== `EEXIST`) {
+ throw err;
+ }
+ }
+ });
+ updated = true;
+ }
+ const entries = await sourceFs.readdirPromise(source);
+ const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts;
+ if (opts.stableSort) {
+ for (const entry of entries.sort()) {
+ if (await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) {
+ updated = true;
+ }
+ }
+ } else {
+ const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => {
+ await copyImpl(prelayout, postlayout, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts);
+ }));
+ if (entriesUpdateStatus.some((status) => status)) {
+ updated = true;
+ }
+ }
+ return updated;
+}
+async function copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, linkStrategy) {
+ const sourceHash = await sourceFs.checksumFilePromise(source, { algorithm: `sha1` });
+ const indexPath = destinationFs.pathUtils.join(linkStrategy.indexPath, sourceHash.slice(0, 2), `${sourceHash}.dat`);
+ let AtomicBehavior;
+ ((AtomicBehavior2) => {
+ AtomicBehavior2[AtomicBehavior2["Lock"] = 0] = "Lock";
+ AtomicBehavior2[AtomicBehavior2["Rename"] = 1] = "Rename";
+ })(AtomicBehavior || (AtomicBehavior = {}));
+ let atomicBehavior = 1 /* Rename */;
+ let indexStat = await maybeLStat(destinationFs, indexPath);
+ if (destinationStat) {
+ const isDestinationHardlinkedFromIndex = indexStat && destinationStat.dev === indexStat.dev && destinationStat.ino === indexStat.ino;
+ const isIndexModified = (indexStat == null ? void 0 : indexStat.mtimeMs) !== defaultTimeMs;
+ if (isDestinationHardlinkedFromIndex) {
+ if (isIndexModified && linkStrategy.autoRepair) {
+ atomicBehavior = 0 /* Lock */;
+ indexStat = null;
+ }
+ }
+ if (!isDestinationHardlinkedFromIndex) {
+ if (opts.overwrite) {
+ prelayout.push(async () => destinationFs.removePromise(destination));
+ destinationStat = null;
+ } else {
+ return false;
+ }
+ }
+ }
+ const tempPath = !indexStat && atomicBehavior === 1 /* Rename */ ? `${indexPath}.${Math.floor(Math.random() * 4294967296).toString(16).padStart(8, `0`)}` : null;
+ let tempPathCleaned = false;
+ prelayout.push(async () => {
+ if (!indexStat) {
+ if (atomicBehavior === 0 /* Lock */) {
+ await destinationFs.lockPromise(indexPath, async () => {
+ const content = await sourceFs.readFilePromise(source);
+ await destinationFs.writeFilePromise(indexPath, content);
+ });
+ }
+ if (atomicBehavior === 1 /* Rename */ && tempPath) {
+ const content = await sourceFs.readFilePromise(source);
+ await destinationFs.writeFilePromise(tempPath, content);
+ try {
+ await destinationFs.linkPromise(tempPath, indexPath);
+ } catch (err) {
+ if (err.code === `EEXIST`) {
+ tempPathCleaned = true;
+ await destinationFs.unlinkPromise(tempPath);
+ } else {
+ throw err;
+ }
+ }
+ }
+ }
+ if (!destinationStat) {
+ await destinationFs.linkPromise(indexPath, destination);
+ }
+ });
+ postlayout.push(async () => {
+ if (!indexStat)
+ await destinationFs.lutimesPromise(indexPath, defaultTime, defaultTime);
+ if (tempPath && !tempPathCleaned) {
+ await destinationFs.unlinkPromise(tempPath);
+ }
+ });
+ return false;
+}
+async function copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
+ if (destinationStat !== null) {
+ if (opts.overwrite) {
+ prelayout.push(async () => destinationFs.removePromise(destination));
+ destinationStat = null;
+ } else {
+ return false;
+ }
+ }
+ prelayout.push(async () => {
+ const content = await sourceFs.readFilePromise(source);
+ await destinationFs.writeFilePromise(destination, content);
+ });
+ return true;
+}
+async function copyFile(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
+ var _a;
+ if (((_a = opts.linkStrategy) == null ? void 0 : _a.type) === `HardlinkFromIndex`) {
+ return copyFileViaIndex(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts, opts.linkStrategy);
+ } else {
+ return copyFileDirect(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
+ }
+}
+async function copySymlink(prelayout, postlayout, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
+ if (destinationStat !== null) {
+ if (opts.overwrite) {
+ prelayout.push(async () => destinationFs.removePromise(destination));
+ destinationStat = null;
+ } else {
+ return false;
+ }
+ }
+ prelayout.push(async () => {
+ await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination);
+ });
+ return true;
+}
+
+class CustomDir {
+ constructor(path, nextDirent, opts = {}) {
+ this.path = path;
+ this.nextDirent = nextDirent;
+ this.opts = opts;
+ this.closed = false;
+ }
+ throwIfClosed() {
+ if (this.closed) {
+ throw ERR_DIR_CLOSED();
+ }
+ }
+ async *[Symbol.asyncIterator]() {
+ try {
+ let dirent;
+ while ((dirent = await this.read()) !== null) {
+ yield dirent;
+ }
+ } finally {
+ await this.close();
+ }
+ }
+ read(cb) {
+ const dirent = this.readSync();
+ if (typeof cb !== `undefined`)
+ return cb(null, dirent);
+ return Promise.resolve(dirent);
+ }
+ readSync() {
+ this.throwIfClosed();
+ return this.nextDirent();
+ }
+ close(cb) {
+ this.closeSync();
+ if (typeof cb !== `undefined`)
+ return cb(null);
+ return Promise.resolve();
+ }
+ closeSync() {
+ var _a, _b;
+ this.throwIfClosed();
+ (_b = (_a = this.opts).onClose) == null ? void 0 : _b.call(_a);
+ this.closed = true;
+ }
+}
+function opendir(fakeFs, path, entries, opts) {
+ const nextDirent = () => {
+ const filename = entries.shift();
+ if (typeof filename === `undefined`)
+ return null;
+ return Object.assign(fakeFs.statSync(fakeFs.pathUtils.join(path, filename)), {
+ name: filename
+ });
+ };
+ return new CustomDir(path, nextDirent, opts);
+}
+
+function assertStatus(current, expected) {
+ if (current !== expected) {
+ throw new Error(`Invalid StatWatcher status: expected '${expected}', got '${current}'`);
+ }
+}
+class CustomStatWatcher extends events.EventEmitter {
+ constructor(fakeFs, path, { bigint = false } = {}) {
+ super();
+ this.status = "ready" /* Ready */;
+ this.changeListeners = /* @__PURE__ */ new Map();
+ this.startTimeout = null;
+ this.fakeFs = fakeFs;
+ this.path = path;
+ this.bigint = bigint;
+ this.lastStats = this.stat();
+ }
+ static create(fakeFs, path, opts) {
+ const statWatcher = new CustomStatWatcher(fakeFs, path, opts);
+ statWatcher.start();
+ return statWatcher;
+ }
+ start() {
+ assertStatus(this.status, "ready" /* Ready */);
+ this.status = "running" /* Running */;
+ this.startTimeout = setTimeout(() => {
+ this.startTimeout = null;
+ if (!this.fakeFs.existsSync(this.path)) {
+ this.emit("change" /* Change */, this.lastStats, this.lastStats);
+ }
+ }, 3);
+ }
+ stop() {
+ assertStatus(this.status, "running" /* Running */);
+ this.status = "stopped" /* Stopped */;
+ if (this.startTimeout !== null) {
+ clearTimeout(this.startTimeout);
+ this.startTimeout = null;
+ }
+ this.emit("stop" /* Stop */);
+ }
+ stat() {
+ try {
+ return this.fakeFs.statSync(this.path, { bigint: this.bigint });
+ } catch (error) {
+ const statInstance = this.bigint ? new BigIntStatsEntry() : new StatEntry();
+ return clearStats(statInstance);
+ }
+ }
+ makeInterval(opts) {
+ const interval = setInterval(() => {
+ const currentStats = this.stat();
+ const previousStats = this.lastStats;
+ if (areStatsEqual(currentStats, previousStats))
+ return;
+ this.lastStats = currentStats;
+ this.emit("change" /* Change */, currentStats, previousStats);
+ }, opts.interval);
+ return opts.persistent ? interval : interval.unref();
+ }
+ registerChangeListener(listener, opts) {
+ this.addListener("change" /* Change */, listener);
+ this.changeListeners.set(listener, this.makeInterval(opts));
+ }
+ unregisterChangeListener(listener) {
+ this.removeListener("change" /* Change */, listener);
+ const interval = this.changeListeners.get(listener);
+ if (typeof interval !== `undefined`)
+ clearInterval(interval);
+ this.changeListeners.delete(listener);
+ }
+ unregisterAllChangeListeners() {
+ for (const listener of this.changeListeners.keys()) {
+ this.unregisterChangeListener(listener);
+ }
+ }
+ hasChangeListeners() {
+ return this.changeListeners.size > 0;
+ }
+ ref() {
+ for (const interval of this.changeListeners.values())
+ interval.ref();
+ return this;
+ }
+ unref() {
+ for (const interval of this.changeListeners.values())
+ interval.unref();
+ return this;
+ }
+}
+
+const statWatchersByFakeFS = /* @__PURE__ */ new WeakMap();
+function watchFile(fakeFs, path, a, b) {
+ let bigint;
+ let persistent;
+ let interval;
+ let listener;
+ switch (typeof a) {
+ case `function`:
+ {
+ bigint = false;
+ persistent = true;
+ interval = 5007;
+ listener = a;
+ }
+ break;
+ default:
+ {
+ ({
+ bigint = false,
+ persistent = true,
+ interval = 5007
+ } = a);
+ listener = b;
+ }
+ break;
+ }
+ let statWatchers = statWatchersByFakeFS.get(fakeFs);
+ if (typeof statWatchers === `undefined`)
+ statWatchersByFakeFS.set(fakeFs, statWatchers = /* @__PURE__ */ new Map());
+ let statWatcher = statWatchers.get(path);
+ if (typeof statWatcher === `undefined`) {
+ statWatcher = CustomStatWatcher.create(fakeFs, path, { bigint });
+ statWatchers.set(path, statWatcher);
+ }
+ statWatcher.registerChangeListener(listener, { persistent, interval });
+ return statWatcher;
+}
+function unwatchFile(fakeFs, path, cb) {
+ const statWatchers = statWatchersByFakeFS.get(fakeFs);
+ if (typeof statWatchers === `undefined`)
+ return;
+ const statWatcher = statWatchers.get(path);
+ if (typeof statWatcher === `undefined`)
+ return;
+ if (typeof cb === `undefined`)
+ statWatcher.unregisterAllChangeListeners();
+ else
+ statWatcher.unregisterChangeListener(cb);
+ if (!statWatcher.hasChangeListeners()) {
+ statWatcher.stop();
+ statWatchers.delete(path);
+ }
+}
+function unwatchAllFiles(fakeFs) {
+ const statWatchers = statWatchersByFakeFS.get(fakeFs);
+ if (typeof statWatchers === `undefined`)
+ return;
+ for (const path of statWatchers.keys()) {
+ unwatchFile(fakeFs, path);
+ }
+}
+
+class FakeFS {
+ constructor(pathUtils) {
+ this.pathUtils = pathUtils;
+ }
+ async *genTraversePromise(init, { stableSort = false } = {}) {
+ const stack = [init];
+ while (stack.length > 0) {
+ const p = stack.shift();
+ const entry = await this.lstatPromise(p);
+ if (entry.isDirectory()) {
+ const entries = await this.readdirPromise(p);
+ if (stableSort) {
+ for (const entry2 of entries.sort()) {
+ stack.push(this.pathUtils.join(p, entry2));
+ }
+ } else {
+ throw new Error(`Not supported`);
+ }
+ } else {
+ yield p;
+ }
+ }
+ }
+ async checksumFilePromise(path, { algorithm = `sha512` } = {}) {
+ const fd = await this.openPromise(path, `r`);
+ try {
+ const CHUNK_SIZE = 65536;
+ const chunk = Buffer.allocUnsafeSlow(CHUNK_SIZE);
+ const hash = crypto.createHash(algorithm);
+ let bytesRead = 0;
+ while ((bytesRead = await this.readPromise(fd, chunk, 0, CHUNK_SIZE)) !== 0)
+ hash.update(bytesRead === CHUNK_SIZE ? chunk : chunk.slice(0, bytesRead));
+ return hash.digest(`hex`);
+ } finally {
+ await this.closePromise(fd);
+ }
+ }
+ async removePromise(p, { recursive = true, maxRetries = 5 } = {}) {
+ let stat;
+ try {
+ stat = await this.lstatPromise(p);
+ } catch (error) {
+ if (error.code === `ENOENT`) {
+ return;
+ } else {
+ throw error;
+ }
+ }
+ if (stat.isDirectory()) {
+ if (recursive) {
+ const entries = await this.readdirPromise(p);
+ await Promise.all(entries.map((entry) => {
+ return this.removePromise(this.pathUtils.resolve(p, entry));
+ }));
+ }
+ for (let t = 0; t <= maxRetries; t++) {
+ try {
+ await this.rmdirPromise(p);
+ break;
+ } catch (error) {
+ if (error.code !== `EBUSY` && error.code !== `ENOTEMPTY`) {
+ throw error;
+ } else if (t < maxRetries) {
+ await new Promise((resolve) => setTimeout(resolve, t * 100));
+ }
+ }
+ }
+ } else {
+ await this.unlinkPromise(p);
+ }
+ }
+ removeSync(p, { recursive = true } = {}) {
+ let stat;
+ try {
+ stat = this.lstatSync(p);
+ } catch (error) {
+ if (error.code === `ENOENT`) {
+ return;
+ } else {
+ throw error;
+ }
+ }
+ if (stat.isDirectory()) {
+ if (recursive)
+ for (const entry of this.readdirSync(p))
+ this.removeSync(this.pathUtils.resolve(p, entry));
+ this.rmdirSync(p);
+ } else {
+ this.unlinkSync(p);
+ }
+ }
+ async mkdirpPromise(p, { chmod, utimes } = {}) {
+ p = this.resolve(p);
+ if (p === this.pathUtils.dirname(p))
+ return void 0;
+ const parts = p.split(this.pathUtils.sep);
+ let createdDirectory;
+ for (let u = 2; u <= parts.length; ++u) {
+ const subPath = parts.slice(0, u).join(this.pathUtils.sep);
+ if (!this.existsSync(subPath)) {
+ try {
+ await this.mkdirPromise(subPath);
+ } catch (error) {
+ if (error.code === `EEXIST`) {
+ continue;
+ } else {
+ throw error;
+ }
+ }
+ createdDirectory ?? (createdDirectory = subPath);
+ if (chmod != null)
+ await this.chmodPromise(subPath, chmod);
+ if (utimes != null) {
+ await this.utimesPromise(subPath, utimes[0], utimes[1]);
+ } else {
+ const parentStat = await this.statPromise(this.pathUtils.dirname(subPath));
+ await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime);
+ }
+ }
+ }
+ return createdDirectory;
+ }
+ mkdirpSync(p, { chmod, utimes } = {}) {
+ p = this.resolve(p);
+ if (p === this.pathUtils.dirname(p))
+ return void 0;
+ const parts = p.split(this.pathUtils.sep);
+ let createdDirectory;
+ for (let u = 2; u <= parts.length; ++u) {
+ const subPath = parts.slice(0, u).join(this.pathUtils.sep);
+ if (!this.existsSync(subPath)) {
+ try {
+ this.mkdirSync(subPath);
+ } catch (error) {
+ if (error.code === `EEXIST`) {
+ continue;
+ } else {
+ throw error;
+ }
+ }
+ createdDirectory ?? (createdDirectory = subPath);
+ if (chmod != null)
+ this.chmodSync(subPath, chmod);
+ if (utimes != null) {
+ this.utimesSync(subPath, utimes[0], utimes[1]);
+ } else {
+ const parentStat = this.statSync(this.pathUtils.dirname(subPath));
+ this.utimesSync(subPath, parentStat.atime, parentStat.mtime);
+ }
+ }
+ }
+ return createdDirectory;
+ }
+ async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) {
+ return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy });
+ }
+ copySync(destination, source, { baseFs = this, overwrite = true } = {}) {
+ const stat = baseFs.lstatSync(source);
+ const exists = this.existsSync(destination);
+ if (stat.isDirectory()) {
+ this.mkdirpSync(destination);
+ const directoryListing = baseFs.readdirSync(source);
+ for (const entry of directoryListing) {
+ this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite });
+ }
+ } else if (stat.isFile()) {
+ if (!exists || overwrite) {
+ if (exists)
+ this.removeSync(destination);
+ const content = baseFs.readFileSync(source);
+ this.writeFileSync(destination, content);
+ }
+ } else if (stat.isSymbolicLink()) {
+ if (!exists || overwrite) {
+ if (exists)
+ this.removeSync(destination);
+ const target = baseFs.readlinkSync(source);
+ this.symlinkSync(convertPath(this.pathUtils, target), destination);
+ }
+ } else {
+ throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`);
+ }
+ const mode = stat.mode & 511;
+ this.chmodSync(destination, mode);
+ }
+ async changeFilePromise(p, content, opts = {}) {
+ if (Buffer.isBuffer(content)) {
+ return this.changeFileBufferPromise(p, content, opts);
+ } else {
+ return this.changeFileTextPromise(p, content, opts);
+ }
+ }
+ async changeFileBufferPromise(p, content, { mode } = {}) {
+ let current = Buffer.alloc(0);
+ try {
+ current = await this.readFilePromise(p);
+ } catch (error) {
+ }
+ if (Buffer.compare(current, content) === 0)
+ return;
+ await this.writeFilePromise(p, content, { mode });
+ }
+ async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) {
+ let current = ``;
+ try {
+ current = await this.readFilePromise(p, `utf8`);
+ } catch (error) {
+ }
+ const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content;
+ if (current === normalizedContent)
+ return;
+ await this.writeFilePromise(p, normalizedContent, { mode });
+ }
+ changeFileSync(p, content, opts = {}) {
+ if (Buffer.isBuffer(content)) {
+ return this.changeFileBufferSync(p, content, opts);
+ } else {
+ return this.changeFileTextSync(p, content, opts);
+ }
+ }
+ changeFileBufferSync(p, content, { mode } = {}) {
+ let current = Buffer.alloc(0);
+ try {
+ current = this.readFileSync(p);
+ } catch (error) {
+ }
+ if (Buffer.compare(current, content) === 0)
+ return;
+ this.writeFileSync(p, content, { mode });
+ }
+ changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) {
+ let current = ``;
+ try {
+ current = this.readFileSync(p, `utf8`);
+ } catch (error) {
+ }
+ const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content;
+ if (current === normalizedContent)
+ return;
+ this.writeFileSync(p, normalizedContent, { mode });
+ }
+ async movePromise(fromP, toP) {
+ try {
+ await this.renamePromise(fromP, toP);
+ } catch (error) {
+ if (error.code === `EXDEV`) {
+ await this.copyPromise(toP, fromP);
+ await this.removePromise(fromP);
+ } else {
+ throw error;
+ }
+ }
+ }
+ moveSync(fromP, toP) {
+ try {
+ this.renameSync(fromP, toP);
+ } catch (error) {
+ if (error.code === `EXDEV`) {
+ this.copySync(toP, fromP);
+ this.removeSync(fromP);
+ } else {
+ throw error;
+ }
+ }
+ }
+ async lockPromise(affectedPath, callback) {
+ const lockPath = `${affectedPath}.flock`;
+ const interval = 1e3 / 60;
+ const startTime = Date.now();
+ let fd = null;
+ const isAlive = async () => {
+ let pid;
+ try {
+ [pid] = await this.readJsonPromise(lockPath);
+ } catch (error) {
+ return Date.now() - startTime < 500;
+ }
+ try {
+ process.kill(pid, 0);
+ return true;
+ } catch (error) {
+ return false;
+ }
+ };
+ while (fd === null) {
+ try {
+ fd = await this.openPromise(lockPath, `wx`);
+ } catch (error) {
+ if (error.code === `EEXIST`) {
+ if (!await isAlive()) {
+ try {
+ await this.unlinkPromise(lockPath);
+ continue;
+ } catch (error2) {
+ }
+ }
+ if (Date.now() - startTime < 60 * 1e3) {
+ await new Promise((resolve) => setTimeout(resolve, interval));
+ } else {
+ throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`);
+ }
+ } else {
+ throw error;
+ }
+ }
+ }
+ await this.writePromise(fd, JSON.stringify([process.pid]));
+ try {
+ return await callback();
+ } finally {
+ try {
+ await this.closePromise(fd);
+ await this.unlinkPromise(lockPath);
+ } catch (error) {
+ }
+ }
+ }
+ async readJsonPromise(p) {
+ const content = await this.readFilePromise(p, `utf8`);
+ try {
+ return JSON.parse(content);
+ } catch (error) {
+ error.message += ` (in ${p})`;
+ throw error;
+ }
+ }
+ readJsonSync(p) {
+ const content = this.readFileSync(p, `utf8`);
+ try {
+ return JSON.parse(content);
+ } catch (error) {
+ error.message += ` (in ${p})`;
+ throw error;
+ }
+ }
+ async writeJsonPromise(p, data) {
+ return await this.writeFilePromise(p, `${JSON.stringify(data, null, 2)}
+`);
+ }
+ writeJsonSync(p, data) {
+ return this.writeFileSync(p, `${JSON.stringify(data, null, 2)}
+`);
+ }
+ async preserveTimePromise(p, cb) {
+ const stat = await this.lstatPromise(p);
+ const result = await cb();
+ if (typeof result !== `undefined`)
+ p = result;
+ await this.lutimesPromise(p, stat.atime, stat.mtime);
+ }
+ async preserveTimeSync(p, cb) {
+ const stat = this.lstatSync(p);
+ const result = cb();
+ if (typeof result !== `undefined`)
+ p = result;
+ this.lutimesSync(p, stat.atime, stat.mtime);
+ }
+}
+class BasePortableFakeFS extends FakeFS {
+ constructor() {
+ super(ppath);
+ }
+}
+function getEndOfLine(content) {
+ const matches = content.match(/\r?\n/g);
+ if (matches === null)
+ return os.EOL;
+ const crlf = matches.filter((nl) => nl === `\r
+`).length;
+ const lf = matches.length - crlf;
+ return crlf > lf ? `\r
+` : `
+`;
+}
+function normalizeLineEndings(originalContent, newContent) {
+ return newContent.replace(/\r?\n/g, getEndOfLine(originalContent));
+}
+
+class ProxiedFS extends FakeFS {
+ getExtractHint(hints) {
+ return this.baseFs.getExtractHint(hints);
+ }
+ resolve(path) {
+ return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path)));
+ }
+ getRealPath() {
+ return this.mapFromBase(this.baseFs.getRealPath());
+ }
+ async openPromise(p, flags, mode) {
+ return this.baseFs.openPromise(this.mapToBase(p), flags, mode);
+ }
+ openSync(p, flags, mode) {
+ return this.baseFs.openSync(this.mapToBase(p), flags, mode);
+ }
+ async opendirPromise(p, opts) {
+ return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p });
+ }
+ opendirSync(p, opts) {
+ return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p });
+ }
+ async readPromise(fd, buffer, offset, length, position) {
+ return await this.baseFs.readPromise(fd, buffer, offset, length, position);
+ }
+ readSync(fd, buffer, offset, length, position) {
+ return this.baseFs.readSync(fd, buffer, offset, length, position);
+ }
+ async writePromise(fd, buffer, offset, length, position) {
+ if (typeof buffer === `string`) {
+ return await this.baseFs.writePromise(fd, buffer, offset);
+ } else {
+ return await this.baseFs.writePromise(fd, buffer, offset, length, position);
+ }
+ }
+ writeSync(fd, buffer, offset, length, position) {
+ if (typeof buffer === `string`) {
+ return this.baseFs.writeSync(fd, buffer, offset);
+ } else {
+ return this.baseFs.writeSync(fd, buffer, offset, length, position);
+ }
+ }
+ async closePromise(fd) {
+ return this.baseFs.closePromise(fd);
+ }
+ closeSync(fd) {
+ this.baseFs.closeSync(fd);
+ }
+ createReadStream(p, opts) {
+ return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts);
+ }
+ createWriteStream(p, opts) {
+ return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts);
+ }
+ async realpathPromise(p) {
+ return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p)));
+ }
+ realpathSync(p) {
+ return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p)));
+ }
+ async existsPromise(p) {
+ return this.baseFs.existsPromise(this.mapToBase(p));
+ }
+ existsSync(p) {
+ return this.baseFs.existsSync(this.mapToBase(p));
+ }
+ accessSync(p, mode) {
+ return this.baseFs.accessSync(this.mapToBase(p), mode);
+ }
+ async accessPromise(p, mode) {
+ return this.baseFs.accessPromise(this.mapToBase(p), mode);
+ }
+ async statPromise(p, opts) {
+ return this.baseFs.statPromise(this.mapToBase(p), opts);
+ }
+ statSync(p, opts) {
+ return this.baseFs.statSync(this.mapToBase(p), opts);
+ }
+ async fstatPromise(fd, opts) {
+ return this.baseFs.fstatPromise(fd, opts);
+ }
+ fstatSync(fd, opts) {
+ return this.baseFs.fstatSync(fd, opts);
+ }
+ lstatPromise(p, opts) {
+ return this.baseFs.lstatPromise(this.mapToBase(p), opts);
+ }
+ lstatSync(p, opts) {
+ return this.baseFs.lstatSync(this.mapToBase(p), opts);
+ }
+ async fchmodPromise(fd, mask) {
+ return this.baseFs.fchmodPromise(fd, mask);
+ }
+ fchmodSync(fd, mask) {
+ return this.baseFs.fchmodSync(fd, mask);
+ }
+ async chmodPromise(p, mask) {
+ return this.baseFs.chmodPromise(this.mapToBase(p), mask);
+ }
+ chmodSync(p, mask) {
+ return this.baseFs.chmodSync(this.mapToBase(p), mask);
+ }
+ async fchownPromise(fd, uid, gid) {
+ return this.baseFs.fchownPromise(fd, uid, gid);
+ }
+ fchownSync(fd, uid, gid) {
+ return this.baseFs.fchownSync(fd, uid, gid);
+ }
+ async chownPromise(p, uid, gid) {
+ return this.baseFs.chownPromise(this.mapToBase(p), uid, gid);
+ }
+ chownSync(p, uid, gid) {
+ return this.baseFs.chownSync(this.mapToBase(p), uid, gid);
+ }
+ async renamePromise(oldP, newP) {
+ return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP));
+ }
+ renameSync(oldP, newP) {
+ return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP));
+ }
+ async copyFilePromise(sourceP, destP, flags = 0) {
+ return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags);
+ }
+ copyFileSync(sourceP, destP, flags = 0) {
+ return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags);
+ }
+ async appendFilePromise(p, content, opts) {
+ return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts);
+ }
+ appendFileSync(p, content, opts) {
+ return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts);
+ }
+ async writeFilePromise(p, content, opts) {
+ return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts);
+ }
+ writeFileSync(p, content, opts) {
+ return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts);
+ }
+ async unlinkPromise(p) {
+ return this.baseFs.unlinkPromise(this.mapToBase(p));
+ }
+ unlinkSync(p) {
+ return this.baseFs.unlinkSync(this.mapToBase(p));
+ }
+ async utimesPromise(p, atime, mtime) {
+ return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime);
+ }
+ utimesSync(p, atime, mtime) {
+ return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime);
+ }
+ async lutimesPromise(p, atime, mtime) {
+ return this.baseFs.lutimesPromise(this.mapToBase(p), atime, mtime);
+ }
+ lutimesSync(p, atime, mtime) {
+ return this.baseFs.lutimesSync(this.mapToBase(p), atime, mtime);
+ }
+ async mkdirPromise(p, opts) {
+ return this.baseFs.mkdirPromise(this.mapToBase(p), opts);
+ }
+ mkdirSync(p, opts) {
+ return this.baseFs.mkdirSync(this.mapToBase(p), opts);
+ }
+ async rmdirPromise(p, opts) {
+ return this.baseFs.rmdirPromise(this.mapToBase(p), opts);
+ }
+ rmdirSync(p, opts) {
+ return this.baseFs.rmdirSync(this.mapToBase(p), opts);
+ }
+ async linkPromise(existingP, newP) {
+ return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP));
+ }
+ linkSync(existingP, newP) {
+ return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP));
+ }
+ async symlinkPromise(target, p, type) {
+ const mappedP = this.mapToBase(p);
+ if (this.pathUtils.isAbsolute(target))
+ return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type);
+ const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target));
+ const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget);
+ return this.baseFs.symlinkPromise(mappedTarget, mappedP, type);
+ }
+ symlinkSync(target, p, type) {
+ const mappedP = this.mapToBase(p);
+ if (this.pathUtils.isAbsolute(target))
+ return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type);
+ const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target));
+ const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget);
+ return this.baseFs.symlinkSync(mappedTarget, mappedP, type);
+ }
+ async readFilePromise(p, encoding) {
+ return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding);
+ }
+ readFileSync(p, encoding) {
+ return this.baseFs.readFileSync(this.fsMapToBase(p), encoding);
+ }
+ async readdirPromise(p, opts) {
+ return this.baseFs.readdirPromise(this.mapToBase(p), opts);
+ }
+ readdirSync(p, opts) {
+ return this.baseFs.readdirSync(this.mapToBase(p), opts);
+ }
+ async readlinkPromise(p) {
+ return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p)));
+ }
+ readlinkSync(p) {
+ return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p)));
+ }
+ async truncatePromise(p, len) {
+ return this.baseFs.truncatePromise(this.mapToBase(p), len);
+ }
+ truncateSync(p, len) {
+ return this.baseFs.truncateSync(this.mapToBase(p), len);
+ }
+ async ftruncatePromise(fd, len) {
+ return this.baseFs.ftruncatePromise(fd, len);
+ }
+ ftruncateSync(fd, len) {
+ return this.baseFs.ftruncateSync(fd, len);
+ }
+ watch(p, a, b) {
+ return this.baseFs.watch(
+ this.mapToBase(p),
+ a,
+ b
+ );
+ }
+ watchFile(p, a, b) {
+ return this.baseFs.watchFile(
+ this.mapToBase(p),
+ a,
+ b
+ );
+ }
+ unwatchFile(p, cb) {
+ return this.baseFs.unwatchFile(this.mapToBase(p), cb);
+ }
+ fsMapToBase(p) {
+ if (typeof p === `number`) {
+ return p;
+ } else {
+ return this.mapToBase(p);
+ }
+ }
+}
+
+class NodeFS extends BasePortableFakeFS {
+ constructor(realFs = fs__default.default) {
+ super();
+ this.realFs = realFs;
+ }
+ getExtractHint() {
+ return false;
+ }
+ getRealPath() {
+ return PortablePath.root;
+ }
+ resolve(p) {
+ return ppath.resolve(p);
+ }
+ async openPromise(p, flags, mode) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject));
+ });
+ }
+ openSync(p, flags, mode) {
+ return this.realFs.openSync(npath.fromPortablePath(p), flags, mode);
+ }
+ async opendirPromise(p, opts) {
+ return await new Promise((resolve, reject) => {
+ if (typeof opts !== `undefined`) {
+ this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
+ } else {
+ this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
+ }
+ }).then((dir) => {
+ return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true });
+ });
+ }
+ opendirSync(p, opts) {
+ const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p));
+ return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true });
+ }
+ async readPromise(fd, buffer, offset = 0, length = 0, position = -1) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => {
+ if (error) {
+ reject(error);
+ } else {
+ resolve(bytesRead);
+ }
+ });
+ });
+ }
+ readSync(fd, buffer, offset, length, position) {
+ return this.realFs.readSync(fd, buffer, offset, length, position);
+ }
+ async writePromise(fd, buffer, offset, length, position) {
+ return await new Promise((resolve, reject) => {
+ if (typeof buffer === `string`) {
+ return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject));
+ } else {
+ return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject));
+ }
+ });
+ }
+ writeSync(fd, buffer, offset, length, position) {
+ if (typeof buffer === `string`) {
+ return this.realFs.writeSync(fd, buffer, offset);
+ } else {
+ return this.realFs.writeSync(fd, buffer, offset, length, position);
+ }
+ }
+ async closePromise(fd) {
+ await new Promise((resolve, reject) => {
+ this.realFs.close(fd, this.makeCallback(resolve, reject));
+ });
+ }
+ closeSync(fd) {
+ this.realFs.closeSync(fd);
+ }
+ createReadStream(p, opts) {
+ const realPath = p !== null ? npath.fromPortablePath(p) : p;
+ return this.realFs.createReadStream(realPath, opts);
+ }
+ createWriteStream(p, opts) {
+ const realPath = p !== null ? npath.fromPortablePath(p) : p;
+ return this.realFs.createWriteStream(realPath, opts);
+ }
+ async realpathPromise(p) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject));
+ }).then((path) => {
+ return npath.toPortablePath(path);
+ });
+ }
+ realpathSync(p) {
+ return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {}));
+ }
+ async existsPromise(p) {
+ return await new Promise((resolve) => {
+ this.realFs.exists(npath.fromPortablePath(p), resolve);
+ });
+ }
+ accessSync(p, mode) {
+ return this.realFs.accessSync(npath.fromPortablePath(p), mode);
+ }
+ async accessPromise(p, mode) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject));
+ });
+ }
+ existsSync(p) {
+ return this.realFs.existsSync(npath.fromPortablePath(p));
+ }
+ async statPromise(p, opts) {
+ return await new Promise((resolve, reject) => {
+ if (opts) {
+ this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
+ } else {
+ this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
+ }
+ });
+ }
+ statSync(p, opts) {
+ if (opts) {
+ return this.realFs.statSync(npath.fromPortablePath(p), opts);
+ } else {
+ return this.realFs.statSync(npath.fromPortablePath(p));
+ }
+ }
+ async fstatPromise(fd, opts) {
+ return await new Promise((resolve, reject) => {
+ if (opts) {
+ this.realFs.fstat(fd, opts, this.makeCallback(resolve, reject));
+ } else {
+ this.realFs.fstat(fd, this.makeCallback(resolve, reject));
+ }
+ });
+ }
+ fstatSync(fd, opts) {
+ if (opts) {
+ return this.realFs.fstatSync(fd, opts);
+ } else {
+ return this.realFs.fstatSync(fd);
+ }
+ }
+ async lstatPromise(p, opts) {
+ return await new Promise((resolve, reject) => {
+ if (opts) {
+ this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
+ } else {
+ this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
+ }
+ });
+ }
+ lstatSync(p, opts) {
+ if (opts) {
+ return this.realFs.lstatSync(npath.fromPortablePath(p), opts);
+ } else {
+ return this.realFs.lstatSync(npath.fromPortablePath(p));
+ }
+ }
+ async fchmodPromise(fd, mask) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.fchmod(fd, mask, this.makeCallback(resolve, reject));
+ });
+ }
+ fchmodSync(fd, mask) {
+ return this.realFs.fchmodSync(fd, mask);
+ }
+ async chmodPromise(p, mask) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject));
+ });
+ }
+ chmodSync(p, mask) {
+ return this.realFs.chmodSync(npath.fromPortablePath(p), mask);
+ }
+ async fchownPromise(fd, uid, gid) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.fchown(fd, uid, gid, this.makeCallback(resolve, reject));
+ });
+ }
+ fchownSync(fd, uid, gid) {
+ return this.realFs.fchownSync(fd, uid, gid);
+ }
+ async chownPromise(p, uid, gid) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject));
+ });
+ }
+ chownSync(p, uid, gid) {
+ return this.realFs.chownSync(npath.fromPortablePath(p), uid, gid);
+ }
+ async renamePromise(oldP, newP) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject));
+ });
+ }
+ renameSync(oldP, newP) {
+ return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP));
+ }
+ async copyFilePromise(sourceP, destP, flags = 0) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject));
+ });
+ }
+ copyFileSync(sourceP, destP, flags = 0) {
+ return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags);
+ }
+ async appendFilePromise(p, content, opts) {
+ return await new Promise((resolve, reject) => {
+ const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
+ if (opts) {
+ this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject));
+ } else {
+ this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject));
+ }
+ });
+ }
+ appendFileSync(p, content, opts) {
+ const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
+ if (opts) {
+ this.realFs.appendFileSync(fsNativePath, content, opts);
+ } else {
+ this.realFs.appendFileSync(fsNativePath, content);
+ }
+ }
+ async writeFilePromise(p, content, opts) {
+ return await new Promise((resolve, reject) => {
+ const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
+ if (opts) {
+ this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject));
+ } else {
+ this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject));
+ }
+ });
+ }
+ writeFileSync(p, content, opts) {
+ const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
+ if (opts) {
+ this.realFs.writeFileSync(fsNativePath, content, opts);
+ } else {
+ this.realFs.writeFileSync(fsNativePath, content);
+ }
+ }
+ async unlinkPromise(p) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
+ });
+ }
+ unlinkSync(p) {
+ return this.realFs.unlinkSync(npath.fromPortablePath(p));
+ }
+ async utimesPromise(p, atime, mtime) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject));
+ });
+ }
+ utimesSync(p, atime, mtime) {
+ this.realFs.utimesSync(npath.fromPortablePath(p), atime, mtime);
+ }
+ async lutimesPromise(p, atime, mtime) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.lutimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject));
+ });
+ }
+ lutimesSync(p, atime, mtime) {
+ this.realFs.lutimesSync(npath.fromPortablePath(p), atime, mtime);
+ }
+ async mkdirPromise(p, opts) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
+ });
+ }
+ mkdirSync(p, opts) {
+ return this.realFs.mkdirSync(npath.fromPortablePath(p), opts);
+ }
+ async rmdirPromise(p, opts) {
+ return await new Promise((resolve, reject) => {
+ if (opts) {
+ this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
+ } else {
+ this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
+ }
+ });
+ }
+ rmdirSync(p, opts) {
+ return this.realFs.rmdirSync(npath.fromPortablePath(p), opts);
+ }
+ async linkPromise(existingP, newP) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject));
+ });
+ }
+ linkSync(existingP, newP) {
+ return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP));
+ }
+ async symlinkPromise(target, p, type) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject));
+ });
+ }
+ symlinkSync(target, p, type) {
+ return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type);
+ }
+ async readFilePromise(p, encoding) {
+ return await new Promise((resolve, reject) => {
+ const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
+ this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject));
+ });
+ }
+ readFileSync(p, encoding) {
+ const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
+ return this.realFs.readFileSync(fsNativePath, encoding);
+ }
+ async readdirPromise(p, opts) {
+ return await new Promise((resolve, reject) => {
+ if (opts == null ? void 0 : opts.withFileTypes) {
+ this.realFs.readdir(npath.fromPortablePath(p), { withFileTypes: true }, this.makeCallback(resolve, reject));
+ } else {
+ this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback((value) => resolve(value), reject));
+ }
+ });
+ }
+ readdirSync(p, opts) {
+ if (opts == null ? void 0 : opts.withFileTypes) {
+ return this.realFs.readdirSync(npath.fromPortablePath(p), { withFileTypes: true });
+ } else {
+ return this.realFs.readdirSync(npath.fromPortablePath(p));
+ }
+ }
+ async readlinkPromise(p) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
+ }).then((path) => {
+ return npath.toPortablePath(path);
+ });
+ }
+ readlinkSync(p) {
+ return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p)));
+ }
+ async truncatePromise(p, len) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject));
+ });
+ }
+ truncateSync(p, len) {
+ return this.realFs.truncateSync(npath.fromPortablePath(p), len);
+ }
+ async ftruncatePromise(fd, len) {
+ return await new Promise((resolve, reject) => {
+ this.realFs.ftruncate(fd, len, this.makeCallback(resolve, reject));
+ });
+ }
+ ftruncateSync(fd, len) {
+ return this.realFs.ftruncateSync(fd, len);
+ }
+ watch(p, a, b) {
+ return this.realFs.watch(
+ npath.fromPortablePath(p),
+ a,
+ b
+ );
+ }
+ watchFile(p, a, b) {
+ return this.realFs.watchFile(
+ npath.fromPortablePath(p),
+ a,
+ b
+ );
+ }
+ unwatchFile(p, cb) {
+ return this.realFs.unwatchFile(npath.fromPortablePath(p), cb);
+ }
+ makeCallback(resolve, reject) {
+ return (err, result) => {
+ if (err) {
+ reject(err);
+ } else {
+ resolve(result);
+ }
+ };
+ }
+}
+
+const MOUNT_MASK = 4278190080;
+class MountFS extends BasePortableFakeFS {
+ constructor({ baseFs = new NodeFS(), filter = null, magicByte = 42, maxOpenFiles = Infinity, useCache = true, maxAge = 5e3, typeCheck = fs.constants.S_IFREG, getMountPoint, factoryPromise, factorySync }) {
+ if (Math.floor(magicByte) !== magicByte || !(magicByte > 1 && magicByte <= 127))
+ throw new Error(`The magic byte must be set to a round value between 1 and 127 included`);
+ super();
+ this.fdMap = /* @__PURE__ */ new Map();
+ this.nextFd = 3;
+ this.isMount = /* @__PURE__ */ new Set();
+ this.notMount = /* @__PURE__ */ new Set();
+ this.realPaths = /* @__PURE__ */ new Map();
+ this.limitOpenFilesTimeout = null;
+ this.baseFs = baseFs;
+ this.mountInstances = useCache ? /* @__PURE__ */ new Map() : null;
+ this.factoryPromise = factoryPromise;
+ this.factorySync = factorySync;
+ this.filter = filter;
+ this.getMountPoint = getMountPoint;
+ this.magic = magicByte << 24;
+ this.maxAge = maxAge;
+ this.maxOpenFiles = maxOpenFiles;
+ this.typeCheck = typeCheck;
+ }
+ getExtractHint(hints) {
+ return this.baseFs.getExtractHint(hints);
+ }
+ getRealPath() {
+ return this.baseFs.getRealPath();
+ }
+ saveAndClose() {
+ var _a;
+ unwatchAllFiles(this);
+ if (this.mountInstances) {
+ for (const [path, { childFs }] of this.mountInstances.entries()) {
+ (_a = childFs.saveAndClose) == null ? void 0 : _a.call(childFs);
+ this.mountInstances.delete(path);
+ }
+ }
+ }
+ discardAndClose() {
+ var _a;
+ unwatchAllFiles(this);
+ if (this.mountInstances) {
+ for (const [path, { childFs }] of this.mountInstances.entries()) {
+ (_a = childFs.discardAndClose) == null ? void 0 : _a.call(childFs);
+ this.mountInstances.delete(path);
+ }
+ }
+ }
+ resolve(p) {
+ return this.baseFs.resolve(p);
+ }
+ remapFd(mountFs, fd) {
+ const remappedFd = this.nextFd++ | this.magic;
+ this.fdMap.set(remappedFd, [mountFs, fd]);
+ return remappedFd;
+ }
+ async openPromise(p, flags, mode) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.openPromise(p, flags, mode);
+ }, async (mountFs, { subPath }) => {
+ return this.remapFd(mountFs, await mountFs.openPromise(subPath, flags, mode));
+ });
+ }
+ openSync(p, flags, mode) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.openSync(p, flags, mode);
+ }, (mountFs, { subPath }) => {
+ return this.remapFd(mountFs, mountFs.openSync(subPath, flags, mode));
+ });
+ }
+ async opendirPromise(p, opts) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.opendirPromise(p, opts);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.opendirPromise(subPath, opts);
+ }, {
+ requireSubpath: false
+ });
+ }
+ opendirSync(p, opts) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.opendirSync(p, opts);
+ }, (mountFs, { subPath }) => {
+ return mountFs.opendirSync(subPath, opts);
+ }, {
+ requireSubpath: false
+ });
+ }
+ async readPromise(fd, buffer, offset, length, position) {
+ if ((fd & MOUNT_MASK) !== this.magic)
+ return await this.baseFs.readPromise(fd, buffer, offset, length, position);
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`read`);
+ const [mountFs, realFd] = entry;
+ return await mountFs.readPromise(realFd, buffer, offset, length, position);
+ }
+ readSync(fd, buffer, offset, length, position) {
+ if ((fd & MOUNT_MASK) !== this.magic)
+ return this.baseFs.readSync(fd, buffer, offset, length, position);
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`readSync`);
+ const [mountFs, realFd] = entry;
+ return mountFs.readSync(realFd, buffer, offset, length, position);
+ }
+ async writePromise(fd, buffer, offset, length, position) {
+ if ((fd & MOUNT_MASK) !== this.magic) {
+ if (typeof buffer === `string`) {
+ return await this.baseFs.writePromise(fd, buffer, offset);
+ } else {
+ return await this.baseFs.writePromise(fd, buffer, offset, length, position);
+ }
+ }
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`write`);
+ const [mountFs, realFd] = entry;
+ if (typeof buffer === `string`) {
+ return await mountFs.writePromise(realFd, buffer, offset);
+ } else {
+ return await mountFs.writePromise(realFd, buffer, offset, length, position);
+ }
+ }
+ writeSync(fd, buffer, offset, length, position) {
+ if ((fd & MOUNT_MASK) !== this.magic) {
+ if (typeof buffer === `string`) {
+ return this.baseFs.writeSync(fd, buffer, offset);
+ } else {
+ return this.baseFs.writeSync(fd, buffer, offset, length, position);
+ }
+ }
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`writeSync`);
+ const [mountFs, realFd] = entry;
+ if (typeof buffer === `string`) {
+ return mountFs.writeSync(realFd, buffer, offset);
+ } else {
+ return mountFs.writeSync(realFd, buffer, offset, length, position);
+ }
+ }
+ async closePromise(fd) {
+ if ((fd & MOUNT_MASK) !== this.magic)
+ return await this.baseFs.closePromise(fd);
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`close`);
+ this.fdMap.delete(fd);
+ const [mountFs, realFd] = entry;
+ return await mountFs.closePromise(realFd);
+ }
+ closeSync(fd) {
+ if ((fd & MOUNT_MASK) !== this.magic)
+ return this.baseFs.closeSync(fd);
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`closeSync`);
+ this.fdMap.delete(fd);
+ const [mountFs, realFd] = entry;
+ return mountFs.closeSync(realFd);
+ }
+ createReadStream(p, opts) {
+ if (p === null)
+ return this.baseFs.createReadStream(p, opts);
+ return this.makeCallSync(p, () => {
+ return this.baseFs.createReadStream(p, opts);
+ }, (mountFs, { archivePath, subPath }) => {
+ const stream = mountFs.createReadStream(subPath, opts);
+ stream.path = npath.fromPortablePath(this.pathUtils.join(archivePath, subPath));
+ return stream;
+ });
+ }
+ createWriteStream(p, opts) {
+ if (p === null)
+ return this.baseFs.createWriteStream(p, opts);
+ return this.makeCallSync(p, () => {
+ return this.baseFs.createWriteStream(p, opts);
+ }, (mountFs, { subPath }) => {
+ return mountFs.createWriteStream(subPath, opts);
+ });
+ }
+ async realpathPromise(p) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.realpathPromise(p);
+ }, async (mountFs, { archivePath, subPath }) => {
+ let realArchivePath = this.realPaths.get(archivePath);
+ if (typeof realArchivePath === `undefined`) {
+ realArchivePath = await this.baseFs.realpathPromise(archivePath);
+ this.realPaths.set(archivePath, realArchivePath);
+ }
+ return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, await mountFs.realpathPromise(subPath)));
+ });
+ }
+ realpathSync(p) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.realpathSync(p);
+ }, (mountFs, { archivePath, subPath }) => {
+ let realArchivePath = this.realPaths.get(archivePath);
+ if (typeof realArchivePath === `undefined`) {
+ realArchivePath = this.baseFs.realpathSync(archivePath);
+ this.realPaths.set(archivePath, realArchivePath);
+ }
+ return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, mountFs.realpathSync(subPath)));
+ });
+ }
+ async existsPromise(p) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.existsPromise(p);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.existsPromise(subPath);
+ });
+ }
+ existsSync(p) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.existsSync(p);
+ }, (mountFs, { subPath }) => {
+ return mountFs.existsSync(subPath);
+ });
+ }
+ async accessPromise(p, mode) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.accessPromise(p, mode);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.accessPromise(subPath, mode);
+ });
+ }
+ accessSync(p, mode) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.accessSync(p, mode);
+ }, (mountFs, { subPath }) => {
+ return mountFs.accessSync(subPath, mode);
+ });
+ }
+ async statPromise(p, opts) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.statPromise(p, opts);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.statPromise(subPath, opts);
+ });
+ }
+ statSync(p, opts) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.statSync(p, opts);
+ }, (mountFs, { subPath }) => {
+ return mountFs.statSync(subPath, opts);
+ });
+ }
+ async fstatPromise(fd, opts) {
+ if ((fd & MOUNT_MASK) !== this.magic)
+ return this.baseFs.fstatPromise(fd, opts);
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`fstat`);
+ const [mountFs, realFd] = entry;
+ return mountFs.fstatPromise(realFd, opts);
+ }
+ fstatSync(fd, opts) {
+ if ((fd & MOUNT_MASK) !== this.magic)
+ return this.baseFs.fstatSync(fd, opts);
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`fstatSync`);
+ const [mountFs, realFd] = entry;
+ return mountFs.fstatSync(realFd, opts);
+ }
+ async lstatPromise(p, opts) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.lstatPromise(p, opts);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.lstatPromise(subPath, opts);
+ });
+ }
+ lstatSync(p, opts) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.lstatSync(p, opts);
+ }, (mountFs, { subPath }) => {
+ return mountFs.lstatSync(subPath, opts);
+ });
+ }
+ async fchmodPromise(fd, mask) {
+ if ((fd & MOUNT_MASK) !== this.magic)
+ return this.baseFs.fchmodPromise(fd, mask);
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`fchmod`);
+ const [mountFs, realFd] = entry;
+ return mountFs.fchmodPromise(realFd, mask);
+ }
+ fchmodSync(fd, mask) {
+ if ((fd & MOUNT_MASK) !== this.magic)
+ return this.baseFs.fchmodSync(fd, mask);
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`fchmodSync`);
+ const [mountFs, realFd] = entry;
+ return mountFs.fchmodSync(realFd, mask);
+ }
+ async chmodPromise(p, mask) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.chmodPromise(p, mask);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.chmodPromise(subPath, mask);
+ });
+ }
+ chmodSync(p, mask) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.chmodSync(p, mask);
+ }, (mountFs, { subPath }) => {
+ return mountFs.chmodSync(subPath, mask);
+ });
+ }
+ async fchownPromise(fd, uid, gid) {
+ if ((fd & MOUNT_MASK) !== this.magic)
+ return this.baseFs.fchownPromise(fd, uid, gid);
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`fchown`);
+ const [zipFs, realFd] = entry;
+ return zipFs.fchownPromise(realFd, uid, gid);
+ }
+ fchownSync(fd, uid, gid) {
+ if ((fd & MOUNT_MASK) !== this.magic)
+ return this.baseFs.fchownSync(fd, uid, gid);
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`fchownSync`);
+ const [zipFs, realFd] = entry;
+ return zipFs.fchownSync(realFd, uid, gid);
+ }
+ async chownPromise(p, uid, gid) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.chownPromise(p, uid, gid);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.chownPromise(subPath, uid, gid);
+ });
+ }
+ chownSync(p, uid, gid) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.chownSync(p, uid, gid);
+ }, (mountFs, { subPath }) => {
+ return mountFs.chownSync(subPath, uid, gid);
+ });
+ }
+ async renamePromise(oldP, newP) {
+ return await this.makeCallPromise(oldP, async () => {
+ return await this.makeCallPromise(newP, async () => {
+ return await this.baseFs.renamePromise(oldP, newP);
+ }, async () => {
+ throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
+ });
+ }, async (mountFsO, { subPath: subPathO }) => {
+ return await this.makeCallPromise(newP, async () => {
+ throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
+ }, async (mountFsN, { subPath: subPathN }) => {
+ if (mountFsO !== mountFsN) {
+ throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
+ } else {
+ return await mountFsO.renamePromise(subPathO, subPathN);
+ }
+ });
+ });
+ }
+ renameSync(oldP, newP) {
+ return this.makeCallSync(oldP, () => {
+ return this.makeCallSync(newP, () => {
+ return this.baseFs.renameSync(oldP, newP);
+ }, () => {
+ throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
+ });
+ }, (mountFsO, { subPath: subPathO }) => {
+ return this.makeCallSync(newP, () => {
+ throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
+ }, (mountFsN, { subPath: subPathN }) => {
+ if (mountFsO !== mountFsN) {
+ throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
+ } else {
+ return mountFsO.renameSync(subPathO, subPathN);
+ }
+ });
+ });
+ }
+ async copyFilePromise(sourceP, destP, flags = 0) {
+ const fallback = async (sourceFs, sourceP2, destFs, destP2) => {
+ if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0)
+ throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` });
+ if (flags & fs.constants.COPYFILE_EXCL && await this.existsPromise(sourceP2))
+ throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` });
+ let content;
+ try {
+ content = await sourceFs.readFilePromise(sourceP2);
+ } catch (error) {
+ throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` });
+ }
+ await destFs.writeFilePromise(destP2, content);
+ };
+ return await this.makeCallPromise(sourceP, async () => {
+ return await this.makeCallPromise(destP, async () => {
+ return await this.baseFs.copyFilePromise(sourceP, destP, flags);
+ }, async (mountFsD, { subPath: subPathD }) => {
+ return await fallback(this.baseFs, sourceP, mountFsD, subPathD);
+ });
+ }, async (mountFsS, { subPath: subPathS }) => {
+ return await this.makeCallPromise(destP, async () => {
+ return await fallback(mountFsS, subPathS, this.baseFs, destP);
+ }, async (mountFsD, { subPath: subPathD }) => {
+ if (mountFsS !== mountFsD) {
+ return await fallback(mountFsS, subPathS, mountFsD, subPathD);
+ } else {
+ return await mountFsS.copyFilePromise(subPathS, subPathD, flags);
+ }
+ });
+ });
+ }
+ copyFileSync(sourceP, destP, flags = 0) {
+ const fallback = (sourceFs, sourceP2, destFs, destP2) => {
+ if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0)
+ throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` });
+ if (flags & fs.constants.COPYFILE_EXCL && this.existsSync(sourceP2))
+ throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` });
+ let content;
+ try {
+ content = sourceFs.readFileSync(sourceP2);
+ } catch (error) {
+ throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` });
+ }
+ destFs.writeFileSync(destP2, content);
+ };
+ return this.makeCallSync(sourceP, () => {
+ return this.makeCallSync(destP, () => {
+ return this.baseFs.copyFileSync(sourceP, destP, flags);
+ }, (mountFsD, { subPath: subPathD }) => {
+ return fallback(this.baseFs, sourceP, mountFsD, subPathD);
+ });
+ }, (mountFsS, { subPath: subPathS }) => {
+ return this.makeCallSync(destP, () => {
+ return fallback(mountFsS, subPathS, this.baseFs, destP);
+ }, (mountFsD, { subPath: subPathD }) => {
+ if (mountFsS !== mountFsD) {
+ return fallback(mountFsS, subPathS, mountFsD, subPathD);
+ } else {
+ return mountFsS.copyFileSync(subPathS, subPathD, flags);
+ }
+ });
+ });
+ }
+ async appendFilePromise(p, content, opts) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.appendFilePromise(p, content, opts);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.appendFilePromise(subPath, content, opts);
+ });
+ }
+ appendFileSync(p, content, opts) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.appendFileSync(p, content, opts);
+ }, (mountFs, { subPath }) => {
+ return mountFs.appendFileSync(subPath, content, opts);
+ });
+ }
+ async writeFilePromise(p, content, opts) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.writeFilePromise(p, content, opts);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.writeFilePromise(subPath, content, opts);
+ });
+ }
+ writeFileSync(p, content, opts) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.writeFileSync(p, content, opts);
+ }, (mountFs, { subPath }) => {
+ return mountFs.writeFileSync(subPath, content, opts);
+ });
+ }
+ async unlinkPromise(p) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.unlinkPromise(p);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.unlinkPromise(subPath);
+ });
+ }
+ unlinkSync(p) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.unlinkSync(p);
+ }, (mountFs, { subPath }) => {
+ return mountFs.unlinkSync(subPath);
+ });
+ }
+ async utimesPromise(p, atime, mtime) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.utimesPromise(p, atime, mtime);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.utimesPromise(subPath, atime, mtime);
+ });
+ }
+ utimesSync(p, atime, mtime) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.utimesSync(p, atime, mtime);
+ }, (mountFs, { subPath }) => {
+ return mountFs.utimesSync(subPath, atime, mtime);
+ });
+ }
+ async lutimesPromise(p, atime, mtime) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.lutimesPromise(p, atime, mtime);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.lutimesPromise(subPath, atime, mtime);
+ });
+ }
+ lutimesSync(p, atime, mtime) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.lutimesSync(p, atime, mtime);
+ }, (mountFs, { subPath }) => {
+ return mountFs.lutimesSync(subPath, atime, mtime);
+ });
+ }
+ async mkdirPromise(p, opts) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.mkdirPromise(p, opts);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.mkdirPromise(subPath, opts);
+ });
+ }
+ mkdirSync(p, opts) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.mkdirSync(p, opts);
+ }, (mountFs, { subPath }) => {
+ return mountFs.mkdirSync(subPath, opts);
+ });
+ }
+ async rmdirPromise(p, opts) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.rmdirPromise(p, opts);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.rmdirPromise(subPath, opts);
+ });
+ }
+ rmdirSync(p, opts) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.rmdirSync(p, opts);
+ }, (mountFs, { subPath }) => {
+ return mountFs.rmdirSync(subPath, opts);
+ });
+ }
+ async linkPromise(existingP, newP) {
+ return await this.makeCallPromise(newP, async () => {
+ return await this.baseFs.linkPromise(existingP, newP);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.linkPromise(existingP, subPath);
+ });
+ }
+ linkSync(existingP, newP) {
+ return this.makeCallSync(newP, () => {
+ return this.baseFs.linkSync(existingP, newP);
+ }, (mountFs, { subPath }) => {
+ return mountFs.linkSync(existingP, subPath);
+ });
+ }
+ async symlinkPromise(target, p, type) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.symlinkPromise(target, p, type);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.symlinkPromise(target, subPath);
+ });
+ }
+ symlinkSync(target, p, type) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.symlinkSync(target, p, type);
+ }, (mountFs, { subPath }) => {
+ return mountFs.symlinkSync(target, subPath);
+ });
+ }
+ async readFilePromise(p, encoding) {
+ return this.makeCallPromise(p, async () => {
+ return await this.baseFs.readFilePromise(p, encoding);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.readFilePromise(subPath, encoding);
+ });
+ }
+ readFileSync(p, encoding) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.readFileSync(p, encoding);
+ }, (mountFs, { subPath }) => {
+ return mountFs.readFileSync(subPath, encoding);
+ });
+ }
+ async readdirPromise(p, opts) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.readdirPromise(p, opts);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.readdirPromise(subPath, opts);
+ }, {
+ requireSubpath: false
+ });
+ }
+ readdirSync(p, opts) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.readdirSync(p, opts);
+ }, (mountFs, { subPath }) => {
+ return mountFs.readdirSync(subPath, opts);
+ }, {
+ requireSubpath: false
+ });
+ }
+ async readlinkPromise(p) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.readlinkPromise(p);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.readlinkPromise(subPath);
+ });
+ }
+ readlinkSync(p) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.readlinkSync(p);
+ }, (mountFs, { subPath }) => {
+ return mountFs.readlinkSync(subPath);
+ });
+ }
+ async truncatePromise(p, len) {
+ return await this.makeCallPromise(p, async () => {
+ return await this.baseFs.truncatePromise(p, len);
+ }, async (mountFs, { subPath }) => {
+ return await mountFs.truncatePromise(subPath, len);
+ });
+ }
+ truncateSync(p, len) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.truncateSync(p, len);
+ }, (mountFs, { subPath }) => {
+ return mountFs.truncateSync(subPath, len);
+ });
+ }
+ async ftruncatePromise(fd, len) {
+ if ((fd & MOUNT_MASK) !== this.magic)
+ return this.baseFs.ftruncatePromise(fd, len);
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`ftruncate`);
+ const [mountFs, realFd] = entry;
+ return mountFs.ftruncatePromise(realFd, len);
+ }
+ ftruncateSync(fd, len) {
+ if ((fd & MOUNT_MASK) !== this.magic)
+ return this.baseFs.ftruncateSync(fd, len);
+ const entry = this.fdMap.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`ftruncateSync`);
+ const [mountFs, realFd] = entry;
+ return mountFs.ftruncateSync(realFd, len);
+ }
+ watch(p, a, b) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.watch(
+ p,
+ a,
+ b
+ );
+ }, (mountFs, { subPath }) => {
+ return mountFs.watch(
+ subPath,
+ a,
+ b
+ );
+ });
+ }
+ watchFile(p, a, b) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.watchFile(
+ p,
+ a,
+ b
+ );
+ }, () => {
+ return watchFile(this, p, a, b);
+ });
+ }
+ unwatchFile(p, cb) {
+ return this.makeCallSync(p, () => {
+ return this.baseFs.unwatchFile(p, cb);
+ }, () => {
+ return unwatchFile(this, p, cb);
+ });
+ }
+ async makeCallPromise(p, discard, accept, { requireSubpath = true } = {}) {
+ if (typeof p !== `string`)
+ return await discard();
+ const normalizedP = this.resolve(p);
+ const mountInfo = this.findMount(normalizedP);
+ if (!mountInfo)
+ return await discard();
+ if (requireSubpath && mountInfo.subPath === `/`)
+ return await discard();
+ return await this.getMountPromise(mountInfo.archivePath, async (mountFs) => await accept(mountFs, mountInfo));
+ }
+ makeCallSync(p, discard, accept, { requireSubpath = true } = {}) {
+ if (typeof p !== `string`)
+ return discard();
+ const normalizedP = this.resolve(p);
+ const mountInfo = this.findMount(normalizedP);
+ if (!mountInfo)
+ return discard();
+ if (requireSubpath && mountInfo.subPath === `/`)
+ return discard();
+ return this.getMountSync(mountInfo.archivePath, (mountFs) => accept(mountFs, mountInfo));
+ }
+ findMount(p) {
+ if (this.filter && !this.filter.test(p))
+ return null;
+ let filePath = ``;
+ while (true) {
+ const pathPartWithArchive = p.substring(filePath.length);
+ const mountPoint = this.getMountPoint(pathPartWithArchive, filePath);
+ if (!mountPoint)
+ return null;
+ filePath = this.pathUtils.join(filePath, mountPoint);
+ if (!this.isMount.has(filePath)) {
+ if (this.notMount.has(filePath))
+ continue;
+ try {
+ if (this.typeCheck !== null && (this.baseFs.lstatSync(filePath).mode & fs.constants.S_IFMT) !== this.typeCheck) {
+ this.notMount.add(filePath);
+ continue;
+ }
+ } catch {
+ return null;
+ }
+ this.isMount.add(filePath);
+ }
+ return {
+ archivePath: filePath,
+ subPath: this.pathUtils.join(PortablePath.root, p.substring(filePath.length))
+ };
+ }
+ }
+ limitOpenFiles(max) {
+ var _a, _b, _c;
+ if (this.mountInstances === null)
+ return;
+ const now = Date.now();
+ let nextExpiresAt = now + this.maxAge;
+ let closeCount = max === null ? 0 : this.mountInstances.size - max;
+ for (const [path, { childFs, expiresAt, refCount }] of this.mountInstances.entries()) {
+ if (refCount !== 0 || ((_a = childFs.hasOpenFileHandles) == null ? void 0 : _a.call(childFs))) {
+ continue;
+ } else if (now >= expiresAt) {
+ (_b = childFs.saveAndClose) == null ? void 0 : _b.call(childFs);
+ this.mountInstances.delete(path);
+ closeCount -= 1;
+ continue;
+ } else if (max === null || closeCount <= 0) {
+ nextExpiresAt = expiresAt;
+ break;
+ }
+ (_c = childFs.saveAndClose) == null ? void 0 : _c.call(childFs);
+ this.mountInstances.delete(path);
+ closeCount -= 1;
+ }
+ if (this.limitOpenFilesTimeout === null && (max === null && this.mountInstances.size > 0 || max !== null) && isFinite(nextExpiresAt)) {
+ this.limitOpenFilesTimeout = setTimeout(() => {
+ this.limitOpenFilesTimeout = null;
+ this.limitOpenFiles(null);
+ }, nextExpiresAt - now).unref();
+ }
+ }
+ async getMountPromise(p, accept) {
+ var _a;
+ if (this.mountInstances) {
+ let cachedMountFs = this.mountInstances.get(p);
+ if (!cachedMountFs) {
+ const createFsInstance = await this.factoryPromise(this.baseFs, p);
+ cachedMountFs = this.mountInstances.get(p);
+ if (!cachedMountFs) {
+ cachedMountFs = {
+ childFs: createFsInstance(),
+ expiresAt: 0,
+ refCount: 0
+ };
+ }
+ }
+ this.mountInstances.delete(p);
+ this.limitOpenFiles(this.maxOpenFiles - 1);
+ this.mountInstances.set(p, cachedMountFs);
+ cachedMountFs.expiresAt = Date.now() + this.maxAge;
+ cachedMountFs.refCount += 1;
+ try {
+ return await accept(cachedMountFs.childFs);
+ } finally {
+ cachedMountFs.refCount -= 1;
+ }
+ } else {
+ const mountFs = (await this.factoryPromise(this.baseFs, p))();
+ try {
+ return await accept(mountFs);
+ } finally {
+ (_a = mountFs.saveAndClose) == null ? void 0 : _a.call(mountFs);
+ }
+ }
+ }
+ getMountSync(p, accept) {
+ var _a;
+ if (this.mountInstances) {
+ let cachedMountFs = this.mountInstances.get(p);
+ if (!cachedMountFs) {
+ cachedMountFs = {
+ childFs: this.factorySync(this.baseFs, p),
+ expiresAt: 0,
+ refCount: 0
+ };
+ }
+ this.mountInstances.delete(p);
+ this.limitOpenFiles(this.maxOpenFiles - 1);
+ this.mountInstances.set(p, cachedMountFs);
+ cachedMountFs.expiresAt = Date.now() + this.maxAge;
+ return accept(cachedMountFs.childFs);
+ } else {
+ const childFs = this.factorySync(this.baseFs, p);
+ try {
+ return accept(childFs);
+ } finally {
+ (_a = childFs.saveAndClose) == null ? void 0 : _a.call(childFs);
+ }
+ }
+ }
+}
+
+class PosixFS extends ProxiedFS {
+ constructor(baseFs) {
+ super(npath);
+ this.baseFs = baseFs;
+ }
+ mapFromBase(path) {
+ return npath.fromPortablePath(path);
+ }
+ mapToBase(path) {
+ return npath.toPortablePath(path);
+ }
+}
+
+const NUMBER_REGEXP = /^[0-9]+$/;
+const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/;
+const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/;
+class VirtualFS extends ProxiedFS {
+ constructor({ baseFs = new NodeFS() } = {}) {
+ super(ppath);
+ this.baseFs = baseFs;
+ }
+ static makeVirtualPath(base, component, to) {
+ if (ppath.basename(base) !== `__virtual__`)
+ throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`);
+ if (!ppath.basename(component).match(VALID_COMPONENT))
+ throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`);
+ const target = ppath.relative(ppath.dirname(base), to);
+ const segments = target.split(`/`);
+ let depth = 0;
+ while (depth < segments.length && segments[depth] === `..`)
+ depth += 1;
+ const finalSegments = segments.slice(depth);
+ const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments);
+ return fullVirtualPath;
+ }
+ static resolveVirtual(p) {
+ const match = p.match(VIRTUAL_REGEXP);
+ if (!match || !match[3] && match[5])
+ return p;
+ const target = ppath.dirname(match[1]);
+ if (!match[3] || !match[4])
+ return target;
+ const isnum = NUMBER_REGEXP.test(match[4]);
+ if (!isnum)
+ return p;
+ const depth = Number(match[4]);
+ const backstep = `../`.repeat(depth);
+ const subpath = match[5] || `.`;
+ return VirtualFS.resolveVirtual(ppath.join(target, backstep, subpath));
+ }
+ getExtractHint(hints) {
+ return this.baseFs.getExtractHint(hints);
+ }
+ getRealPath() {
+ return this.baseFs.getRealPath();
+ }
+ realpathSync(p) {
+ const match = p.match(VIRTUAL_REGEXP);
+ if (!match)
+ return this.baseFs.realpathSync(p);
+ if (!match[5])
+ return p;
+ const realpath = this.baseFs.realpathSync(this.mapToBase(p));
+ return VirtualFS.makeVirtualPath(match[1], match[3], realpath);
+ }
+ async realpathPromise(p) {
+ const match = p.match(VIRTUAL_REGEXP);
+ if (!match)
+ return await this.baseFs.realpathPromise(p);
+ if (!match[5])
+ return p;
+ const realpath = await this.baseFs.realpathPromise(this.mapToBase(p));
+ return VirtualFS.makeVirtualPath(match[1], match[3], realpath);
+ }
+ mapToBase(p) {
+ if (p === ``)
+ return p;
+ if (this.pathUtils.isAbsolute(p))
+ return VirtualFS.resolveVirtual(p);
+ const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot));
+ const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p));
+ return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot;
+ }
+ mapFromBase(p) {
+ return p;
+ }
+}
+
+class NodePathFS extends ProxiedFS {
+ constructor(baseFs) {
+ super(npath);
+ this.baseFs = baseFs;
+ }
+ mapFromBase(path) {
+ return path;
+ }
+ mapToBase(path) {
+ if (typeof path === `string`)
+ return path;
+ if (path instanceof url.URL)
+ return url.fileURLToPath(path);
+ if (Buffer.isBuffer(path)) {
+ const str = path.toString();
+ if (Buffer.byteLength(str) !== path.byteLength)
+ throw new Error(`Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942`);
+ return str;
+ }
+ throw new Error(`Unsupported path type: ${nodeUtils.inspect(path)}`);
+ }
+}
+
+var _a, _b, _c, _d;
+const kBaseFs = Symbol(`kBaseFs`);
+const kFd = Symbol(`kFd`);
+const kClosePromise = Symbol(`kClosePromise`);
+const kCloseResolve = Symbol(`kCloseResolve`);
+const kCloseReject = Symbol(`kCloseReject`);
+const kRefs = Symbol(`kRefs`);
+const kRef = Symbol(`kRef`);
+const kUnref = Symbol(`kUnref`);
+class FileHandle {
+ constructor(fd, baseFs) {
+ this[_a] = 1;
+ this[_b] = void 0;
+ this[_c] = void 0;
+ this[_d] = void 0;
+ this[kBaseFs] = baseFs;
+ this[kFd] = fd;
+ }
+ get fd() {
+ return this[kFd];
+ }
+ async appendFile(data, options) {
+ try {
+ this[kRef](this.appendFile);
+ const encoding = (typeof options === `string` ? options : options == null ? void 0 : options.encoding) ?? void 0;
+ return await this[kBaseFs].appendFilePromise(this.fd, data, encoding ? { encoding } : void 0);
+ } finally {
+ this[kUnref]();
+ }
+ }
+ async chown(uid, gid) {
+ try {
+ this[kRef](this.chown);
+ return await this[kBaseFs].fchownPromise(this.fd, uid, gid);
+ } finally {
+ this[kUnref]();
+ }
+ }
+ async chmod(mode) {
+ try {
+ this[kRef](this.chmod);
+ return await this[kBaseFs].fchmodPromise(this.fd, mode);
+ } finally {
+ this[kUnref]();
+ }
+ }
+ createReadStream(options) {
+ return this[kBaseFs].createReadStream(null, { ...options, fd: this.fd });
+ }
+ createWriteStream(options) {
+ return this[kBaseFs].createWriteStream(null, { ...options, fd: this.fd });
+ }
+ datasync() {
+ throw new Error(`Method not implemented.`);
+ }
+ sync() {
+ throw new Error(`Method not implemented.`);
+ }
+ async read(bufferOrOptions, offset, length, position) {
+ try {
+ this[kRef](this.read);
+ let buffer;
+ if (!Buffer.isBuffer(bufferOrOptions)) {
+ bufferOrOptions ?? (bufferOrOptions = {});
+ buffer = bufferOrOptions.buffer ?? Buffer.alloc(16384);
+ offset = bufferOrOptions.offset || 0;
+ length = bufferOrOptions.length ?? buffer.byteLength;
+ position = bufferOrOptions.position ?? null;
+ } else {
+ buffer = bufferOrOptions;
+ }
+ offset ?? (offset = 0);
+ length ?? (length = 0);
+ if (length === 0) {
+ return {
+ bytesRead: length,
+ buffer
+ };
+ }
+ const bytesRead = await this[kBaseFs].readPromise(this.fd, buffer, offset, length, position);
+ return {
+ bytesRead,
+ buffer
+ };
+ } finally {
+ this[kUnref]();
+ }
+ }
+ async readFile(options) {
+ try {
+ this[kRef](this.readFile);
+ const encoding = (typeof options === `string` ? options : options == null ? void 0 : options.encoding) ?? void 0;
+ return await this[kBaseFs].readFilePromise(this.fd, encoding);
+ } finally {
+ this[kUnref]();
+ }
+ }
+ readLines(options) {
+ return readline.createInterface({
+ input: this.createReadStream(options),
+ crlfDelay: Infinity
+ });
+ }
+ async stat(opts) {
+ try {
+ this[kRef](this.stat);
+ return await this[kBaseFs].fstatPromise(this.fd, opts);
+ } finally {
+ this[kUnref]();
+ }
+ }
+ async truncate(len) {
+ try {
+ this[kRef](this.truncate);
+ return await this[kBaseFs].ftruncatePromise(this.fd, len);
+ } finally {
+ this[kUnref]();
+ }
+ }
+ utimes(atime, mtime) {
+ throw new Error(`Method not implemented.`);
+ }
+ async writeFile(data, options) {
+ try {
+ this[kRef](this.writeFile);
+ const encoding = (typeof options === `string` ? options : options == null ? void 0 : options.encoding) ?? void 0;
+ await this[kBaseFs].writeFilePromise(this.fd, data, encoding);
+ } finally {
+ this[kUnref]();
+ }
+ }
+ async write(...args) {
+ try {
+ this[kRef](this.write);
+ if (ArrayBuffer.isView(args[0])) {
+ const [buffer, offset, length, position] = args;
+ const bytesWritten = await this[kBaseFs].writePromise(this.fd, buffer, offset ?? void 0, length ?? void 0, position ?? void 0);
+ return { bytesWritten, buffer };
+ } else {
+ const [data, position, encoding] = args;
+ const bytesWritten = await this[kBaseFs].writePromise(this.fd, data, position, encoding);
+ return { bytesWritten, buffer: data };
+ }
+ } finally {
+ this[kUnref]();
+ }
+ }
+ async writev(buffers, position) {
+ try {
+ this[kRef](this.writev);
+ let bytesWritten = 0;
+ if (typeof position !== `undefined`) {
+ for (const buffer of buffers) {
+ const writeResult = await this.write(buffer, void 0, void 0, position);
+ bytesWritten += writeResult.bytesWritten;
+ position += writeResult.bytesWritten;
+ }
+ } else {
+ for (const buffer of buffers) {
+ const writeResult = await this.write(buffer);
+ bytesWritten += writeResult.bytesWritten;
+ }
+ }
+ return {
+ buffers,
+ bytesWritten
+ };
+ } finally {
+ this[kUnref]();
+ }
+ }
+ readv(buffers, position) {
+ throw new Error(`Method not implemented.`);
+ }
+ close() {
+ if (this[kFd] === -1)
+ return Promise.resolve();
+ if (this[kClosePromise])
+ return this[kClosePromise];
+ this[kRefs]--;
+ if (this[kRefs] === 0) {
+ const fd = this[kFd];
+ this[kFd] = -1;
+ this[kClosePromise] = this[kBaseFs].closePromise(fd).finally(() => {
+ this[kClosePromise] = void 0;
+ });
+ } else {
+ this[kClosePromise] = new Promise((resolve, reject) => {
+ this[kCloseResolve] = resolve;
+ this[kCloseReject] = reject;
+ }).finally(() => {
+ this[kClosePromise] = void 0;
+ this[kCloseReject] = void 0;
+ this[kCloseResolve] = void 0;
+ });
+ }
+ return this[kClosePromise];
+ }
+ [(_a = kRefs, _b = kClosePromise, _c = kCloseResolve, _d = kCloseReject, kRef)](caller) {
+ if (this[kFd] === -1) {
+ const err = new Error(`file closed`);
+ err.code = `EBADF`;
+ err.syscall = caller.name;
+ throw err;
+ }
+ this[kRefs]++;
+ }
+ [kUnref]() {
+ this[kRefs]--;
+ if (this[kRefs] === 0) {
+ const fd = this[kFd];
+ this[kFd] = -1;
+ this[kBaseFs].closePromise(fd).then(this[kCloseResolve], this[kCloseReject]);
+ }
+ }
+}
+
+const SYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([
+ `accessSync`,
+ `appendFileSync`,
+ `createReadStream`,
+ `createWriteStream`,
+ `chmodSync`,
+ `fchmodSync`,
+ `chownSync`,
+ `fchownSync`,
+ `closeSync`,
+ `copyFileSync`,
+ `linkSync`,
+ `lstatSync`,
+ `fstatSync`,
+ `lutimesSync`,
+ `mkdirSync`,
+ `openSync`,
+ `opendirSync`,
+ `readlinkSync`,
+ `readFileSync`,
+ `readdirSync`,
+ `readlinkSync`,
+ `realpathSync`,
+ `renameSync`,
+ `rmdirSync`,
+ `statSync`,
+ `symlinkSync`,
+ `truncateSync`,
+ `ftruncateSync`,
+ `unlinkSync`,
+ `unwatchFile`,
+ `utimesSync`,
+ `watch`,
+ `watchFile`,
+ `writeFileSync`,
+ `writeSync`
+]);
+const ASYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([
+ `accessPromise`,
+ `appendFilePromise`,
+ `fchmodPromise`,
+ `chmodPromise`,
+ `fchownPromise`,
+ `chownPromise`,
+ `closePromise`,
+ `copyFilePromise`,
+ `linkPromise`,
+ `fstatPromise`,
+ `lstatPromise`,
+ `lutimesPromise`,
+ `mkdirPromise`,
+ `openPromise`,
+ `opendirPromise`,
+ `readdirPromise`,
+ `realpathPromise`,
+ `readFilePromise`,
+ `readdirPromise`,
+ `readlinkPromise`,
+ `renamePromise`,
+ `rmdirPromise`,
+ `statPromise`,
+ `symlinkPromise`,
+ `truncatePromise`,
+ `ftruncatePromise`,
+ `unlinkPromise`,
+ `utimesPromise`,
+ `writeFilePromise`,
+ `writeSync`
+]);
+function patchFs(patchedFs, fakeFs) {
+ fakeFs = new NodePathFS(fakeFs);
+ const setupFn = (target, name, replacement) => {
+ const orig = target[name];
+ target[name] = replacement;
+ if (typeof (orig == null ? void 0 : orig[nodeUtils.promisify.custom]) !== `undefined`) {
+ replacement[nodeUtils.promisify.custom] = orig[nodeUtils.promisify.custom];
+ }
+ };
+ {
+ setupFn(patchedFs, `exists`, (p, ...args) => {
+ const hasCallback = typeof args[args.length - 1] === `function`;
+ const callback = hasCallback ? args.pop() : () => {
+ };
+ process.nextTick(() => {
+ fakeFs.existsPromise(p).then((exists) => {
+ callback(exists);
+ }, () => {
+ callback(false);
+ });
+ });
+ });
+ setupFn(patchedFs, `read`, (...args) => {
+ let [fd, buffer, offset, length, position, callback] = args;
+ if (args.length <= 3) {
+ let options = {};
+ if (args.length < 3) {
+ callback = args[1];
+ } else {
+ options = args[1];
+ callback = args[2];
+ }
+ ({
+ buffer = Buffer.alloc(16384),
+ offset = 0,
+ length = buffer.byteLength,
+ position
+ } = options);
+ }
+ if (offset == null)
+ offset = 0;
+ length |= 0;
+ if (length === 0) {
+ process.nextTick(() => {
+ callback(null, 0, buffer);
+ });
+ return;
+ }
+ if (position == null)
+ position = -1;
+ process.nextTick(() => {
+ fakeFs.readPromise(fd, buffer, offset, length, position).then((bytesRead) => {
+ callback(null, bytesRead, buffer);
+ }, (error) => {
+ callback(error, 0, buffer);
+ });
+ });
+ });
+ for (const fnName of ASYNC_IMPLEMENTATIONS) {
+ const origName = fnName.replace(/Promise$/, ``);
+ if (typeof patchedFs[origName] === `undefined`)
+ continue;
+ const fakeImpl = fakeFs[fnName];
+ if (typeof fakeImpl === `undefined`)
+ continue;
+ const wrapper = (...args) => {
+ const hasCallback = typeof args[args.length - 1] === `function`;
+ const callback = hasCallback ? args.pop() : () => {
+ };
+ process.nextTick(() => {
+ fakeImpl.apply(fakeFs, args).then((result) => {
+ callback(null, result);
+ }, (error) => {
+ callback(error);
+ });
+ });
+ };
+ setupFn(patchedFs, origName, wrapper);
+ }
+ patchedFs.realpath.native = patchedFs.realpath;
+ }
+ {
+ setupFn(patchedFs, `existsSync`, (p) => {
+ try {
+ return fakeFs.existsSync(p);
+ } catch (error) {
+ return false;
+ }
+ });
+ setupFn(patchedFs, `readSync`, (...args) => {
+ let [fd, buffer, offset, length, position] = args;
+ if (args.length <= 3) {
+ const options = args[2] || {};
+ ({ offset = 0, length = buffer.byteLength, position } = options);
+ }
+ if (offset == null)
+ offset = 0;
+ length |= 0;
+ if (length === 0)
+ return 0;
+ if (position == null)
+ position = -1;
+ return fakeFs.readSync(fd, buffer, offset, length, position);
+ });
+ for (const fnName of SYNC_IMPLEMENTATIONS) {
+ const origName = fnName;
+ if (typeof patchedFs[origName] === `undefined`)
+ continue;
+ const fakeImpl = fakeFs[fnName];
+ if (typeof fakeImpl === `undefined`)
+ continue;
+ setupFn(patchedFs, origName, fakeImpl.bind(fakeFs));
+ }
+ patchedFs.realpathSync.native = patchedFs.realpathSync;
+ }
+ {
+ const patchedFsPromises = patchedFs.promises;
+ for (const fnName of ASYNC_IMPLEMENTATIONS) {
+ const origName = fnName.replace(/Promise$/, ``);
+ if (typeof patchedFsPromises[origName] === `undefined`)
+ continue;
+ const fakeImpl = fakeFs[fnName];
+ if (typeof fakeImpl === `undefined`)
+ continue;
+ if (fnName === `open`)
+ continue;
+ setupFn(patchedFsPromises, origName, (pathLike, ...args) => {
+ if (pathLike instanceof FileHandle) {
+ return pathLike[origName].apply(pathLike, args);
+ } else {
+ return fakeImpl.call(fakeFs, pathLike, ...args);
+ }
+ });
+ }
+ setupFn(patchedFsPromises, `open`, async (...args) => {
+ const fd = await fakeFs.openPromise(...args);
+ return new FileHandle(fd, fakeFs);
+ });
+ }
+ {
+ patchedFs.read[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => {
+ const res = fakeFs.readPromise(fd, buffer, ...args);
+ return { bytesRead: await res, buffer };
+ };
+ patchedFs.write[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => {
+ const res = fakeFs.writePromise(fd, buffer, ...args);
+ return { bytesWritten: await res, buffer };
+ };
+ }
+}
+
+let cachedInstance;
+let registeredFactory = () => {
+ throw new Error(`Assertion failed: No libzip instance is available, and no factory was configured`);
+};
+function setFactory(factory) {
+ registeredFactory = factory;
+}
+function getInstance() {
+ if (typeof cachedInstance === `undefined`)
+ cachedInstance = registeredFactory();
+ return cachedInstance;
+}
+
+var libzipSync = {exports: {}};
+
+(function (module, exports) {
+var frozenFs = Object.assign({}, fs__default.default);
+var createModule = function() {
+ var _scriptDir = void 0;
+ if (typeof __filename !== "undefined")
+ _scriptDir = _scriptDir || __filename;
+ return function(createModule2) {
+ createModule2 = createModule2 || {};
+ var Module = typeof createModule2 !== "undefined" ? createModule2 : {};
+ var readyPromiseResolve, readyPromiseReject;
+ Module["ready"] = new Promise(function(resolve, reject) {
+ readyPromiseResolve = resolve;
+ readyPromiseReject = reject;
+ });
+ var moduleOverrides = {};
+ var key;
+ for (key in Module) {
+ if (Module.hasOwnProperty(key)) {
+ moduleOverrides[key] = Module[key];
+ }
+ }
+ var scriptDirectory = "";
+ function locateFile(path) {
+ if (Module["locateFile"]) {
+ return Module["locateFile"](path, scriptDirectory);
+ }
+ return scriptDirectory + path;
+ }
+ var read_, readBinary;
+ var nodeFS;
+ var nodePath;
+ {
+ {
+ scriptDirectory = __dirname + "/";
+ }
+ read_ = function shell_read(filename, binary) {
+ var ret = tryParseAsDataURI(filename);
+ if (ret) {
+ return binary ? ret : ret.toString();
+ }
+ if (!nodeFS)
+ nodeFS = frozenFs;
+ if (!nodePath)
+ nodePath = path__default.default;
+ filename = nodePath["normalize"](filename);
+ return nodeFS["readFileSync"](filename, binary ? null : "utf8");
+ };
+ readBinary = function readBinary2(filename) {
+ var ret = read_(filename, true);
+ if (!ret.buffer) {
+ ret = new Uint8Array(ret);
+ }
+ assert(ret.buffer);
+ return ret;
+ };
+ if (process["argv"].length > 1) {
+ process["argv"][1].replace(/\\/g, "/");
+ }
+ process["argv"].slice(2);
+ Module["inspect"] = function() {
+ return "[Emscripten Module object]";
+ };
+ }
+ Module["print"] || console.log.bind(console);
+ var err = Module["printErr"] || console.warn.bind(console);
+ for (key in moduleOverrides) {
+ if (moduleOverrides.hasOwnProperty(key)) {
+ Module[key] = moduleOverrides[key];
+ }
+ }
+ moduleOverrides = null;
+ if (Module["arguments"])
+ ;
+ if (Module["thisProgram"])
+ ;
+ if (Module["quit"])
+ ;
+ var wasmBinary;
+ if (Module["wasmBinary"])
+ wasmBinary = Module["wasmBinary"];
+ Module["noExitRuntime"] || true;
+ if (typeof WebAssembly !== "object") {
+ abort("no native wasm support detected");
+ }
+ function getValue(ptr, type, noSafe) {
+ type = type || "i8";
+ if (type.charAt(type.length - 1) === "*")
+ type = "i32";
+ switch (type) {
+ case "i1":
+ return HEAP8[ptr >> 0];
+ case "i8":
+ return HEAP8[ptr >> 0];
+ 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_I32((ptr >> 2) * 4);
+ case "float":
+ return LE_HEAP_LOAD_F32((ptr >> 2) * 4);
+ case "double":
+ return LE_HEAP_LOAD_F64((ptr >> 3) * 8);
+ default:
+ abort("invalid type for getValue: " + type);
+ }
+ return null;
+ }
+ var wasmMemory;
+ var ABORT = false;
+ function assert(condition, text) {
+ if (!condition) {
+ abort("Assertion failed: " + text);
+ }
+ }
+ function getCFunc(ident) {
+ var func = Module["_" + ident];
+ assert(
+ func,
+ "Cannot call unknown function " + ident + ", make sure it is exported"
+ );
+ return func;
+ }
+ function ccall(ident, returnType, argTypes, args, opts) {
+ var toC = {
+ string: function(str) {
+ var ret2 = 0;
+ if (str !== null && str !== void 0 && str !== 0) {
+ var len = (str.length << 2) + 1;
+ ret2 = stackAlloc(len);
+ stringToUTF8(str, ret2, len);
+ }
+ return ret2;
+ },
+ array: function(arr) {
+ var ret2 = stackAlloc(arr.length);
+ writeArrayToMemory(arr, ret2);
+ return ret2;
+ }
+ };
+ function convertReturnValue(ret2) {
+ if (returnType === "string")
+ return UTF8ToString(ret2);
+ if (returnType === "boolean")
+ return Boolean(ret2);
+ return ret2;
+ }
+ var func = getCFunc(ident);
+ var cArgs = [];
+ var stack = 0;
+ if (args) {
+ for (var i = 0; i < args.length; i++) {
+ var converter = toC[argTypes[i]];
+ if (converter) {
+ if (stack === 0)
+ stack = stackSave();
+ cArgs[i] = converter(args[i]);
+ } else {
+ cArgs[i] = args[i];
+ }
+ }
+ }
+ var ret = func.apply(null, cArgs);
+ ret = convertReturnValue(ret);
+ if (stack !== 0)
+ stackRestore(stack);
+ return ret;
+ }
+ function cwrap(ident, returnType, argTypes, opts) {
+ argTypes = argTypes || [];
+ var numericArgs = argTypes.every(function(type) {
+ return type === "number";
+ });
+ var numericRet = returnType !== "string";
+ if (numericRet && numericArgs && !opts) {
+ return getCFunc(ident);
+ }
+ return function() {
+ return ccall(ident, returnType, argTypes, arguments);
+ };
+ }
+ var UTF8Decoder = new TextDecoder("utf8");
+ function UTF8ToString(ptr, maxBytesToRead) {
+ if (!ptr)
+ return "";
+ var maxPtr = ptr + maxBytesToRead;
+ for (var end = ptr; !(end >= maxPtr) && HEAPU8[end]; )
+ ++end;
+ return UTF8Decoder.decode(HEAPU8.subarray(ptr, end));
+ }
+ function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {
+ if (!(maxBytesToWrite > 0))
+ return 0;
+ var startIdx = outIdx;
+ var endIdx = outIdx + maxBytesToWrite - 1;
+ for (var i = 0; i < str.length; ++i) {
+ var u = str.charCodeAt(i);
+ if (u >= 55296 && u <= 57343) {
+ var u1 = str.charCodeAt(++i);
+ u = 65536 + ((u & 1023) << 10) | u1 & 1023;
+ }
+ if (u <= 127) {
+ if (outIdx >= endIdx)
+ break;
+ heap[outIdx++] = u;
+ } else if (u <= 2047) {
+ if (outIdx + 1 >= endIdx)
+ break;
+ heap[outIdx++] = 192 | u >> 6;
+ heap[outIdx++] = 128 | u & 63;
+ } else if (u <= 65535) {
+ if (outIdx + 2 >= endIdx)
+ break;
+ heap[outIdx++] = 224 | u >> 12;
+ heap[outIdx++] = 128 | u >> 6 & 63;
+ heap[outIdx++] = 128 | u & 63;
+ } else {
+ if (outIdx + 3 >= endIdx)
+ break;
+ heap[outIdx++] = 240 | u >> 18;
+ heap[outIdx++] = 128 | u >> 12 & 63;
+ heap[outIdx++] = 128 | u >> 6 & 63;
+ heap[outIdx++] = 128 | u & 63;
+ }
+ }
+ heap[outIdx] = 0;
+ return outIdx - startIdx;
+ }
+ function stringToUTF8(str, outPtr, maxBytesToWrite) {
+ return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
+ }
+ function lengthBytesUTF8(str) {
+ var len = 0;
+ for (var i = 0; i < str.length; ++i) {
+ var u = str.charCodeAt(i);
+ if (u >= 55296 && u <= 57343)
+ u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
+ if (u <= 127)
+ ++len;
+ else if (u <= 2047)
+ len += 2;
+ else if (u <= 65535)
+ len += 3;
+ else
+ len += 4;
+ }
+ return len;
+ }
+ function allocateUTF8(str) {
+ var size = lengthBytesUTF8(str) + 1;
+ var ret = _malloc(size);
+ if (ret)
+ stringToUTF8Array(str, HEAP8, ret, size);
+ return ret;
+ }
+ function writeArrayToMemory(array, buffer2) {
+ HEAP8.set(array, buffer2);
+ }
+ function alignUp(x, multiple) {
+ if (x % multiple > 0) {
+ x += multiple - x % multiple;
+ }
+ return x;
+ }
+ var buffer, HEAP8, HEAPU8;
+ var HEAP_DATA_VIEW;
+ function updateGlobalBufferAndViews(buf) {
+ buffer = buf;
+ Module["HEAP_DATA_VIEW"] = HEAP_DATA_VIEW = new DataView(buf);
+ Module["HEAP8"] = HEAP8 = new Int8Array(buf);
+ Module["HEAP16"] = new Int16Array(buf);
+ Module["HEAP32"] = new Int32Array(buf);
+ Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf);
+ Module["HEAPU16"] = new Uint16Array(buf);
+ Module["HEAPU32"] = new Uint32Array(buf);
+ Module["HEAPF32"] = new Float32Array(buf);
+ Module["HEAPF64"] = new Float64Array(buf);
+ }
+ Module["INITIAL_MEMORY"] || 16777216;
+ var wasmTable;
+ var __ATPRERUN__ = [];
+ var __ATINIT__ = [];
+ var __ATPOSTRUN__ = [];
+ function preRun() {
+ if (Module["preRun"]) {
+ if (typeof Module["preRun"] == "function")
+ Module["preRun"] = [Module["preRun"]];
+ while (Module["preRun"].length) {
+ addOnPreRun(Module["preRun"].shift());
+ }
+ }
+ callRuntimeCallbacks(__ATPRERUN__);
+ }
+ function initRuntime() {
+ callRuntimeCallbacks(__ATINIT__);
+ }
+ function postRun() {
+ if (Module["postRun"]) {
+ if (typeof Module["postRun"] == "function")
+ Module["postRun"] = [Module["postRun"]];
+ while (Module["postRun"].length) {
+ addOnPostRun(Module["postRun"].shift());
+ }
+ }
+ callRuntimeCallbacks(__ATPOSTRUN__);
+ }
+ function addOnPreRun(cb) {
+ __ATPRERUN__.unshift(cb);
+ }
+ function addOnInit(cb) {
+ __ATINIT__.unshift(cb);
+ }
+ function addOnPostRun(cb) {
+ __ATPOSTRUN__.unshift(cb);
+ }
+ var runDependencies = 0;
+ var dependenciesFulfilled = null;
+ function addRunDependency(id) {
+ runDependencies++;
+ if (Module["monitorRunDependencies"]) {
+ Module["monitorRunDependencies"](runDependencies);
+ }
+ }
+ function removeRunDependency(id) {
+ runDependencies--;
+ if (Module["monitorRunDependencies"]) {
+ Module["monitorRunDependencies"](runDependencies);
+ }
+ if (runDependencies == 0) {
+ if (dependenciesFulfilled) {
+ var callback = dependenciesFulfilled;
+ dependenciesFulfilled = null;
+ callback();
+ }
+ }
+ }
+ Module["preloadedImages"] = {};
+ Module["preloadedAudios"] = {};
+ function abort(what) {
+ if (Module["onAbort"]) {
+ Module["onAbort"](what);
+ }
+ what += "";
+ err(what);
+ ABORT = true;
+ what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info.";
+ var e = new WebAssembly.RuntimeError(what);
+ readyPromiseReject(e);
+ throw e;
+ }
+ var dataURIPrefix = "data:application/octet-stream;base64,";
+ function isDataURI(filename) {
+ return filename.startsWith(dataURIPrefix);
+ }
+ var wasmBinaryFile = "data:application/octet-stream;base64,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AQsgAEEAOgAAQQAPCyAAKAIEIgNFBEBBAA8LIAAgAjcDECADIAGnaigAAAtVAgF+AX8gAARAAkAgACkDCFANAEIBIQEDQCAAKAIAIAJBBHRqEDogASAAKQMIWg0BIAGnIQIgAUIBfCEBDAALAAsgACgCABAGIAAoAigQECAAEAYLC2QBAn8CQAJAAkAgAEUEQCABpxAIIgNFDQJBGBAIIgJFDQEMAwsgACEDQRgQCCICDQJBAA8LIAMQBgtBAA8LIAJCADcDECACIAE3AwggAiADNgIEIAJBAToAACACIABFOgABIAILnQECAn4BfwJAAkAgAC0AAEUNACAAKQMQIgJCd1YNACACQgh8IgMgACkDCFgNAQsgAEEAOgAADwsgACgCBCIERQRADwsgACADNwMQIAQgAqdqIgAgAUI4iDwAByAAIAFCMIg8AAYgACABQiiIPAAFIAAgAUIgiDwABCAAIAFCGIg8AAMgACABQhCIPAACIAAgAUIIiDwAASAAIAE8AAAL8AICAn8BfgJAIAJFDQAgACACaiIDQQFrIAE6AAAgACABOgAAIAJBA0kNACADQQJrIAE6AAAgACABOgABIANBA2sgAToAACAAIAE6AAIgAkEHSQ0AIANBBGsgAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgA2AgAgAyACIARrQXxxIgJqIgFBBGsgADYCACACQQlJDQAgAyAANgIIIAMgADYCBCABQQhrIAA2AgAgAUEMayAANgIAIAJBGUkNACADIAA2AhggAyAANgIUIAMgADYCECADIAA2AgwgAUEQayAANgIAIAFBFGsgADYCACABQRhrIAA2AgAgAUEcayAANgIAIAIgA0EEcUEYciIBayICQSBJDQAgAK1CgYCAgBB+IQUgASADaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQSBrIgJBH0sNAAsLC28BA38gAEEMaiECAkACfyAAKAIgIgFFBEBBfyEBQRIMAQsgACABQQFrIgM2AiBBACEBIAMNASAAQQBCAEECEA4aIAAoAgAiAEUNASAAEBtBf0oNAUEUCyEAIAIEQCACQQA2AgQgAiAANgIACwsgAQufAQIBfwF+An8CQAJ+IAAoAgAiAygCJEEBRkEA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RQ0AIAQtAAxFDQFBFyEFIAcNAQtBACECIAMgAEEIaiADGyIABEAgAEEANgIEIAAgBTYCAAsLIAILbgEBfyMAQYACayIFJAACQCAEQYDABHENACACIANMDQAgBSABQf8BcSACIANrIgJBgAIgAkGAAkkiARsQGiABRQRAA0AgACAFQYACEC4gAkGAAmsiAkH/AUsNAAsLIAAgBSACEC4LIAVBgAJqJAALUgECf0H0mAEoAgAiASAAQQNqQXxxIgJqIQACQCACQQAgACABTRsNACAAPwBBEHRLBEAgABADRQ0BC0H0mAEgADYCACABDwtB+JsBQTA2AgBBfwuGBQEGfyAAKAIwIgNBhgJrIQYgACgCPCECIAMhAQNAIAAoAkQgAiAAKAJkIgRqayECIAEgBmogBE0EQCAAKAJIIgEgASADaiADEAkaAkAgAyAAKAJoIgFNBEAgACABIANrNgJoDAELIABCADcDaAsgACAAKAJkIANrIgE2AmQgACAAKAJUIANrNgJUIAEgACgCqC1JBEAgACABNgKoLQsgAEHQmAEoAgARBAAgAiADaiECCwJAIAAoAgAiASgCBCIERQ0AIAAoAjwhBSAAIAIgBCACIARJGyICBH8gACgCSCAAKAJkaiAFaiEFIAEgBCACazYCBAJAIAEoAhwoAhRBAkYEQCABIAUgAhBADAELIAUgASgCACACEAkhBCABKAIcKAIUQQFHDQAgASABKAIwIAQgAkHImAEoAgARAAA2AjALIAEgASgCACACajYCACABIAEoAgggAmo2AgggACgCPAUgBQsgAmoiAjYCPAJAIAAoAqgtIgEgAmpBA0kNACAAKAJkIAFrIgEEQCAAIAFBAWtBxJgBKAIAEQEAGiAAKAI8IQILIAAoAqgtIAJBAUZrIgRFDQAgACABIARBwJgBKAIAEQcAIAAgACgCqC0gBGs2AqgtIAAoAjwhAgsgAkGFAksNACAAKAIAKAIERQ0AIAAoAjAhAQwBCwsCQCAAKAJEIgIgACgCQCIDTQ0AIAACfyAAKAI8IAAoAmRqIgEgA0sEQCAAKAJIIAFqQQAgAiABayIDQYICIANBggJJGyIDEBogASADagwBCyABQYICaiIBIANNDQEgACgCSCADakEAIAIgA2siAiABIANrIgMgAiADSRsiAxAaIAAoAkAgA2oLNgJACws3ACAAQn83AxAgAEEANgIIIABCADcDACAAQQA2AjAgAEL/////DzcDKCAAQgA3AxggAEIANwMgC6UBAQF/QdgAEAgiAUUEQEEADwsCQCAABEAgASAAQdgAEAkaDAELIAFCADcDICABQQA2AhggAUL/////DzcDECABQQA7AQwgAUG/hig2AgggAUEBOgAGIAFBADoABCABQgA3A0ggAUGAgNiNeDYCRCABQgA3AyggAUIANwMwIAFCADcDOCABQUBrQQA7AQAgAUIANwNQCyABQQE6AAUgAUEANgIAIAELWAICfgF/AkACQCAALQAARQ0AIAApAxAiAyACrXwiBCADVA0AIAQgACkDCFgNAQsgAEEAOgAADwsgACgCBCIFRQRADwsgACAENwMQIAUgA6dqIAEgAhAJGguWAQECfwJAAkAgAkUEQCABpxAIIgVFDQFBGBAIIgQNAiAFEAYMAQsgAiEFQRgQCCIEDQELIAMEQCADQQA2AgQgA0EONgIAC0EADwsgBEIANwMQIAQgATcDCCAEIAU2AgQgBEEBOgAAIAQgAkU6AAEgACAFIAEgAxBpQQBIBH8gBC0AAQRAIAQoAgQQBgsgBBAGQQAFIAQLC5sCAQN/IAAtAABBIHFFBEACQCABIQMCQCACIAAiASgCECIABH8gAAUCfyABIAEtAEoiAEEBayAAcjoASiABKAIAIgBBCHEEQCABIABBIHI2AgBBfwwBCyABQgA3AgQgASABKAIsIgA2AhwgASAANgIUIAEgACABKAIwajYCEEEACw0BIAEoAhALIAEoAhQiBWtLBEAgASADIAIgASgCJBEAABoMAgsCfyABLABLQX9KBEAgAiEAA0AgAiAAIgRFDQIaIAMgBEEBayIAai0AAEEKRw0ACyABIAMgBCABKAIkEQAAIARJDQIgAyAEaiEDIAEoAhQhBSACIARrDAELIAILIQAgBSADIAAQCRogASABKAIUIABqNgIUCwsLCxAAIAAoAggQBiAAQQA2AggLWQIBfwF+AkACf0EAIABFDQAaIACtIAGtfiIDpyICIAAgAXJBgIAESQ0AGkF/IAIgA0IgiKcbCyICEAgiAEUNACAAQQRrLQAAQQNxRQ0AIABBACACEBoLIAAL8AEBAn9BfyEBAkAgAC0AKA0AIAAoAiRBA0YEQCAAQQxqBEAgAEEANgIQIABB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DwsCQAJAIAAgASACIAMQhwEiBEUNAEEYEAgiAkUEQCADBEAgA0EANgIEIANBDjYCAAsCQCAEKAIoIgBFBEAgBCkDGCEBDAELIABBADYCKCAEKAIoQgA3AyAgBCAEKQMYIgUgBCkDICIBIAEgBVQbIgE3AxgLIAQpAwggAVYEQANAIAQoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAQpAwhUDQALCyAEKAIAEAYgBCgCBBAGIAQQBgwBCyACQQA2AhQgAiAENgIQIAJBABABNgIMIAJBADYCCCACQgA3AgACf0E4EAgiAEUEQCADBEAgA0EANgIEIANBDjYCAAtBAAwBCyAAQQA2AgggAEIANwMAIABCADcDICAAQoCAgIAQNwIsIABBADoAKCAAQQA2AhQgAEIANwIMIABBADsBNCAAIAI2AgggAEEjNgIEIABCPyACQQBCAEEOQSMRDAAiASABQgBTGzcDGCAACyIADQEgAigCECIDBEACQCADKAIoIgBFBEAgAykDGCEBDAELIABBADYCKCADKAIoQgA3AyAgAyADKQMYIgUgAykDICIBIAEgBVQbIgE3AxgLIAMpAwggAVYEQANAIAMoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAMpAwhUDQALCyADKAIAEAYgAygCBBAGIAMQBgsgAhAGC0EAIQALIAALFAAgABBBIAAoAgAQICAAKAIEECALiwwBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQbycASgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RB0JwBakYaIAAoAgwiAyAERw0CQaicAUGonAEoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgNHBEAgACgCCCICQbicASgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAAQRRqIgIoAgAiBA0AIABBEGoiAigCACIEDQBBACEDDAELA0AgAiEHIAQiA0EUaiICKAIAIgQNACADQRBqIQIgAygCECIEDQALIAdBADYCAAsgBkUNAgJAIAAgACgCHCIEQQJ0QdieAWoiAigCAEYEQCACIAM2AgAgAw0BQaycAUGsnAEoAgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAM2AgAg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ACIIQiCIpyEEIAinIQEMAwsgAUEHTQRAIAAgAmpBAWshByABIAJJBEAgA0EEaiEGA0AgByAAa0EBaiIEIAEgASAESxsiBUEITwRAA0AgACADKQAANwAAIANBCGohAyAAQQhqIQAMAAsACyAFQQRJBH8gAwUgACADKAAANgAAIAVBBGshBSAAQQRqIQAgBgshBCAFQQJPBEAgACAELwAAOwAAIAVBAmshBSAEQQJqIQQgAEECaiEACyAFQQFGBEAgACAELQAAOgAAIABBAWohAAsgAiABayICIAFLDQALIAJFDQULAkAgByAAa0EBaiIBIAIgASACSRsiAkEISQ0AIAJBCGsiBEEDdkEBakEHcSIBBEADQCAAIAMpAAA3AAAgAkEIayECIANBCGohAyAAQQhqIQAgAUEBayIBDQALCyAEQThJDQADQCAAIAMpAAA3AAAgACADKQAINwAIIAAgAykAEDcAECAAIAMpABg3ABggACADKQAgNwAgIAAgAykAKDcAKCAAIAMpADA3ADAgACADKQA4NwA4IANBQGshAyAAQUBrIQAgAkFAaiICQQdLDQALCyACQQRPBEAgACADKAAANgAAIAJBBGshAiADQQRqIQMgAEEEaiEACyACQQJPBEAgACADLwAAOwAAIAJBAmshAiADQQJqIQMgAEECaiEACyACQQFHDQQgACADLQAAOgAAIABBAWoPCyAAIAMpAAA3AAAgACACQQFrIgFBB3FBAWoiAmohACABQQhJDQMgAiADaiEDIAFBA3YiAkEBayEEIAJBB3EiAQRAA0AgACADKQAANwAAIAJBAWshAiADQQhqIQMgAEEIaiEAIAFBAWsiAQ0ACwsgBEEHSQ0DA0AgACADKQAANwAAIAAgAykACDcACCAAIAMpABA3ABAgACADKQAYNwAYIAAgAykAIDcAICAAIAMpACg3ACggACADKQAwNwAwIAAgAykAODcAOCADQUBrIQMgAEFAayEAIAJBCGsiAg0ACwwDCyADLQAAQYGChAhsCyIBIQQLIAJBB3EhBgJAIAJBeHEiAkUNACABrSAErUIghoQhCCACQQhrIgRBA3ZBAWpBB3EiAQRAA0AgACAINwAAIAJBCGshAiAAQQhqIQAgAUEBayIBDQALCyAEQThJDQADQCAAIAg3ADggACAINwAwIAAgCDcAKCAAIAg3ACAgACAINwAYIAAgCDcAECAAIAg3AAggACAINwAAIABBQGshACACQUBqIgINAAsLIAZFDQAgACADIAYQCSAGaiEACyAADwsgACADLQABOgABIAJBAkYEQCAAQQJqDwsgACADLQACOgACIAJBA0YEQCAAQQNqDwsgACADLQADOgADIAJBBEYEQCAAQQRqDwsgACADLQAEOgAEIAJBBUYEQCAAQQVqDwsgACADLQAFOgAFIAJBBkYEQCAAQQZqDwsgACADLQAGOgAGIABBB2oLAwABC2wBA38CQCABKAIAIgNBB0sNACADIAIoAgBPDQAgACADayEEA0AgACAEKQAANwAAIAIgAigCACABKAIAIgVrNgIAIAEgASgCAEEBdCIDNgIAIAAgBWohACADQQdLDQEgAyACKAIASQ0ACwsgAAu8AgEBfwJAIAMgAGtBAWoiAyACIAIgA0sbIgJBCEkNACACQQhrIgRBA3ZBAWpBB3EiAwRAA0AgACABKQAANwAAIAJBCGshAiABQQhqIQEgAEEIaiEAIANBAWsiAw0ACwsgBEE4SQ0AA0AgACABKQAANwAAIAAgASkACDcACCAAIAEpABA3ABAgACABKQAYNwAYIAAgASkAIDcAICAAIAEpACg3ACggACABKQAwNwAwIAAgASkAODcAOCABQUBrIQEgAEFAayEAIAJBQGoiAkEHSw0ACwsgAkEETwRAIAAgASgAADYAACACQQRrIQIgAUEEaiEBIABBBGohAAsgAkECTwRAIAAgAS8AADsAACACQQJrIQIgAUECaiEBIABBAmohAAsgAkEBRgR/IAAgAS0AADoAACAAQQFqBSAACwvnAQECfyAAIAEpAAA3AAAgACACQQFrIgJBB3FBAWoiA2ohAAJAIAJBCEkNACABIANqIQEgAkEDdiICQQFrIQQgAkEHcSIDBEADQCAAIAEpAAA3AAAgAkEBayECIAFBCGohASAAQQhqIQAgA0EBayIDDQALCyAEQQdJDQADQCAAIAEpAAA3AAAgACABKQAINwAIIAAgASkAEDcAECAAIAEpABg3ABggACABKQAgNwAgIAAgASkAKDcAKCAAIAEpADA3ADAgACABKQA4NwA4IAFBQGshASAAQUBrIQAgAkEIayICDQALCyAAC/wFAQR/IABB//8DcSEDIABBEHYhBEEBIQAgAkEB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ADYCBCACQQ42AgALDAELIANBARB0IAMgARBmEBIgAyAFIAQoAgwQLAJ/IAMtAABFBEAgAgRAIAJBADYCBCACQRQ2AgALQQAMAQsgACADLQAABH4gAykDEAVCAAunQf//A3EgAygCBBBICyEGIAMQBwsgBEEQaiQAIAYL4AECAn8BfkEwEAgiAkUEQCABBEAgAUEANgIEIAFBDjYCAAtBAA8LIAJCADcDCCACQQA2AgAgAkIANwMQIAJCADcDGCACQgA3AyAgAkIANwAlIABQBEAgAg8LAkAgAEL/////AFYNACAAp0EEdBAIIgNFDQAgAiADNgIAQQAhAUIBIQQDQCADIAFBBHRqIgFCADcCACABQgA3AAUgACAEUgRAIASnIQEgBEIBfCEEDAELCyACIAA3AwggAiAANwMQIAIPCyABBEAgAUEANgIEIAFBDjYCAAtBABAQIAIQBkEAC+4BAgN/AX4jAEEQayIEJAACQCAEQQxqQgQQGCIDRQRAQX8hAgwBCwJAIAEEQCACQYAGcSEFA0ACQCAFIAEoAgRxRQ0AAkAgAykDCEIAVARAIANBADoAAAwBCyADQgA3AxAgA0EBOgAACyADIAEvAQgQDSADIAEvAQoQDSADLQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALQX8hAgwEC0F/IQIgACAEQQxqQgQQHEEASA0DIAEzAQoiBlANACAAIAEoAgwgBhAcQQBIDQMLIAEoAgAiAQ0ACwtBACECCyADEAcLIARBEGokACACCzwBAX8gAARAIAFBgAZxIQEDQCABIAAoAgRxBEAgAiAALwEKakEEaiECCyAAKAIAIgANAAsLIAJB//8DcQucAQEDfyAARQRAQQAPCyAAIQMDQAJ/AkACQCAALwEIIgFB9OABTQRAIAFBAUYNASABQfXGAUYNAQwCCyABQYGyAkYNACABQfXgAUcNAQsgACgCACEBIABBADYCACAAKAIMEAYgABAGIAEgAyAAIANGGyEDAkAgAkUEQEEAIQIMAQsgAiABNgIACyABDAELIAAiAigCAAsiAA0ACyADC7IEAgV/AX4CQAJAAkAgACABrRAYIgEEQCABLQAADQFBACEADAILIAQEQCAEQQA2AgQgBEEONgIAC0EADwtBACEAA0AgAS0AAAR+IAEpAwggASkDEH0FQgALQgRUDQEgARALIQcgASABEAsiBq0QEyIIRQRAQQAhAiAEBEAgBEEANgIEIARBFTYCAAsgARAHIABFDQMDQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsMAwsCQAJAQRAQCCIFBEAgBSAGOwEKIAUgBzsBCCAFIAI2AgQgBUEANgIAIAZFDQEgBSAIIAYQZyIGNgIMIAYNAiAFEAYLQQAhAiAEBEAgBEEANgIEIARBDjYCAAsgARAHIABFDQQDQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsMBAsgBUEANgIMCwJAIABFBEAgBSEADAELIAkgBTYCAAsgBSEJIAEtAAANAAsLAkAgAS0AAAR/IAEpAxAgASkDCFEFQQALDQAgASABLQAABH4gASkDCCABKQMQfQVCAAsiCkL/////D4MQEyECAkAgCqciBUEDSw0AIAJFDQAgAkHBFCAFEDxFDQELQQAhAiAEBEAgBEEANgIEIARBFTYCAAsgARAHIABFDQEDQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsMAQsgARAHIAMEQCADIAA2AgBBAQ8LQQEhAiAARQ0AA0AgACgCACEBIAAoAgwQBiAAEAYgASIADQALCyACC74BAQV/IAAEfyAAIQIDQCACIgQoAgAiAg0ACyABBEADQCABIgMvAQghBiADKAIAIQEgACECAkACQANAAkAgAi8BCCAGRw0AIAIvAQoiBSADLwEKRw0AIAVFDQIgAigCDCADKAIMIAUQPEUNAgsgAigCACICDQALIANBADYCACAEIAM2AgAgAyEEDAELIAIgAigCBCADKAIEQYAGcXI2AgQgA0EANgIAIAMoAgwQBiADEAYLIAENAAsLIAAFIAELC1UCAn4BfwJAAkAgAC0AAEUNACAAKQMQIgJCAXwiAyACVA0AIAMgACkDCFgNAQsgAEEAOgAADwsgACgCBCIERQRADwsgACADNwMQIAQgAqdqIAE6AAALWgICfgF/An8CQAJAIAAtAABFDQAgACkDECIBQgF8IgIgAVQNACACIAApAwhYDQELIABBADoAAEEADAELQQAgACgCBCIDRQ0AGiAAIAI3AxAgAyABp2otAAALC94BAQN/IAEgACkDMFoEQCAAQQhqBEAgAEEANgIMIABBEjYCCAtBfw8LIABBCGohAiAALQAYQQJxBEAg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DAELIAFBGU4EQCAAIAAoAhAiAUEBajYCECABIAAoAgRqIAApA7gtIgI8AAAgACAAKAIQIgFBAWo2AhAgASAAKAIEaiACQgiIPAAAIAAgACgCECIBQQFqNgIQIAEgACgCBGogAkIQiDwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAJCGIg8AAAgACAAQbwtajUCADcDuC0gACAAKALALUEgayIBNgLALQsgAUEJTgRAIAAgACgCECIBQQFqNgIQIAEgACgCBGogACkDuC0iAjwAACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAJCCIg8AAAgACAAKQO4LUIQiDcDuC0gACAAKALALUEQayIBNgLALQsgAUEBSA0AIAAgACgCECIBQQFqNgIQIAEgACgCBGogACkDuC08AAALIABBADYCwC0gAEIANwO4LQvwBAEDfyAAQYgBaiECA0AgAiABQQJ0IgNqQQA7AQAgAiADQQRyakEAOwEAIAFBAmoiAUGeAkcNAAsgAEEAOwHwFCAAQQA7AfwSIABBuBVqQQA7AQAgAEG0FWpBADsBACAAQbAVakEAOwEAIABBrBVqQQA7AQAgAEGoFWpBADsBACAAQaQVakEAOwEAIABBoBVqQQA7AQAgAEGcFWpBADsBACAAQZgVakEAOwEAIABBlBVqQQA7AQAgAEGQFWpBADsBACAAQYwVakEAOwEAIABBiBVqQQA7AQAgAEGEFWpBADsBACAAQYAVakEAOwEAIABB/BRqQQA7AQAgAEH4FGpBADsBACAAQfQUakEAOwEAIABB8BNqQQA7AQAgAEHsE2pBADsBACAAQegTakEAOwEAIABB5BNqQQA7AQAgAEHgE2pBADsBACAAQdwTakEAOwEAIABB2BNqQQA7AQAgAEHUE2pBADsBACAAQdATakEAOwEAIABBzBNqQQA7AQAgAEHIE2pBADsBACAAQcQTakEAOwEAIABBwBNqQQA7AQAgAEG8E2pBADsBACAAQbgTakEAOwEAIABBtBNqQQA7AQAgAEGwE2pBADsBACAAQawTakEAOwEAIABBqBNqQQA7AQAgAEGkE2pBADsBACAAQaATakEAOwEAIABBnBNqQQA7AQAgAEGYE2pBADsBACAAQZQTakEAOwEAIABBkBNqQQA7AQAgAEGME2pBADsBACAAQYgTakEAOwEA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AAwFCyABLQAPDQQgASgCrEAgASgCqEAoAggRAgCsIQUMBAsgA0IIWgR+IAIgASgCADYCACACIAEoAgQ2AgRCCAVCfwshBQwDCyABRQ0CIAEoAqxAIAEoAqhAKAIEEQQAIAEQLyABEAYMAgsgB0F/NgIAQRAgBxAkQj+EIQUMAQsgAQRAIAFBADYCBCABQRQ2AgALQn8hBQsgB0EQaiQAIAULYwBByAAQCCIARQRAQfibASgCACEBIAIEQCACIAE2AgQgAkEBNgIACyAADwsgAEEAOgAMIABBADoABCAAIAI2AgAgAEEANgI4IABCADcDMCAAIAFBCSABQQFrQQlJGzYCCCAAC0gBAX8gAEIANwIEIAAgATYCAAJAIAFBAEgNAEGwEygCACABTA0AIAFBAnRBwBNqKAIAQQFHDQBB+JsBKAIAIQILIAAgAjYCBAvuhwECJH8BfiACKQMAIScgACABNgIcIAAgJ0L/////DyAnQv////8PVBs+AiAgAEEQaiEKAn8gAC0ABARAAn8gAC0ADEECdCENQX4hAQJAAkACQCAKRQ0AIAooAiBFDQAgCigCJEUNACAKKAIcIgNFDQAgAygCACAKRw0AAkACQCADKAIgIgVBOWsOOQECAgICAgICAgICAgECAgIBAgICAgICAgICAgICAgICAgIBAgICAgICAgICAgIBAgICAgICAgICAQALIAVBmgVGDQAgBUEqRw0BCyANQQVLDQACQAJAIAooAgxFDQAgCigCBCIEBEAgCigCAEUNAQsgBUGaBUcNASANQQRGDQELIApBkPEAKAIANgIYQX4MBAsgCigCEEUNASADKAIkIQEgAyANNgIkAkAgAygCEARAIAMQFAJAIAooAhAiBSADKAIQIgkgBSAJSRsiAUUNACAKKAIMIAMoAgggARAJGiAKIAooAgwgAWo2AgwgAyADKAIIIAFqNgIIIAogCigCFCABajYCFCAKIAooAhAgAWsiBTYCECADIAMoAhAgAWsiCTYCECAJDQAgAyADKAIENgIIQQAhCQsgBQRAIAMoAiAhBQwCCwwECyAEDQAgDUEBdEF3QQAgDUEESxtqIAFBAXRBd0EAIAFBBEobakoNACANQQRGDQAMAgsCQAJAAkACQAJAIAVBKkcEQCAFQZoFRw0BIAooAgRFDQMMBwsgAygCFEUEQCADQfEANgIgDAILIAMoAjRBDHRBgPABayEBAkAgAygCfEECTg0AIAMoAngiBEEBTA0AIARBBUwEQCABQcAAciEBDAELQYABQcABIARBBkYbIAFyIQELIAMgCUEBajYCECADKAIEIAlqIAFBIHIgASADKAJkGyIBQQh2OgAAIAMgAygCECIEQQFqNgIQIAQgAygCBGogAUEfcCABckEfczoAACADKAJkBEAgAyAKKAIwEF0LIApBATYCMCADQfEANgIgIAoQDCADKAIQDQcgAygCICEFCwJAAkACQAJAIAVBOUYEfyADKAIAQQA2AjAgAyADKAIQIgFBAWo2AhAgASADKAIEakEfOgAAIAMgAygCECIBQQFqNgIQIAEgAygCBGpBiwE6AAAgAyADKAIQIgFBAWo2AhAgASADKAIEakEIOgAAAkAgAygCHCIBRQRAIANBABA0IAMgAygCECIBQQFqNgIQIAEgAygCBGpBADoAAEECIQEgAygCeCIEQQlHBEBBBCAEQQJIQQJ0IAMoAnxBAUobIQELIAMgAygCECIEQQFqNgIQIAQgAygCBGogAToAACADIAMoAhAiAUEBajYCECABIAMoAgRqQQM6AAAgA0HxADYCICAKEAwgAygCEEUNAQwNCyABKAIkIQQgASgCHCEFIAEoAhAhByABKAIsIQkgASgCACELIAMgAygCECIIQQFqNgIQQQIhASAIIAMoAgRqIAlBAEdBAXQgC0EAR3IgB0EAR0ECdHIgBUEAR0EDdHIgBEEAR0EEdHI6AAAgAyADKAIcKAIEEDQgAygCeCIEQQlHBEBBBCAEQQJIQQJ0IAMoAnxBAUobIQELIAMgAygCECIEQQFqNgIQIAQgAygCBGogAToAACADKAIcKAIMIQEgAyADKAIQIgRBAWo2AhAgBCADKAIEaiABOgAAIAMoAhwiASgCEAR/IAEoAhQhASADIAMoAhAiBEEBajYCECAEIAMoAgRqIAE6AAAgAyADKAIQIgRBAWo2AhAgBCADKAIEaiABQQh2OgAAIAMoAhwFIAELKAIsBEAgCgJ/IAooAjAhASADKAIQIQRBACADKAIEIgVFDQAaIAEgBSAErUHMmAEoAgARAwALNgIwCyADQcUANgIgIANBADYCGAwCCyADKAIgBSAFC0HFAGsOIwAEBAQBBAQEBAQEBAQEBAQEBAQEBAQCBAQEBAQEBAQEBAQDBAsgAygCHCIEKAIQIgUEQCADKAIMIgkgAygCECIBIAQvARQgAygCGCIHayIEakkEQANAIAMoAgQgAWogBSAHaiAJIAFrIgkQCRogAyADKAIMIgU2AhACQCADKAIcKAIsRQ0AIAEgBU8NACAKAn8gCigCMCEHQQAgAygCBCABaiILRQ0AGiAHIAsgBSABa61BzJgBKAIAEQMACzYCMAsgAyADKAIYIAlqNgIYIAooAhwiARAUAkAgCigCECIFIAEoAhAiByAFIAdJGyIFRQ0AIAooAgwgASgCCCAFEAkaIAogCigCDCAFajYCDCABIAEoAgggBWo2AgggCiAKKAIUIAVqNgIUIAogCigCECAFazYCECABIAEoAhAgBWsiBTYCECAFDQAgASABKAIENgIICyADKAIQDQwgAygCGCEHIAMoAhwoAhAhBUEAIQEgBCAJayIEIAMoAgwiCUsNAAsLIAMoAgQgAWogBSAHaiAEEAkaIAMgAygCECAEaiIENgIQAkAgAygCHCgCLEUNACABIARPDQAgCgJ/IAooAjAhBUEAIAMoAgQgAWoiB0UNABogBSAHIAQgAWutQcyYASgCABEDAAs2AjALIANBADYCGAsgA0HJADYCIAsgAygCHCgCHARAIAMoAhAiASEEA0ACQCABIAMoAgxHDQACQCADKAIcKAIsRQ0AIAEgBE0NACAKAn8gCigCMCEFQQAgAygCBCAEaiIHRQ0AGiAFIAcgASAEa61BzJgBKAIAEQMACzYCMAsgCigCHCIBEBQCQCAKKAIQIgQgASgCECIFIAQgBUkbIgRFDQAgCigCDCABKAIIIAQQCRogCiAKKAIMIARqNgIMIAEgASgCCCAEajYCCCAKIAooAhQgBGo2AhQgCiAKKAIQIARrNgIQIAEgASgCECAEayIENgIQIAQNACABIAEoAgQ2AggLQQAhAUEAIQQgAygCEEUNAAwLCyADKAIcKAIcIQUgAyADKAIYIgdBAWo2AhggBSAHai0AACEFIAMgAUEBajYCECADKAIEIAFqIAU6AAAgBQRAIAMoAhAhAQwBCwsCQCADKAIcKAIsRQ0AIAMoAhAiASAETQ0AIAoCfyAKKAIwIQVBACADKAIEIARqIgdFDQAaIAUgByABIARrrUHMmAEoAgARAwALNgIwCyADQQA2AhgLIANB2wA2AiALAkAgAygCHCgCJEUNACADKAIQIgEhBANAAkAgASADKAIMRw0AAkAgAygCHCgCLEUNACABIARNDQAgCgJ/IAooAjAhBUEAIAMoAgQgBGoiB0UNABogBSAHIAEgBGutQcyYASgCABEDAAs2AjALIAooAhwiARAUAkAgCigCECIEIAEoAhAiBSAEIAVJGyIERQ0AIAooAgwgASgCCCAEEAkaIAogCigCDCAEajYCDCABIAEoAgggBGo2AgggCiAKKAIUIARqNgIUIAogCigCECAEazYCECABIAEoAhAgBGsiBDYCECAEDQAgASABKAIENgIIC0EAIQFBACEEIAMoAhBFDQAMCgsgAygCHCgCJCEFIAMgAygCGCIHQQFqNgIYIAUgB2otAAAhBSADIAFBAWo2AhAgAygCBCABaiAFOgAAIAUEQCADKAIQIQEMAQsLIAMoAhwoAixFDQAgAygCECIBIARNDQAgCgJ/IAooAjAhBUEAIAMoAgQgBGoiB0UNABogBSAHIAEgBGutQcyYASgCABEDAAs2AjALIANB5wA2AiALAkAgAygCHCgCLARAIAMoAgwgAygCECIBQQJqSQRAIAoQDCADKAIQDQJBACEBCyAKKAIwIQQgAyABQQFqNgIQIAMoAgQgAWogBDoAACADIAMoAhAiAUEBajYCECABIAMoAgRqIARBCHY6AAAgAygCAEEANgIwCyADQfEANgIgIAoQDCADKAIQRQ0BDAcLDAYLIAooAgQNAQsgAygCPA0AIA1FDQEgAygCIEGaBUYNAQsCfyADKAJ4IgFFBEAgAyANEFwMAQsCQAJAAkAgAygCfEECaw4CAAECCwJ/AkADQAJAIAMoAjwNACADECkgAygCPA0AIA0NAkEADAMLIAMoAkggAygCZGotAAAhASADIAMoApQtIgRBAWo2ApQtIAQgAygCkC1qQQA6AAAgAyADKAKULSIEQQFqNgKULSAEIAMoApAtakEAOgAAIAMgAygClC0iBEEBajYClC0gBCADKAKQLWogAToAACADIAFBAnRqIgEgAS8BiAFBAWo7AYgBIAMgAygCPEEBazYCPCADIAMoAmRBAWoiBDYCZCADKAKULSADKAKYLUcNACADIAMoAlQiAUEATgR/IAMoAkggAWoFQQALIAQgAWtBABAPIAMgAygCZDYCVCADKAIAIgEoAhwiBBAUAkAgASgCECIFIAQoAhAiByAFIAdJGyIFRQ0AIAEoAgwgBCgCCCAFEAkaIAEgASgCDCAFajYCDCAEIAQoAgggBWo2AgggASABKAIUIAVqNgIUIAEgASgCECAFazYCECAEIAQoAhAgBWsiATYCECABDQAgBCAEKAIENgIICyADKAIAKAIQDQALQQAMAQsgA0EANgKoLSANQQRGBEAgAyADKAJUIgFBAE4EfyADKAJIIAFqBUEACyADKAJkIAFrQQEQDyADIAMoAmQ2AlQgAygCACIBKAIcIgQQFAJAIAEoAhAiBSAEKAIQIgcgBSAHSRsiBUUNACABKAIMIAQoAgggBRAJGiABIAEoAgwgBWo2AgwgBCAEKAIIIAVqNgIIIAEgASgCFCAFajYCFCABIAEoAhAgBWs2AhAgBCAEKAIQIAVrIgE2AhAgAQ0AIAQgBCgCBDYCCAtBA0ECIAMoAgAoAhAbDAELAkAgAygClC1FDQAgAyADKAJUIgFBAE4EfyADKAJIIAFqBUEACyADKAJkIAFrQQAQDyADIAMoAmQ2AlQgAygCACIBKAIcIgQQFAJAIAEoAhAiBSAEKAIQIgcgBSAHSRsiBUUNACABKAIMIAQoAgggBRAJGiABIAEoAgwgBWo2AgwgBCAEKAIIIAVqNgIIIAEgASgCFCAFajYCFCABIAEoAhAgBWs2AhAgBCAEKAIQIAVrIgE2AhAgAQ0AIAQgBCgCBDYCCAsgAygCACgCEA0AQQAMAQtBAQsMAgsCfwJAA0ACQAJAAkACQCADKAI8IghBggJLDQAgAxApAkAgAygCPCIIQYICSw0AIA0NAEEADAcLIAhFDQUgCEECSw0AIAMoAmQhCwwBCyADKAJkIgtFBEBBACELDAELIAMoAkggC2oiDEEBayIBLQAAIgkgDC0AAEcNACAJIAEtAAJHDQAgCSABLQADRw0AIAxBggJqIQ5BfyEBAkACQAJAAkACQAJAA0AgASAMaiIFLQAEIAlGBEAgCSAFLQAFRw0CIAkgBS0ABkcNAyAJIAUtAAdHDQQgCSAMIAFBCGoiBGoiBy0AAEcNByAJIAUtAAlHDQUgCSAFLQAKRw0GIAkgBUELaiIHLQAARw0HIAFB9wFIIQUgBCEBIAUNAQwHCwsgBUEEaiEHDAULIAVBBWohBwwECyAFQQZqIQcMAwsgBUEHaiEHDAILIAVBCWohBwwBCyAFQQpqIQcLIAggByAOa0GCAmoiASABIAhLGyIBQQJLDQELIAMoAkggC2otAAAhASADIAMoApQtIgRBAWo2ApQtIAQgAygCkC1qQQA6AAAgAyADKAKULSIEQQFqNgKULSAEIAMoApAtakEAOgAAIAMgAygClC0iBEEBajYClC0gBCADKAKQLWogAToAACADIAFBAnRqIgEgAS8BiAFBAWo7AYgBIAMgAygCPEEBazYCPCADIAMoAmRBAWoiCzYCZAwBCyADIAMoApQtIgRBAWo2ApQtIAQgAygCkC1qQQE6AAAgAyADKAKULSIEQQFqNgKULSAEIAMoApAtakEAOgAAIAMgAygClC0iBEEBajYClC0gBCADKAKQLWogAUEDazoAACADIAMoAqQtQQFqNgKkLSABQc3pAGotAABBAnQgA2pBjAlqIgQgBC8BAEEBajsBACADQdDlAC0AAEECdGpB/BJqIgQgBC8BAEEBajsBACADIAMoAjwgAWs2AjwgAyADKAJkIAFqIgs2AmQLIAMoApQtIAMoApgtRw0AIAMgAygCVCIBQQBOBH8gAygCSCABagVBAAsgCyABa0EAEA8gAyADKAJkNgJUIAMoAgAiASgCHCIEEBQCQCABKAIQIgUgBCgCECIHIAUgB0kbIgVFDQAgASgCDCAEKAIIIAUQCRogASABKAIMIAVqNgIMIAQgBCgCCCAFajYCCCABIAEoAhQgBWo2AhQgASABKAIQIAVrNgIQIAQgBCgCECAFayIBNgIQIAENACAEIAQoAgQ2AggLIAMoAgAoAhANAAtBAAwBCyADQQA2AqgtIA1BBEYEQCADIAMoAlQiAUEATgR/IAMoAkggAWoFQQALIAMoAmQgAWtBARAPIAMgAygCZDYCVCADKAIAIgEoAhwiBBAUAkAgASgCECIFIAQoAhAiByAFIAdJGyIFRQ0AIAEoAgwgBCgCCCAFEAkaIAEgASgCDCAFajYCDCAEIAQoAgggBWo2AgggASABKAIUIAVqNgIUIAEgASgCECAFazYCECAEIAQoAhAgBWsiATYCECABDQAgBCAEKAIENgIIC0EDQQIgAygCACgCEBsMAQsCQCADKAKULUUNACADIAMoAlQiAUEATgR/IAMoAkggAWoFQQALIAMoAmQgAWtB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ASABKAIodCIFIAEoAtA3akEBIAMoAiARAAAiAzYCOCADRQ0CIAMgBWpBACABKALQNxAaCyABKAIsIgVFBEAgAUIANwIwIAFBASABKAIodCIFNgIsCyAWIA5rIgMgBU8EQCABKAI4IBEgBWsgBRAJGiABQQA2AjQgASABKAIsNgIwDAELIAEoAjQiDSABKAI4aiARIANrIAMgBSANayIFIAMgBUkbIgUQCRogAyAFayIDBEAgASgCOCARIANrIAMQCRogASADNgI0IAEgASgCLDYCMAwBCyABQQAgASgCNCAFaiIDIAMgASgCLCINRhs2AjQgASgCMCIDIA1PDQAgASADIAVqNgIwCyAKIB8gCigCBGsiBSAKKAIIajYCCCAKIBYgCigCEGsiASAKKAIUajYCFCAGIAYoAiAgAWo2AiACQCAGLQAMQQRxRQ0AIAFFDQAgBgJ/IAYoAhQEQAJ/IAYoAhwhA0EAIAooAgwgAWsiDUUNABogAyANIAGtQcyYASgCABEDAAsMAQsgBigCHCAKKAIMIAFrIAFByJgBKAIAEQAACyIDNgIcIAogAzYCMAsgCiAGKAJAIAYoAghBAEdBBnRqIAYoAgQiA0G//gBGQQd0akGAAiADQcL+AEZBCHQgA0HH/gBGG2o2AiwgBCAEQXsgBBsgASAFchshFwwCCyAGQdL+ADYCBAtBfCEXCyAUQRBqJAAgFwshASACIAIpAwAgADUCIH03AwACQAJAAkACQCABQQVqDgcBAgICAgMAAgtBAQ8LIAAoAhQNAEEDDwsgACgCACIABEAgACABNgIEIABBDTYCAAtBAiEBCyABCwkAIABBAToADAtEAAJAIAJC/////w9YBEAgACgCFEUNAQsgACgCACIABEAgAEEANgIEIABBEjYCAAtBAA8LIAAgATYCECAAIAI+AhRBAQu6AQEEfyAAQRBqIQECfyAALQAEBEAgARBeDAELQX4hAwJAIAFFDQAgASgCIEUNACABKAIkIgRFDQAgASgCHCICRQ0AIAIoAgAgAUcNACACKAIEQbT+AGtBH0sNACACKAI4IgMEQCABKAIoIAMgBBEGACABKAIkIQQgASgCHCECCyABKAIoIAIgBBEGAEEAIQMgAUEANgIcCyADCyIBBEAgACgCACIABEAgACABNgIEIABBDTYCAAsLIAFFC5gMAQZ/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IAEQBiAABEAgAEEANgIEIABBDjYCAAsLIABBADYCFAwUCyADQgA3AwAgACABNgIUIAFBQGtCADcDACABQgA3AzgMFAsCQAJAIAJQBEBByAAQCCIDRQ0UIANCADcDACADQgA3AzAgA0EANgIoIANCADcDICADQgA3AxggA0IANwMQIANCADcDCCADQgA3AzggA0EIEAgiATYCBCABDQEgAxAGIAAEQCAAQQA2AgQgAEEONgIACwwUCyACIAAoAhAiASkDMFYEQCAABEAgAEEANgIEIABBEjYCAAsMFAsgASgCKARAIAAEQCAAQQA2AgQgAEEdNgIACwwUCyABKAIEIQMCQCABKQMIIgZCAX0iB1ANAANAAkAgAiADIAcgBH1CAYggBHwiBadBA3RqKQMAVARAIAVCAX0hBwwBCyAFIAZRBEAgBiEFDAMLIAMgBUIBfCIEp0EDdGopAwAgAlYNAgsgBCEFIAQgB1QNAAsLAkAgAiADIAWnIgpBA3RqKQMAfSIEUEUEQCABKAIAIgMgCkEEdGopAwghBwwBCyABKAIAIgMgBUIBfSIFp0EEdGopAwgiByEECyACIAcgBH1UBEAgAARAIABBADYCBCAAQRw2AgALDBQLIAMgBUIBfCIFQQAgABCHASIDRQ0TIAMoAgAgAygCCCIKQQR0akEIayAENwMAIAMoAgQgCkEDdGogAjcDACADIAI3AzAgAyABKQMYIgYgAykDCCIEQgF9IgcgBiAHVBs3AxggASADNgIoIAMgATYCKCABIAQ3AyAgAyAFNwMgDAELIAFCADcDAAsgACADNgIUIAMgBDcDQCADIAI3AzhCACEEDBMLIAAoAhAiAQRAAkAgASgCKCIDRQRAIAEpAxghAgwBCyADQQA2AiggASgCKEIANwMgIAEgASkDGCICIAEpAyAiBSACIAVWGyICNwMYCyABKQMIIAJWBEADQCABKAIAIAKnQQR0aigCABAGIAJCAXwiAiABKQMIVA0ACwsgASgCABAGIAEoAgQQBiABEAYLIAAoAhQhASAAQQA2AhQgACABNgIQDBILIAJCCFoEfiABIAAoAgA2AgAgASAAKAIENgIEQggFQn8LIQQMEQsgACgCECIBBEACQCABKAIoIgNFBEAgASkDGCECDAELIANBADYCKCABKAIoQgA3AyAgASABKQMYIgIgASkDICIFIAIgBVYbIgI3AxgLIAEpAwggAlYEQANAIAEoAgAgAqdBBHRqKAIAEAYgAkIBfCICIAEpAwhUDQALCyABKAIAEAYgASgCBBAGIAEQBgsgACgCFCIBBEACQCABKAIoIgNFBEAgASkDGCECDAELIANBADYCKCABKAIoQgA3AyAgASABKQMYIgIgASkDICIFIAIgBVYbIgI3AxgLIAEpAwggAlYEQANAIAEoAgAgAqdBBHRqKAIAEAYgAkIBfCICIAEpAwhUDQALCyABKAIAEAYgASgCBBAGIAEQBgsgABAGDBALIAAoAhAiAEIANwM4IABBQGtCADcDAAwPCyACQn9XBEAgAARAIABBADYCBCAAQRI2AgALDA4LIAIgACgCECIDKQMwIAMpAzgiBn0iBSACIAVUGyIFUA0OIAEgAykDQCIHpyIAQQR0IgEgAygCAGoiCigCACAGIAMoAgQgAEEDdGopAwB9IgKnaiAFIAopAwggAn0iBiAFIAZUGyIEpxAJIQogByAEIAMoAgAiACABaikDCCACfVGtfCECIAUgBlYEQANAIAogBKdqIAAgAqdBBHQiAWoiACgCACAFIAR9IgYgACkDCCIHIAYgB1QbIganEAkaIAIgBiADKAIAIgAgAWopAwhRrXwhAiAFIAQgBnwiBFYNAAsLIAMgAjcDQCADIAMpAzggBHw3AzgMDgtCfyEEQcgAEAgiA0UNDSADQgA3AwAgA0IANwMwIANBADYCKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwM4IANBCBAIIgE2AgQgAUUEQCADEAYgAARAIABBADYCBCAAQQ42AgALDA4LIAFCADcDACAAKAIQIgEEQAJAIAEoAigiCkUEQCABKQMYIQQMAQsgCkEANgIoIAEoAihCADcDICABIAEpAxgiAiABKQMgIgUgAiAFVhsiBDcDGAsgASkDCCAEVgRAA0AgASgCACAEp0EEdGooAgAQBiAEQgF8IgQgASkDCFQNAAsLIAEoAgAQBiABKAIEEAYgARAGCyAAIAM2AhBCACEEDA0LIAAoAhQiAQRAAkAgASgCKCIDRQRAIAEpAxghAgwBCyADQQA2AiggASgCKEIANwMgIAEgASkDGCICIAEpAyAiBSACIAVWGyICNwMYCyABKQMIIAJWBEADQCABKAIAIAKnQQR0aigCABAGIAJCAXwiAiABKQMIVA0ACwsgASgCABAGIAEoAgQQBiABEAYLIABBADYCFAwMCyAAKAIQIgMpAzggAykDMCABIAIgABBFIgdCAFMNCiADIAc3AzgCQCADKQMIIgZCAX0iAlANACADKAIEIQADQAJAIAcgACACIAR9QgGIIAR8IgWnQQN0aikDAFQEQCAFQgF9IQIMAQsgBSAGUQRAIAYhBQwDCyAAIAVCAXwiBKdBA3RqKQMAIAdWDQILIAQhBSACIARWDQALCyADIAU3A0BCACEEDAsLIAAoAhQiAykDOCADKQMwIAEgAiAAEEUiB0IAUw0JIAMgBzcDOAJAIAMpAwgiBkIBfSICUA0AIAMoAgQhAANAAkAgByAAIAIgBH1CAYggBHwiBadBA3RqKQMAVARAIAVCAX0hAgwBCyAFIAZRBEAgBiEFDAMLIAAgBUIBfCIEp0EDdGopAwAgB1YNAgsgBCEFIAIgBFYNAAsLIAMgBTcDQEIAIQQMCgsgAkI3WARAIAAEQCAAQQA2AgQgAEESNgIACwwJCyABECogASAAKAIMNgIoIAAoAhApAzAhAiABQQA2AjAgASACNwMgIAEgAjcDGCABQtwBNwMAQjghBAwJCyAAIAEoAgA2AgwMCAsgC0FAa0F/NgIAIAtCi4CAgLACNwM4IAtCjICAgNABNwMwIAtCj4CAgKABNwMoIAtCkYCAgJABNwMgIAtCh4CAgIABNwMYIAtChYCAgOAANwMQIAtCg4CAgMAANwMIIAtCgYCAgCA3AwBBACALECQhBAwHCyAAKAIQKQM4IgRCf1UNBiAABEAgAEE9NgIEIABBHjYCAAsMBQsgACgCFCkDOCIEQn9VDQUgAARAIABBPTYCBCAAQR42AgALDAQLQn8hBCACQn9XBEAgAARAIABBADYCBCAAQRI2AgALDAULIAIgACgCFCIDKQM4IAJ8IgVC//8DfCIEVgRAIAAEQCAAQQA2AgQgAEESNgIACwwECwJAIAUgAygCBCIKIAMpAwgiBqdBA3RqKQMAIgdYDQACQCAEIAd9QhCIIAZ8IgggAykDECIJWA0AQhAgCSAJUBshBQNAIAUiBEIBhiEFIAQgCFQNAAsgBCAJVA0AIAMoAgAgBKciCkEEdBAzIgxFDQMgAyAMNgIAIAMoAgQgCkEDdEEIahAzIgpFDQMgAyAENwMQIAMgCjYCBCADKQMIIQYLIAYgCFoNACADKAIAIQwDQCAMIAanQQR0aiINQYCABBAIIg42AgAgDkUEQCAABEAgAEEANgIEIABBDjYCAAsMBgsgDUKAgAQ3AwggAyAGQgF8IgU3AwggCiAFp0EDdGogB0KAgAR8Igc3AwAgAykDCCIGIAhUDQALCyADKQNAIQUgAykDOCEHAkAgAlAEQEIAIQQMAQsgBaciAEEEdCIMIAMoAgBqIg0oAgAgByAKIABBA3RqKQMAfSIGp2ogASACIA0pAwggBn0iByACIAdUGyIEpxAJGiAFIAQgAygCACIAIAxqKQMIIAZ9Ua18IQUgAiAHVgRAA0AgACAFp0EEdCIKaiIAKAIAIAEgBKdqIAIgBH0iBiAAKQMIIgcgBiAHVBsiBqcQCRogBSAGIAMoAgAiACAKaikDCFGtfCEFIAQgBnwiBCACVA0ACwsgAykDOCEHCyADIAU3A0AgAyAEIAd8IgI3AzggAiADKQMwWA0EIAMgAjcDMAwECyAABEAgAEEANgIEIABBHDYCAAsMAgsgAARAIABBADYCBCAAQQ42AgALIAAEQCAAQQA2AgQgAEEONgIACwwBCyAAQQA2AhQLQn8hBAsgC0HQAGokACAECwcAIAAvATALBgAgARAGC58DAQV/IwBBEGsiACQAIAEgAmwiAUGAf0sEf0EwBQJ/IAFBgH9PBEBB+JsBQTA2AgBBAAwBC0EAQRAgAUELakF4cSABQQtJGyIFQcwAahAIIgFFDQAaIAFBCGshAgJAIAFBP3FFBEAgAiEBDAELIAFBBGsiBigCACIHQXhxIAFBP2pBQHFBCGsiASABQUBrIAEgAmtBD0sbIgEgAmsiA2shBCAHQQNxRQRAIAIoAgAhAiABIAQ2AgQgASACIANqNgIADAELIAEgBCABKAIEQQFxckECcjYCBCABIARqIgQgBCgCBEEBcjYCBCAGIAMgBigCAEEBcXJBAnI2AgAgAiADaiIEIAQoAgRBAXI2AgQgAiADEDsLAkAgASgCBCICQQNxRQ0AIAJBeHEiAyAFQRBqTQ0AIAEgBSACQQFxckECcjYCBCABIAVqIgIgAyAFayIFQQNyNgIEIAEgA2oiAyADKAIEQQFyNgIEIAIgBRA7CyABQQhqCyIBBH8gACABNgIMQQAFQTALCyEBIAAoAgwhAiAAQRBqJABBACACIAEbCwcAIAAoAiALEgBB2JgBQRU2AgAgACABEJABCxIAQdSYAUEUNgIAIAAgARCRAQsnAEH0mwEtAABFBEBB9JsBQQE6AAALQcyYAUETNgIAIAAgASACEGALFgBB8JgBQRI2AgAgACABIAIgAxCSAQsTAEHsmAFBETYCACAAIAEgAhBWCxMAQeiYAUEQNgIAIAAgASACEFgLFQBB5JgBQQ82AgAgACABIAIgAxBZCwcAIAAoAgALEwBB4JgBQQ42AgAgACABIAIQWgshAEHcmAFBDTYCAEH0mwEtAABFBEBB9JsBQQE6AAALQQgLJwBByJgBQQw2AgBB9JsBLQAARQRAQfSbAUEBOgAACyAAIAEgAhBbCyMAQdCYAUELNgIAQfSbAS0AAEUEQEH0mwFBAToAAAsgABBfCxIAQcSYAUEKNgIAIAAgARCPAQsoAEHAmAFBCTYCAEH0mwEtAABFBEBB9JsBQQE6AAALIAAgASACEI4BCxgAQeibAUIANwIAQfCbAUEANgIAQeibAQuFAQIEfwF+IwBBEGsiASQAAkAgACkDMFAEQAwBCwNAAkAgACAFQQAgAUEPaiABQQhqEGoiBEF/Rg0AIAEtAA9BA0cNACACIAEoAghBgICAgH9xQYCAgIB6RmohAgtBfyEDIARBf0YNASACIQMgBUIBfCIFIAApAzBUDQALCyABQRBqJAAgAwsLho0BJQBBgAgLsQtpbnN1ZmZpY2llbnQgbWVtb3J5AG5lZWQgZGljdGlvbmFyeQAtKyAgIDBYMHgAWmlwIGFyY2hpdmUgaW5jb25zaXN0ZW50AEludmFsaWQgYXJndW1lbnQAaW52YWxpZCBsaXRlcmFsL2xlbmd0aHMgc2V0AGludmFsaWQgY29kZSBsZW5ndGhzIHNldAB1bmtub3duIGhlYWRlciBmbGFncyBzZXQAaW52YWxpZCBkaXN0YW5jZXMgc2V0AGludmFsaWQgYml0IGxlbmd0aCByZXBlYXQARmlsZSBhbHJlYWR5IGV4aXN0cwB0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scwBpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzACVzJXMlcwBidWZmZXIgZXJyb3IATm8gZXJyb3IAc3RyZWFtIGVycm9yAFRlbGwgZXJyb3IASW50ZXJuYWwgZXJyb3IAU2VlayBlcnJvcgBXcml0ZSBlcnJvcgBmaWxlIGVycm9yAFJlYWQgZXJyb3IAWmxpYiBlcnJvcgBkYXRhIGVycm9yAENSQyBlcnJvcgBpbmNvbXBhdGlibGUgdmVyc2lvbgBpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2sAaW5jb3JyZWN0IGhlYWRlciBjaGVjawBpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrAGluY29ycmVjdCBkYXRhIGNoZWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAGhlYWRlciBjcmMgbWlzbWF0Y2gAMS4yLjExLnpsaWItbmcAaW52YWxpZCB3aW5kb3cgc2l6ZQBSZWFkLW9ubHkgYXJjaGl2ZQBOb3QgYSB6aXAgYXJjaGl2ZQBSZXNvdXJjZSBzdGlsbCBpbiB1c2UATWFsbG9jIGZhaWx1cmUAaW52YWxpZCBibG9jayB0eXBlAEZhaWx1cmUgdG8gY3JlYXRlIHRlbXBvcmFyeSBmaWxlAENhbid0IG9wZW4gZmlsZQBObyBzdWNoIGZpbGUAUHJlbWF0dXJlIGVuZCBvZiBmaWxlAENhbid0IHJlbW92ZSBmaWxlAGludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZQBpbnZhbGlkIGRpc3RhbmNlIGNvZGUAdW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QAc3RyZWFtIGVuZABDb21wcmVzc2VkIGRhdGEgaW52YWxpZABNdWx0aS1kaXNrIHppcCBhcmNoaXZlcyBub3Qgc3VwcG9ydGVkAE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkAEVuY3J5cHRpb24gbWV0aG9kIG5vdCBzdXBwb3J0ZWQAQ29tcHJlc3Npb24gbWV0aG9kIG5vdCBzdXBwb3J0ZWQARW50cnkgaGFzIGJlZW4gZGVsZXRlZABDb250YWluaW5nIHppcCBhcmNoaXZlIHdhcyBjbG9zZWQAQ2xvc2luZyB6aXAgYXJjaGl2ZSBmYWlsZWQAUmVuYW1pbmcgdGVtcG9yYXJ5IGZpbGUgZmFpbGVkAEVudHJ5IGhhcyBiZWVuIGNoYW5nZWQATm8gcGFzc3dvcmQg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AQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQeDZAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdjaAAttBAAAAAQABAAIAAQABQAAAAQABAAIAAQABgAAAAQABgAgACAABgAAAAQABAAQABAABwAAAAgAEAAgACAABwAAAAgAEACAAIAABwAAAAgAIACAAAABCAAAACAAgAACAQAECAAAACAAAgECAQAQCABB0NsAC/cJDAAIAIwACABMAAgAzAAIACwACACsAAgAbAAIAOwACAAcAAgAnAAIAFwACADcAAgAPAAIALwACAB8AAgA/AAIAAIACACCAAgAQgAIAMIACAAiAAgAogAIAGIACADiAAgAEgAIAJIACABSAAgA0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJ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IGRvd24ASG9zdCBpcyB1bnJlYWNoYWJsZQBBZGRyZXNzIGluIHVzZQBCcm9rZW4gcGlwZQBJL08gZXJyb3IATm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzcwBCbG9jayBkZXZpY2UgcmVxdWlyZWQATm8gc3VjaCBkZXZpY2UATm90IGEgZGlyZWN0b3J5AElzIGEgZGlyZWN0b3J5AFRleHQgZmlsZSBidXN5AEV4ZWMgZm9ybWF0IGVycm9yAEludmFsaWQgYXJndW1lbnQAQXJndW1lbnQgbGlzdCB0b28gbG9uZwBTeW1ib2xpYyBsaW5rIGxvb3AARmlsZW5hbWUgdG9vIGxvbmcAVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW0ATm8gZmlsZSBkZXNjcmlwdG9ycyBhdmFpbGFibGUAQmFkIGZpbGUgZGVzY3JpcHRvcgBObyBjaGlsZCBwcm9jZXNzAEJhZCBhZGRyZXNzAEZpbGUgdG9vIGxhcmdlAFRvbyBtYW55IGxpbmtzAE5vIGxvY2tzIGF2YWlsYWJsZQBSZXNvdXJjZSBkZWFkbG9jayB3b3VsZCBvY2N1cgBTdGF0ZSBub3QgcmVjb3ZlcmFibGUAUHJldmlvdXMgb3duZXIgZGllZABPcGVyYXRpb24gY2FuY2VsZWQARnVuY3Rpb24gbm90IGltcGxlbWVudGVkAE5vIG1lc3NhZ2Ugb2YgZGVzaXJlZCB0eXBlAElkZW50aWZpZXIgcmVtb3ZlZABEZXZpY2Ugbm90IGEgc3RyZWFtAE5vIGRhdGEgYXZhaWxhYmxlAERldmljZSB0aW1lb3V0AE91dCBvZiBzdHJlYW1zIHJlc291cmNlcwBMaW5rIGhhcyBiZWVuIHNldmVyZWQAUHJvdG9jb2wgZXJyb3IAQmFkIG1lc3NhZ2UARmlsZSBkZXNjcmlwdG9yIGluIGJhZCBzdGF0ZQBOb3QgYSBzb2NrZXQARGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZABNZXNzYWdlIHRvbyBsYXJnZQBQcm90b2NvbCB3cm9uZyB0eXBlIGZvciBzb2NrZXQAUHJvdG9jb2wgbm90IGF2YWlsYWJsZQBQcm90b2NvbCBub3Qgc3VwcG9ydGVkAFNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWQATm90IHN1cHBvcnRlZABQcm90b2NvbCBmYW1pbHkgbm90IHN1cHBvcnRlZABBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sAEFkZHJlc3Mgbm90IGF2YWlsYWJsZQBOZXR3b3JrIGlzIGRvd24ATmV0d29yayB1bnJlYWNoYWJsZQBDb25uZWN0aW9uIHJlc2V0IGJ5IG5ldHdvcmsAQ29ubmVjdGlvbiBhYm9ydGVkAE5vIGJ1ZmZlciBzcGFjZSBhdmFpbGFibGUAU29ja2V0IGlzIGNvbm5lY3RlZABTb2NrZXQgbm90IGNvbm5lY3RlZABDYW5ub3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd24AT3BlcmF0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3MAT3BlcmF0aW9uIGluIHByb2dyZXNzAFN0YWxlIGZpbGUgaGFuZGxlAFJlbW90ZSBJL08gZXJyb3IAUXVvdGEgZXhjZWVkZWQATm8gbWVkaXVtIGZvdW5kAFdyb25nIG1lZGl1bSB0eXBlAE5vIGVycm9yIGluZm9ybWF0aW9uAEHAmAELdRYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAABwUFAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQBB5JoBCwJQUABBoJsBCxD/////////////////////";
+ if (!isDataURI(wasmBinaryFile)) {
+ wasmBinaryFile = locateFile(wasmBinaryFile);
+ }
+ function getBinary(file) {
+ try {
+ if (file == wasmBinaryFile && wasmBinary) {
+ return new Uint8Array(wasmBinary);
+ }
+ var binary = tryParseAsDataURI(file);
+ if (binary) {
+ return binary;
+ }
+ if (readBinary) {
+ return readBinary(file);
+ } else {
+ throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)";
+ }
+ } catch (err2) {
+ abort(err2);
+ }
+ }
+ function instantiateSync(file, info) {
+ var instance;
+ var module2;
+ var binary;
+ try {
+ binary = getBinary(file);
+ module2 = new WebAssembly.Module(binary);
+ instance = new WebAssembly.Instance(module2, info);
+ } catch (e) {
+ var str = e.toString();
+ err("failed to compile wasm module: " + str);
+ if (str.includes("imported Memory") || str.includes("memory import")) {
+ err(
+ "Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."
+ );
+ }
+ throw e;
+ }
+ return [instance, module2];
+ }
+ function createWasm() {
+ var info = { a: asmLibraryArg };
+ function receiveInstance(instance, module2) {
+ var exports3 = instance.exports;
+ Module["asm"] = exports3;
+ wasmMemory = Module["asm"]["g"];
+ updateGlobalBufferAndViews(wasmMemory.buffer);
+ wasmTable = Module["asm"]["$"];
+ addOnInit(Module["asm"]["h"]);
+ removeRunDependency();
+ }
+ addRunDependency();
+ if (Module["instantiateWasm"]) {
+ try {
+ var exports2 = Module["instantiateWasm"](info, receiveInstance);
+ return exports2;
+ } catch (e) {
+ err("Module.instantiateWasm callback failed with error: " + e);
+ return false;
+ }
+ }
+ var result = instantiateSync(wasmBinaryFile, info);
+ receiveInstance(result[0]);
+ return Module["asm"];
+ }
+ function LE_HEAP_LOAD_F32(byteOffset) {
+ return HEAP_DATA_VIEW.getFloat32(byteOffset, true);
+ }
+ function LE_HEAP_LOAD_F64(byteOffset) {
+ return HEAP_DATA_VIEW.getFloat64(byteOffset, true);
+ }
+ function LE_HEAP_LOAD_I16(byteOffset) {
+ return HEAP_DATA_VIEW.getInt16(byteOffset, true);
+ }
+ function LE_HEAP_LOAD_I32(byteOffset) {
+ return HEAP_DATA_VIEW.getInt32(byteOffset, true);
+ }
+ function LE_HEAP_STORE_I32(byteOffset, value) {
+ HEAP_DATA_VIEW.setInt32(byteOffset, value, true);
+ }
+ function callRuntimeCallbacks(callbacks) {
+ while (callbacks.length > 0) {
+ var callback = callbacks.shift();
+ if (typeof callback == "function") {
+ callback(Module);
+ continue;
+ }
+ var func = callback.func;
+ if (typeof func === "number") {
+ if (callback.arg === void 0) {
+ wasmTable.get(func)();
+ } else {
+ wasmTable.get(func)(callback.arg);
+ }
+ } else {
+ func(callback.arg === void 0 ? null : callback.arg);
+ }
+ }
+ }
+ function _gmtime_r(time, tmPtr) {
+ var date = new Date(LE_HEAP_LOAD_I32((time >> 2) * 4) * 1e3);
+ LE_HEAP_STORE_I32((tmPtr >> 2) * 4, date.getUTCSeconds());
+ LE_HEAP_STORE_I32((tmPtr + 4 >> 2) * 4, date.getUTCMinutes());
+ LE_HEAP_STORE_I32((tmPtr + 8 >> 2) * 4, date.getUTCHours());
+ LE_HEAP_STORE_I32((tmPtr + 12 >> 2) * 4, date.getUTCDate());
+ LE_HEAP_STORE_I32((tmPtr + 16 >> 2) * 4, date.getUTCMonth());
+ LE_HEAP_STORE_I32((tmPtr + 20 >> 2) * 4, date.getUTCFullYear() - 1900);
+ LE_HEAP_STORE_I32((tmPtr + 24 >> 2) * 4, date.getUTCDay());
+ LE_HEAP_STORE_I32((tmPtr + 36 >> 2) * 4, 0);
+ LE_HEAP_STORE_I32((tmPtr + 32 >> 2) * 4, 0);
+ var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);
+ var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;
+ LE_HEAP_STORE_I32((tmPtr + 28 >> 2) * 4, yday);
+ if (!_gmtime_r.GMTString)
+ _gmtime_r.GMTString = allocateUTF8("GMT");
+ LE_HEAP_STORE_I32((tmPtr + 40 >> 2) * 4, _gmtime_r.GMTString);
+ return tmPtr;
+ }
+ function ___gmtime_r(a0, a1) {
+ return _gmtime_r(a0, a1);
+ }
+ function _emscripten_memcpy_big(dest, src, num) {
+ HEAPU8.copyWithin(dest, src, src + num);
+ }
+ function emscripten_realloc_buffer(size) {
+ try {
+ wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16);
+ updateGlobalBufferAndViews(wasmMemory.buffer);
+ return 1;
+ } catch (e) {
+ }
+ }
+ function _emscripten_resize_heap(requestedSize) {
+ var oldSize = HEAPU8.length;
+ requestedSize = requestedSize >>> 0;
+ var maxHeapSize = 2147483648;
+ if (requestedSize > maxHeapSize) {
+ return false;
+ }
+ for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
+ var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);
+ overGrownHeapSize = Math.min(
+ overGrownHeapSize,
+ requestedSize + 100663296
+ );
+ var newSize = Math.min(
+ maxHeapSize,
+ alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)
+ );
+ var replacement = emscripten_realloc_buffer(newSize);
+ if (replacement) {
+ return true;
+ }
+ }
+ return false;
+ }
+ function _setTempRet0(val) {
+ }
+ function _time(ptr) {
+ var ret = Date.now() / 1e3 | 0;
+ if (ptr) {
+ LE_HEAP_STORE_I32((ptr >> 2) * 4, ret);
+ }
+ return ret;
+ }
+ function _tzset() {
+ if (_tzset.called)
+ return;
+ _tzset.called = true;
+ var currentYear = new Date().getFullYear();
+ var winter = new Date(currentYear, 0, 1);
+ var summer = new Date(currentYear, 6, 1);
+ var winterOffset = winter.getTimezoneOffset();
+ var summerOffset = summer.getTimezoneOffset();
+ var stdTimezoneOffset = Math.max(winterOffset, summerOffset);
+ LE_HEAP_STORE_I32((__get_timezone() >> 2) * 4, stdTimezoneOffset * 60);
+ LE_HEAP_STORE_I32(
+ (__get_daylight() >> 2) * 4,
+ Number(winterOffset != summerOffset)
+ );
+ function extractZone(date) {
+ var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/);
+ return match ? match[1] : "GMT";
+ }
+ var winterName = extractZone(winter);
+ var summerName = extractZone(summer);
+ var winterNamePtr = allocateUTF8(winterName);
+ var summerNamePtr = allocateUTF8(summerName);
+ if (summerOffset < winterOffset) {
+ LE_HEAP_STORE_I32((__get_tzname() >> 2) * 4, winterNamePtr);
+ LE_HEAP_STORE_I32((__get_tzname() + 4 >> 2) * 4, summerNamePtr);
+ } else {
+ LE_HEAP_STORE_I32((__get_tzname() >> 2) * 4, summerNamePtr);
+ LE_HEAP_STORE_I32((__get_tzname() + 4 >> 2) * 4, winterNamePtr);
+ }
+ }
+ function _timegm(tmPtr) {
+ _tzset();
+ var time = Date.UTC(
+ LE_HEAP_LOAD_I32((tmPtr + 20 >> 2) * 4) + 1900,
+ LE_HEAP_LOAD_I32((tmPtr + 16 >> 2) * 4),
+ LE_HEAP_LOAD_I32((tmPtr + 12 >> 2) * 4),
+ LE_HEAP_LOAD_I32((tmPtr + 8 >> 2) * 4),
+ LE_HEAP_LOAD_I32((tmPtr + 4 >> 2) * 4),
+ LE_HEAP_LOAD_I32((tmPtr >> 2) * 4),
+ 0
+ );
+ var date = new Date(time);
+ LE_HEAP_STORE_I32((tmPtr + 24 >> 2) * 4, date.getUTCDay());
+ var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);
+ var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;
+ LE_HEAP_STORE_I32((tmPtr + 28 >> 2) * 4, yday);
+ return date.getTime() / 1e3 | 0;
+ }
+ function intArrayFromBase64(s) {
+ {
+ var buf;
+ try {
+ buf = Buffer.from(s, "base64");
+ } catch (_) {
+ buf = new Buffer(s, "base64");
+ }
+ return new Uint8Array(
+ buf["buffer"],
+ buf["byteOffset"],
+ buf["byteLength"]
+ );
+ }
+ }
+ function tryParseAsDataURI(filename) {
+ if (!isDataURI(filename)) {
+ return;
+ }
+ return intArrayFromBase64(filename.slice(dataURIPrefix.length));
+ }
+ var asmLibraryArg = {
+ e: ___gmtime_r,
+ c: _emscripten_memcpy_big,
+ d: _emscripten_resize_heap,
+ a: _setTempRet0,
+ b: _time,
+ f: _timegm
+ };
+ var asm = createWasm();
+ Module["___wasm_call_ctors"] = asm["h"];
+ Module["_zip_ext_count_symlinks"] = asm["i"];
+ Module["_zip_file_get_external_attributes"] = asm["j"];
+ Module["_zipstruct_stat"] = asm["k"];
+ Module["_zipstruct_statS"] = asm["l"];
+ Module["_zipstruct_stat_name"] = asm["m"];
+ Module["_zipstruct_stat_index"] = asm["n"];
+ Module["_zipstruct_stat_size"] = asm["o"];
+ Module["_zipstruct_stat_mtime"] = asm["p"];
+ Module["_zipstruct_stat_crc"] = asm["q"];
+ Module["_zipstruct_error"] = asm["r"];
+ Module["_zipstruct_errorS"] = asm["s"];
+ Module["_zipstruct_error_code_zip"] = asm["t"];
+ Module["_zipstruct_stat_comp_size"] = asm["u"];
+ Module["_zipstruct_stat_comp_method"] = asm["v"];
+ Module["_zip_close"] = asm["w"];
+ Module["_zip_delete"] = asm["x"];
+ Module["_zip_dir_add"] = asm["y"];
+ Module["_zip_discard"] = asm["z"];
+ Module["_zip_error_init_with_code"] = asm["A"];
+ Module["_zip_get_error"] = asm["B"];
+ Module["_zip_file_get_error"] = asm["C"];
+ Module["_zip_error_strerror"] = asm["D"];
+ Module["_zip_fclose"] = asm["E"];
+ Module["_zip_file_add"] = asm["F"];
+ Module["_free"] = asm["G"];
+ var _malloc = Module["_malloc"] = asm["H"];
+ Module["_zip_source_error"] = asm["I"];
+ Module["_zip_source_seek"] = asm["J"];
+ Module["_zip_file_set_external_attributes"] = asm["K"];
+ Module["_zip_file_set_mtime"] = asm["L"];
+ Module["_zip_fopen"] = asm["M"];
+ Module["_zip_fopen_index"] = asm["N"];
+ Module["_zip_fread"] = asm["O"];
+ Module["_zip_get_name"] = asm["P"];
+ Module["_zip_get_num_entries"] = asm["Q"];
+ Module["_zip_source_read"] = asm["R"];
+ Module["_zip_name_locate"] = asm["S"];
+ Module["_zip_open_from_source"] = asm["T"];
+ Module["_zip_set_file_compression"] = asm["U"];
+ Module["_zip_source_buffer"] = asm["V"];
+ Module["_zip_source_buffer_create"] = asm["W"];
+ Module["_zip_source_close"] = asm["X"];
+ Module["_zip_source_free"] = asm["Y"];
+ Module["_zip_source_keep"] = asm["Z"];
+ Module["_zip_source_open"] = asm["_"];
+ Module["_zip_source_set_mtime"] = asm["aa"];
+ Module["_zip_source_tell"] = asm["ba"];
+ Module["_zip_stat"] = asm["ca"];
+ Module["_zip_stat_index"] = asm["da"];
+ var __get_tzname = Module["__get_tzname"] = asm["ea"];
+ var __get_daylight = Module["__get_daylight"] = asm["fa"];
+ var __get_timezone = Module["__get_timezone"] = asm["ga"];
+ var stackSave = Module["stackSave"] = asm["ha"];
+ var stackRestore = Module["stackRestore"] = asm["ia"];
+ var stackAlloc = Module["stackAlloc"] = asm["ja"];
+ Module["cwrap"] = cwrap;
+ Module["getValue"] = getValue;
+ var calledRun;
+ dependenciesFulfilled = function runCaller() {
+ if (!calledRun)
+ run();
+ if (!calledRun)
+ dependenciesFulfilled = runCaller;
+ };
+ function run(args) {
+ if (runDependencies > 0) {
+ return;
+ }
+ preRun();
+ if (runDependencies > 0) {
+ return;
+ }
+ function doRun() {
+ if (calledRun)
+ return;
+ calledRun = true;
+ Module["calledRun"] = true;
+ if (ABORT)
+ return;
+ initRuntime();
+ readyPromiseResolve(Module);
+ if (Module["onRuntimeInitialized"])
+ Module["onRuntimeInitialized"]();
+ postRun();
+ }
+ if (Module["setStatus"]) {
+ Module["setStatus"]("Running...");
+ setTimeout(function() {
+ setTimeout(function() {
+ Module["setStatus"]("");
+ }, 1);
+ doRun();
+ }, 1);
+ } else {
+ doRun();
+ }
+ }
+ Module["run"] = run;
+ if (Module["preInit"]) {
+ if (typeof Module["preInit"] == "function")
+ Module["preInit"] = [Module["preInit"]];
+ while (Module["preInit"].length > 0) {
+ Module["preInit"].pop()();
+ }
+ }
+ run();
+ return createModule2;
+ };
+}();
+module.exports = createModule;
+}(libzipSync));
+
+const createModule = libzipSync.exports;
+
+const number64 = [
+ `number`,
+ `number`
+];
+var Errors = /* @__PURE__ */ ((Errors2) => {
+ Errors2[Errors2["ZIP_ER_OK"] = 0] = "ZIP_ER_OK";
+ Errors2[Errors2["ZIP_ER_MULTIDISK"] = 1] = "ZIP_ER_MULTIDISK";
+ Errors2[Errors2["ZIP_ER_RENAME"] = 2] = "ZIP_ER_RENAME";
+ Errors2[Errors2["ZIP_ER_CLOSE"] = 3] = "ZIP_ER_CLOSE";
+ Errors2[Errors2["ZIP_ER_SEEK"] = 4] = "ZIP_ER_SEEK";
+ Errors2[Errors2["ZIP_ER_READ"] = 5] = "ZIP_ER_READ";
+ Errors2[Errors2["ZIP_ER_WRITE"] = 6] = "ZIP_ER_WRITE";
+ Errors2[Errors2["ZIP_ER_CRC"] = 7] = "ZIP_ER_CRC";
+ Errors2[Errors2["ZIP_ER_ZIPCLOSED"] = 8] = "ZIP_ER_ZIPCLOSED";
+ Errors2[Errors2["ZIP_ER_NOENT"] = 9] = "ZIP_ER_NOENT";
+ Errors2[Errors2["ZIP_ER_EXISTS"] = 10] = "ZIP_ER_EXISTS";
+ Errors2[Errors2["ZIP_ER_OPEN"] = 11] = "ZIP_ER_OPEN";
+ Errors2[Errors2["ZIP_ER_TMPOPEN"] = 12] = "ZIP_ER_TMPOPEN";
+ Errors2[Errors2["ZIP_ER_ZLIB"] = 13] = "ZIP_ER_ZLIB";
+ Errors2[Errors2["ZIP_ER_MEMORY"] = 14] = "ZIP_ER_MEMORY";
+ Errors2[Errors2["ZIP_ER_CHANGED"] = 15] = "ZIP_ER_CHANGED";
+ Errors2[Errors2["ZIP_ER_COMPNOTSUPP"] = 16] = "ZIP_ER_COMPNOTSUPP";
+ Errors2[Errors2["ZIP_ER_EOF"] = 17] = "ZIP_ER_EOF";
+ Errors2[Errors2["ZIP_ER_INVAL"] = 18] = "ZIP_ER_INVAL";
+ Errors2[Errors2["ZIP_ER_NOZIP"] = 19] = "ZIP_ER_NOZIP";
+ Errors2[Errors2["ZIP_ER_INTERNAL"] = 20] = "ZIP_ER_INTERNAL";
+ Errors2[Errors2["ZIP_ER_INCONS"] = 21] = "ZIP_ER_INCONS";
+ Errors2[Errors2["ZIP_ER_REMOVE"] = 22] = "ZIP_ER_REMOVE";
+ Errors2[Errors2["ZIP_ER_DELETED"] = 23] = "ZIP_ER_DELETED";
+ Errors2[Errors2["ZIP_ER_ENCRNOTSUPP"] = 24] = "ZIP_ER_ENCRNOTSUPP";
+ Errors2[Errors2["ZIP_ER_RDONLY"] = 25] = "ZIP_ER_RDONLY";
+ Errors2[Errors2["ZIP_ER_NOPASSWD"] = 26] = "ZIP_ER_NOPASSWD";
+ Errors2[Errors2["ZIP_ER_WRONGPASSWD"] = 27] = "ZIP_ER_WRONGPASSWD";
+ Errors2[Errors2["ZIP_ER_OPNOTSUPP"] = 28] = "ZIP_ER_OPNOTSUPP";
+ Errors2[Errors2["ZIP_ER_INUSE"] = 29] = "ZIP_ER_INUSE";
+ Errors2[Errors2["ZIP_ER_TELL"] = 30] = "ZIP_ER_TELL";
+ Errors2[Errors2["ZIP_ER_COMPRESSED_DATA"] = 31] = "ZIP_ER_COMPRESSED_DATA";
+ return Errors2;
+})(Errors || {});
+const makeInterface = (emZip) => ({
+ get HEAP8() {
+ return emZip.HEAP8;
+ },
+ get HEAPU8() {
+ return emZip.HEAPU8;
+ },
+ errors: Errors,
+ SEEK_SET: 0,
+ SEEK_CUR: 1,
+ SEEK_END: 2,
+ ZIP_CHECKCONS: 4,
+ ZIP_EXCL: 2,
+ ZIP_RDONLY: 16,
+ ZIP_FL_OVERWRITE: 8192,
+ ZIP_FL_COMPRESSED: 4,
+ ZIP_OPSYS_DOS: 0,
+ ZIP_OPSYS_AMIGA: 1,
+ ZIP_OPSYS_OPENVMS: 2,
+ ZIP_OPSYS_UNIX: 3,
+ ZIP_OPSYS_VM_CMS: 4,
+ ZIP_OPSYS_ATARI_ST: 5,
+ ZIP_OPSYS_OS_2: 6,
+ ZIP_OPSYS_MACINTOSH: 7,
+ ZIP_OPSYS_Z_SYSTEM: 8,
+ ZIP_OPSYS_CPM: 9,
+ ZIP_OPSYS_WINDOWS_NTFS: 10,
+ ZIP_OPSYS_MVS: 11,
+ ZIP_OPSYS_VSE: 12,
+ ZIP_OPSYS_ACORN_RISC: 13,
+ ZIP_OPSYS_VFAT: 14,
+ ZIP_OPSYS_ALTERNATE_MVS: 15,
+ ZIP_OPSYS_BEOS: 16,
+ ZIP_OPSYS_TANDEM: 17,
+ ZIP_OPSYS_OS_400: 18,
+ ZIP_OPSYS_OS_X: 19,
+ ZIP_CM_DEFAULT: -1,
+ ZIP_CM_STORE: 0,
+ ZIP_CM_DEFLATE: 8,
+ uint08S: emZip._malloc(1),
+ uint16S: emZip._malloc(2),
+ uint32S: emZip._malloc(4),
+ uint64S: emZip._malloc(8),
+ malloc: emZip._malloc,
+ free: emZip._free,
+ getValue: emZip.getValue,
+ openFromSource: emZip.cwrap(`zip_open_from_source`, `number`, [`number`, `number`, `number`]),
+ close: emZip.cwrap(`zip_close`, `number`, [`number`]),
+ discard: emZip.cwrap(`zip_discard`, null, [`number`]),
+ getError: emZip.cwrap(`zip_get_error`, `number`, [`number`]),
+ getName: emZip.cwrap(`zip_get_name`, `string`, [`number`, `number`, `number`]),
+ getNumEntries: emZip.cwrap(`zip_get_num_entries`, `number`, [`number`, `number`]),
+ delete: emZip.cwrap(`zip_delete`, `number`, [`number`, `number`]),
+ stat: emZip.cwrap(`zip_stat`, `number`, [`number`, `string`, `number`, `number`]),
+ statIndex: emZip.cwrap(`zip_stat_index`, `number`, [`number`, ...number64, `number`, `number`]),
+ fopen: emZip.cwrap(`zip_fopen`, `number`, [`number`, `string`, `number`]),
+ fopenIndex: emZip.cwrap(`zip_fopen_index`, `number`, [`number`, ...number64, `number`]),
+ fread: emZip.cwrap(`zip_fread`, `number`, [`number`, `number`, `number`, `number`]),
+ fclose: emZip.cwrap(`zip_fclose`, `number`, [`number`]),
+ dir: {
+ add: emZip.cwrap(`zip_dir_add`, `number`, [`number`, `string`])
+ },
+ file: {
+ add: emZip.cwrap(`zip_file_add`, `number`, [`number`, `string`, `number`, `number`]),
+ getError: emZip.cwrap(`zip_file_get_error`, `number`, [`number`]),
+ getExternalAttributes: emZip.cwrap(`zip_file_get_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]),
+ setExternalAttributes: emZip.cwrap(`zip_file_set_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]),
+ setMtime: emZip.cwrap(`zip_file_set_mtime`, `number`, [`number`, ...number64, `number`, `number`]),
+ setCompression: emZip.cwrap(`zip_set_file_compression`, `number`, [`number`, ...number64, `number`, `number`])
+ },
+ ext: {
+ countSymlinks: emZip.cwrap(`zip_ext_count_symlinks`, `number`, [`number`])
+ },
+ error: {
+ initWithCode: emZip.cwrap(`zip_error_init_with_code`, null, [`number`, `number`]),
+ strerror: emZip.cwrap(`zip_error_strerror`, `string`, [`number`])
+ },
+ name: {
+ locate: emZip.cwrap(`zip_name_locate`, `number`, [`number`, `string`, `number`])
+ },
+ source: {
+ fromUnattachedBuffer: emZip.cwrap(`zip_source_buffer_create`, `number`, [`number`, ...number64, `number`, `number`]),
+ fromBuffer: emZip.cwrap(`zip_source_buffer`, `number`, [`number`, `number`, ...number64, `number`]),
+ free: emZip.cwrap(`zip_source_free`, null, [`number`]),
+ keep: emZip.cwrap(`zip_source_keep`, null, [`number`]),
+ open: emZip.cwrap(`zip_source_open`, `number`, [`number`]),
+ close: emZip.cwrap(`zip_source_close`, `number`, [`number`]),
+ seek: emZip.cwrap(`zip_source_seek`, `number`, [`number`, ...number64, `number`]),
+ tell: emZip.cwrap(`zip_source_tell`, `number`, [`number`]),
+ read: emZip.cwrap(`zip_source_read`, `number`, [`number`, `number`, `number`]),
+ error: emZip.cwrap(`zip_source_error`, `number`, [`number`]),
+ setMtime: emZip.cwrap(`zip_source_set_mtime`, `number`, [`number`, `number`])
+ },
+ struct: {
+ stat: emZip.cwrap(`zipstruct_stat`, `number`, []),
+ statS: emZip.cwrap(`zipstruct_statS`, `number`, []),
+ statName: emZip.cwrap(`zipstruct_stat_name`, `string`, [`number`]),
+ statIndex: emZip.cwrap(`zipstruct_stat_index`, `number`, [`number`]),
+ statSize: emZip.cwrap(`zipstruct_stat_size`, `number`, [`number`]),
+ statCompSize: emZip.cwrap(`zipstruct_stat_comp_size`, `number`, [`number`]),
+ statCompMethod: emZip.cwrap(`zipstruct_stat_comp_method`, `number`, [`number`]),
+ statMtime: emZip.cwrap(`zipstruct_stat_mtime`, `number`, [`number`]),
+ statCrc: emZip.cwrap(`zipstruct_stat_crc`, `number`, [`number`]),
+ error: emZip.cwrap(`zipstruct_error`, `number`, []),
+ errorS: emZip.cwrap(`zipstruct_errorS`, `number`, []),
+ errorCodeZip: emZip.cwrap(`zipstruct_error_code_zip`, `number`, [`number`])
+ }
+});
+
+function getArchivePart(path, extension) {
+ let idx = path.indexOf(extension);
+ if (idx <= 0)
+ return null;
+ let nextCharIdx = idx;
+ while (idx >= 0) {
+ nextCharIdx = idx + extension.length;
+ if (path[nextCharIdx] === ppath.sep)
+ break;
+ if (path[idx - 1] === ppath.sep)
+ return null;
+ idx = path.indexOf(extension, nextCharIdx);
+ }
+ if (path.length > nextCharIdx && path[nextCharIdx] !== ppath.sep)
+ return null;
+ return path.slice(0, nextCharIdx);
+}
+class ZipOpenFS extends MountFS {
+ static async openPromise(fn, opts) {
+ const zipOpenFs = new ZipOpenFS(opts);
+ try {
+ return await fn(zipOpenFs);
+ } finally {
+ zipOpenFs.saveAndClose();
+ }
+ }
+ constructor(opts = {}) {
+ const fileExtensions = opts.fileExtensions;
+ const readOnlyArchives = opts.readOnlyArchives;
+ const getMountPoint = typeof fileExtensions === `undefined` ? (path) => getArchivePart(path, `.zip`) : (path) => {
+ for (const extension of fileExtensions) {
+ const result = getArchivePart(path, extension);
+ if (result) {
+ return result;
+ }
+ }
+ return null;
+ };
+ const factorySync = (baseFs, p) => {
+ return new ZipFS(p, {
+ baseFs,
+ readOnly: readOnlyArchives,
+ stats: baseFs.statSync(p)
+ });
+ };
+ const factoryPromise = async (baseFs, p) => {
+ const zipOptions = {
+ baseFs,
+ readOnly: readOnlyArchives,
+ stats: await baseFs.statPromise(p)
+ };
+ return () => {
+ return new ZipFS(p, zipOptions);
+ };
+ };
+ super({
+ ...opts,
+ factorySync,
+ factoryPromise,
+ getMountPoint
+ });
+ }
+}
+
+const DEFAULT_COMPRESSION_LEVEL = `mixed`;
+function toUnixTimestamp(time) {
+ if (typeof time === `string` && String(+time) === time)
+ return +time;
+ if (typeof time === `number` && Number.isFinite(time)) {
+ if (time < 0) {
+ return Date.now() / 1e3;
+ } else {
+ return time;
+ }
+ }
+ if (nodeUtils.types.isDate(time))
+ return time.getTime() / 1e3;
+ throw new Error(`Invalid time`);
+}
+function makeEmptyArchive() {
+ return Buffer.from([
+ 80,
+ 75,
+ 5,
+ 6,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0
+ ]);
+}
+class LibzipError extends Error {
+ constructor(message, code) {
+ super(message);
+ this.name = `Libzip Error`;
+ this.code = code;
+ }
+}
+class ZipFS extends BasePortableFakeFS {
+ constructor(source, opts = {}) {
+ super();
+ this.listings = /* @__PURE__ */ new Map();
+ this.entries = /* @__PURE__ */ new Map();
+ this.fileSources = /* @__PURE__ */ new Map();
+ this.fds = /* @__PURE__ */ new Map();
+ this.nextFd = 0;
+ this.ready = false;
+ this.readOnly = false;
+ const pathOptions = opts;
+ this.level = typeof pathOptions.level !== `undefined` ? pathOptions.level : DEFAULT_COMPRESSION_LEVEL;
+ source ?? (source = makeEmptyArchive());
+ if (typeof source === `string`) {
+ const { baseFs = new NodeFS() } = pathOptions;
+ this.baseFs = baseFs;
+ this.path = source;
+ } else {
+ this.path = null;
+ this.baseFs = null;
+ }
+ if (opts.stats) {
+ this.stats = opts.stats;
+ } else {
+ if (typeof source === `string`) {
+ try {
+ this.stats = this.baseFs.statSync(source);
+ } catch (error) {
+ if (error.code === `ENOENT` && pathOptions.create) {
+ this.stats = makeDefaultStats();
+ } else {
+ throw error;
+ }
+ }
+ } else {
+ this.stats = makeDefaultStats();
+ }
+ }
+ this.libzip = getInstance();
+ const errPtr = this.libzip.malloc(4);
+ try {
+ let flags = 0;
+ if (opts.readOnly) {
+ flags |= this.libzip.ZIP_RDONLY;
+ this.readOnly = true;
+ }
+ if (typeof source === `string`)
+ source = pathOptions.create ? makeEmptyArchive() : this.baseFs.readFileSync(source);
+ const lzSource = this.allocateUnattachedSource(source);
+ try {
+ this.zip = this.libzip.openFromSource(lzSource, flags, errPtr);
+ this.lzSource = lzSource;
+ } catch (error) {
+ this.libzip.source.free(lzSource);
+ throw error;
+ }
+ if (this.zip === 0) {
+ const error = this.libzip.struct.errorS();
+ this.libzip.error.initWithCode(error, this.libzip.getValue(errPtr, `i32`));
+ throw this.makeLibzipError(error);
+ }
+ } finally {
+ this.libzip.free(errPtr);
+ }
+ this.listings.set(PortablePath.root, /* @__PURE__ */ new Set());
+ const entryCount = this.libzip.getNumEntries(this.zip, 0);
+ for (let t = 0; t < entryCount; ++t) {
+ const raw = this.libzip.getName(this.zip, t, 0);
+ if (ppath.isAbsolute(raw))
+ continue;
+ const p = ppath.resolve(PortablePath.root, raw);
+ this.registerEntry(p, t);
+ if (raw.endsWith(`/`)) {
+ this.registerListing(p);
+ }
+ }
+ this.symlinkCount = this.libzip.ext.countSymlinks(this.zip);
+ if (this.symlinkCount === -1)
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ this.ready = true;
+ }
+ makeLibzipError(error) {
+ const errorCode = this.libzip.struct.errorCodeZip(error);
+ const strerror = this.libzip.error.strerror(error);
+ const libzipError = new LibzipError(strerror, this.libzip.errors[errorCode]);
+ if (errorCode === this.libzip.errors.ZIP_ER_CHANGED)
+ throw new Error(`Assertion failed: Unexpected libzip error: ${libzipError.message}`);
+ return libzipError;
+ }
+ getExtractHint(hints) {
+ for (const fileName of this.entries.keys()) {
+ const ext = this.pathUtils.extname(fileName);
+ if (hints.relevantExtensions.has(ext)) {
+ return true;
+ }
+ }
+ return false;
+ }
+ getAllFiles() {
+ return Array.from(this.entries.keys());
+ }
+ getRealPath() {
+ if (!this.path)
+ throw new Error(`ZipFS don't have real paths when loaded from a buffer`);
+ return this.path;
+ }
+ prepareClose() {
+ if (!this.ready)
+ throw EBUSY(`archive closed, close`);
+ unwatchAllFiles(this);
+ }
+ getBufferAndClose() {
+ this.prepareClose();
+ if (this.entries.size === 0) {
+ this.discardAndClose();
+ return makeEmptyArchive();
+ }
+ try {
+ this.libzip.source.keep(this.lzSource);
+ if (this.libzip.close(this.zip) === -1)
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ if (this.libzip.source.open(this.lzSource) === -1)
+ throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
+ if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_END) === -1)
+ throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
+ const size = this.libzip.source.tell(this.lzSource);
+ if (size === -1)
+ throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
+ if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_SET) === -1)
+ throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
+ const buffer = this.libzip.malloc(size);
+ if (!buffer)
+ throw new Error(`Couldn't allocate enough memory`);
+ try {
+ const rc = this.libzip.source.read(this.lzSource, buffer, size);
+ if (rc === -1)
+ throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
+ else if (rc < size)
+ throw new Error(`Incomplete read`);
+ else if (rc > size)
+ throw new Error(`Overread`);
+ const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size);
+ return Buffer.from(memory);
+ } finally {
+ this.libzip.free(buffer);
+ }
+ } finally {
+ this.libzip.source.close(this.lzSource);
+ this.libzip.source.free(this.lzSource);
+ this.ready = false;
+ }
+ }
+ discardAndClose() {
+ this.prepareClose();
+ this.libzip.discard(this.zip);
+ this.ready = false;
+ }
+ saveAndClose() {
+ if (!this.path || !this.baseFs)
+ throw new Error(`ZipFS cannot be saved and must be discarded when loaded from a buffer`);
+ if (this.readOnly) {
+ this.discardAndClose();
+ return;
+ }
+ const newMode = this.baseFs.existsSync(this.path) || this.stats.mode === DEFAULT_MODE ? void 0 : this.stats.mode;
+ this.baseFs.writeFileSync(this.path, this.getBufferAndClose(), { mode: newMode });
+ this.ready = false;
+ }
+ resolve(p) {
+ return ppath.resolve(PortablePath.root, p);
+ }
+ async openPromise(p, flags, mode) {
+ return this.openSync(p, flags, mode);
+ }
+ openSync(p, flags, mode) {
+ const fd = this.nextFd++;
+ this.fds.set(fd, { cursor: 0, p });
+ return fd;
+ }
+ hasOpenFileHandles() {
+ return !!this.fds.size;
+ }
+ async opendirPromise(p, opts) {
+ return this.opendirSync(p, opts);
+ }
+ opendirSync(p, opts = {}) {
+ const resolvedP = this.resolveFilename(`opendir '${p}'`, p);
+ if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
+ throw ENOENT(`opendir '${p}'`);
+ const directoryListing = this.listings.get(resolvedP);
+ if (!directoryListing)
+ throw ENOTDIR(`opendir '${p}'`);
+ const entries = [...directoryListing];
+ const fd = this.openSync(resolvedP, `r`);
+ const onClose = () => {
+ this.closeSync(fd);
+ };
+ return opendir(this, resolvedP, entries, { onClose });
+ }
+ async readPromise(fd, buffer, offset, length, position) {
+ return this.readSync(fd, buffer, offset, length, position);
+ }
+ readSync(fd, buffer, offset = 0, length = buffer.byteLength, position = -1) {
+ const entry = this.fds.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`read`);
+ const realPosition = position === -1 || position === null ? entry.cursor : position;
+ const source = this.readFileSync(entry.p);
+ source.copy(buffer, offset, realPosition, realPosition + length);
+ const bytesRead = Math.max(0, Math.min(source.length - realPosition, length));
+ if (position === -1 || position === null)
+ entry.cursor += bytesRead;
+ return bytesRead;
+ }
+ async writePromise(fd, buffer, offset, length, position) {
+ if (typeof buffer === `string`) {
+ return this.writeSync(fd, buffer, position);
+ } else {
+ return this.writeSync(fd, buffer, offset, length, position);
+ }
+ }
+ writeSync(fd, buffer, offset, length, position) {
+ const entry = this.fds.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`read`);
+ throw new Error(`Unimplemented`);
+ }
+ async closePromise(fd) {
+ return this.closeSync(fd);
+ }
+ closeSync(fd) {
+ const entry = this.fds.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`read`);
+ this.fds.delete(fd);
+ }
+ createReadStream(p, { encoding } = {}) {
+ if (p === null)
+ throw new Error(`Unimplemented`);
+ const fd = this.openSync(p, `r`);
+ const stream$1 = Object.assign(
+ new stream.PassThrough({
+ emitClose: true,
+ autoDestroy: true,
+ destroy: (error, callback) => {
+ clearImmediate(immediate);
+ this.closeSync(fd);
+ callback(error);
+ }
+ }),
+ {
+ close() {
+ stream$1.destroy();
+ },
+ bytesRead: 0,
+ path: p,
+ pending: false
+ }
+ );
+ const immediate = setImmediate(async () => {
+ try {
+ const data = await this.readFilePromise(p, encoding);
+ stream$1.bytesRead = data.length;
+ stream$1.end(data);
+ } catch (error) {
+ stream$1.destroy(error);
+ }
+ });
+ return stream$1;
+ }
+ createWriteStream(p, { encoding } = {}) {
+ if (this.readOnly)
+ throw EROFS(`open '${p}'`);
+ if (p === null)
+ throw new Error(`Unimplemented`);
+ const chunks = [];
+ const fd = this.openSync(p, `w`);
+ const stream$1 = Object.assign(
+ new stream.PassThrough({
+ autoDestroy: true,
+ emitClose: true,
+ destroy: (error, callback) => {
+ try {
+ if (error) {
+ callback(error);
+ } else {
+ this.writeFileSync(p, Buffer.concat(chunks), encoding);
+ callback(null);
+ }
+ } catch (err) {
+ callback(err);
+ } finally {
+ this.closeSync(fd);
+ }
+ }
+ }),
+ {
+ close() {
+ stream$1.destroy();
+ },
+ bytesWritten: 0,
+ path: p,
+ pending: false
+ }
+ );
+ stream$1.on(`data`, (chunk) => {
+ const chunkBuffer = Buffer.from(chunk);
+ stream$1.bytesWritten += chunkBuffer.length;
+ chunks.push(chunkBuffer);
+ });
+ return stream$1;
+ }
+ async realpathPromise(p) {
+ return this.realpathSync(p);
+ }
+ realpathSync(p) {
+ const resolvedP = this.resolveFilename(`lstat '${p}'`, p);
+ if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
+ throw ENOENT(`lstat '${p}'`);
+ return resolvedP;
+ }
+ async existsPromise(p) {
+ return this.existsSync(p);
+ }
+ existsSync(p) {
+ if (!this.ready)
+ throw EBUSY(`archive closed, existsSync '${p}'`);
+ if (this.symlinkCount === 0) {
+ const resolvedP2 = ppath.resolve(PortablePath.root, p);
+ return this.entries.has(resolvedP2) || this.listings.has(resolvedP2);
+ }
+ let resolvedP;
+ try {
+ resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, false);
+ } catch (error) {
+ return false;
+ }
+ if (resolvedP === void 0)
+ return false;
+ return this.entries.has(resolvedP) || this.listings.has(resolvedP);
+ }
+ async accessPromise(p, mode) {
+ return this.accessSync(p, mode);
+ }
+ accessSync(p, mode = fs.constants.F_OK) {
+ const resolvedP = this.resolveFilename(`access '${p}'`, p);
+ if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
+ throw ENOENT(`access '${p}'`);
+ if (this.readOnly && mode & fs.constants.W_OK) {
+ throw EROFS(`access '${p}'`);
+ }
+ }
+ async statPromise(p, opts = { bigint: false }) {
+ if (opts.bigint)
+ return this.statSync(p, { bigint: true });
+ return this.statSync(p);
+ }
+ statSync(p, opts = { bigint: false, throwIfNoEntry: true }) {
+ const resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, opts.throwIfNoEntry);
+ if (resolvedP === void 0)
+ return void 0;
+ if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) {
+ if (opts.throwIfNoEntry === false)
+ return void 0;
+ throw ENOENT(`stat '${p}'`);
+ }
+ if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
+ throw ENOTDIR(`stat '${p}'`);
+ return this.statImpl(`stat '${p}'`, resolvedP, opts);
+ }
+ async fstatPromise(fd, opts) {
+ return this.fstatSync(fd, opts);
+ }
+ fstatSync(fd, opts) {
+ const entry = this.fds.get(fd);
+ if (typeof entry === `undefined`)
+ throw EBADF(`fstatSync`);
+ const { p } = entry;
+ const resolvedP = this.resolveFilename(`stat '${p}'`, p);
+ if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
+ throw ENOENT(`stat '${p}'`);
+ if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
+ throw ENOTDIR(`stat '${p}'`);
+ return this.statImpl(`fstat '${p}'`, resolvedP, opts);
+ }
+ async lstatPromise(p, opts = { bigint: false }) {
+ if (opts.bigint)
+ return this.lstatSync(p, { bigint: true });
+ return this.lstatSync(p);
+ }
+ lstatSync(p, opts = { bigint: false, throwIfNoEntry: true }) {
+ const resolvedP = this.resolveFilename(`lstat '${p}'`, p, false, opts.throwIfNoEntry);
+ if (resolvedP === void 0)
+ return void 0;
+ if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) {
+ if (opts.throwIfNoEntry === false)
+ return void 0;
+ throw ENOENT(`lstat '${p}'`);
+ }
+ if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
+ throw ENOTDIR(`lstat '${p}'`);
+ return this.statImpl(`lstat '${p}'`, resolvedP, opts);
+ }
+ statImpl(reason, p, opts = {}) {
+ const entry = this.entries.get(p);
+ if (typeof entry !== `undefined`) {
+ const stat = this.libzip.struct.statS();
+ const rc = this.libzip.statIndex(this.zip, entry, 0, 0, stat);
+ if (rc === -1)
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ const uid = this.stats.uid;
+ const gid = this.stats.gid;
+ const size = this.libzip.struct.statSize(stat) >>> 0;
+ const blksize = 512;
+ const blocks = Math.ceil(size / blksize);
+ const mtimeMs = (this.libzip.struct.statMtime(stat) >>> 0) * 1e3;
+ const atimeMs = mtimeMs;
+ const birthtimeMs = mtimeMs;
+ const ctimeMs = mtimeMs;
+ const atime = new Date(atimeMs);
+ const birthtime = new Date(birthtimeMs);
+ const ctime = new Date(ctimeMs);
+ const mtime = new Date(mtimeMs);
+ const type = this.listings.has(p) ? fs.constants.S_IFDIR : this.isSymbolicLink(entry) ? fs.constants.S_IFLNK : fs.constants.S_IFREG;
+ const defaultMode = type === fs.constants.S_IFDIR ? 493 : 420;
+ const mode = type | this.getUnixMode(entry, defaultMode) & 511;
+ const crc = this.libzip.struct.statCrc(stat);
+ const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc });
+ return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance;
+ }
+ if (this.listings.has(p)) {
+ const uid = this.stats.uid;
+ const gid = this.stats.gid;
+ const size = 0;
+ const blksize = 512;
+ const blocks = 0;
+ const atimeMs = this.stats.mtimeMs;
+ const birthtimeMs = this.stats.mtimeMs;
+ const ctimeMs = this.stats.mtimeMs;
+ const mtimeMs = this.stats.mtimeMs;
+ const atime = new Date(atimeMs);
+ const birthtime = new Date(birthtimeMs);
+ const ctime = new Date(ctimeMs);
+ const mtime = new Date(mtimeMs);
+ const mode = fs.constants.S_IFDIR | 493;
+ const crc = 0;
+ const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc });
+ return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance;
+ }
+ throw new Error(`Unreachable`);
+ }
+ getUnixMode(index, defaultMode) {
+ const rc = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S);
+ if (rc === -1)
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0;
+ if (opsys !== this.libzip.ZIP_OPSYS_UNIX)
+ return defaultMode;
+ return this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16;
+ }
+ registerListing(p) {
+ const existingListing = this.listings.get(p);
+ if (existingListing)
+ return existingListing;
+ const parentListing = this.registerListing(ppath.dirname(p));
+ parentListing.add(ppath.basename(p));
+ const newListing = /* @__PURE__ */ new Set();
+ this.listings.set(p, newListing);
+ return newListing;
+ }
+ registerEntry(p, index) {
+ const parentListing = this.registerListing(ppath.dirname(p));
+ parentListing.add(ppath.basename(p));
+ this.entries.set(p, index);
+ }
+ unregisterListing(p) {
+ this.listings.delete(p);
+ const parentListing = this.listings.get(ppath.dirname(p));
+ parentListing == null ? void 0 : parentListing.delete(ppath.basename(p));
+ }
+ unregisterEntry(p) {
+ this.unregisterListing(p);
+ const entry = this.entries.get(p);
+ this.entries.delete(p);
+ if (typeof entry === `undefined`)
+ return;
+ this.fileSources.delete(entry);
+ if (this.isSymbolicLink(entry)) {
+ this.symlinkCount--;
+ }
+ }
+ deleteEntry(p, index) {
+ this.unregisterEntry(p);
+ const rc = this.libzip.delete(this.zip, index);
+ if (rc === -1) {
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ }
+ }
+ resolveFilename(reason, p, resolveLastComponent = true, throwIfNoEntry = true) {
+ if (!this.ready)
+ throw EBUSY(`archive closed, ${reason}`);
+ let resolvedP = ppath.resolve(PortablePath.root, p);
+ if (resolvedP === `/`)
+ return PortablePath.root;
+ const fileIndex = this.entries.get(resolvedP);
+ if (resolveLastComponent && fileIndex !== void 0) {
+ if (this.symlinkCount !== 0 && this.isSymbolicLink(fileIndex)) {
+ const target = this.getFileSource(fileIndex).toString();
+ return this.resolveFilename(reason, ppath.resolve(ppath.dirname(resolvedP), target), true, throwIfNoEntry);
+ } else {
+ return resolvedP;
+ }
+ }
+ while (true) {
+ const parentP = this.resolveFilename(reason, ppath.dirname(resolvedP), true, throwIfNoEntry);
+ if (parentP === void 0)
+ return parentP;
+ const isDir = this.listings.has(parentP);
+ const doesExist = this.entries.has(parentP);
+ if (!isDir && !doesExist) {
+ if (throwIfNoEntry === false)
+ return void 0;
+ throw ENOENT(reason);
+ }
+ if (!isDir)
+ throw ENOTDIR(reason);
+ resolvedP = ppath.resolve(parentP, ppath.basename(resolvedP));
+ if (!resolveLastComponent || this.symlinkCount === 0)
+ break;
+ const index = this.libzip.name.locate(this.zip, resolvedP.slice(1), 0);
+ if (index === -1)
+ break;
+ if (this.isSymbolicLink(index)) {
+ const target = this.getFileSource(index).toString();
+ resolvedP = ppath.resolve(ppath.dirname(resolvedP), target);
+ } else {
+ break;
+ }
+ }
+ return resolvedP;
+ }
+ allocateBuffer(content) {
+ if (!Buffer.isBuffer(content))
+ content = Buffer.from(content);
+ const buffer = this.libzip.malloc(content.byteLength);
+ if (!buffer)
+ throw new Error(`Couldn't allocate enough memory`);
+ const heap = new Uint8Array(this.libzip.HEAPU8.buffer, buffer, content.byteLength);
+ heap.set(content);
+ return { buffer, byteLength: content.byteLength };
+ }
+ allocateUnattachedSource(content) {
+ const error = this.libzip.struct.errorS();
+ const { buffer, byteLength } = this.allocateBuffer(content);
+ const source = this.libzip.source.fromUnattachedBuffer(buffer, byteLength, 0, 1, error);
+ if (source === 0) {
+ this.libzip.free(error);
+ throw this.makeLibzipError(error);
+ }
+ return source;
+ }
+ allocateSource(content) {
+ const { buffer, byteLength } = this.allocateBuffer(content);
+ const source = this.libzip.source.fromBuffer(this.zip, buffer, byteLength, 0, 1);
+ if (source === 0) {
+ this.libzip.free(buffer);
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ }
+ return source;
+ }
+ setFileSource(p, content) {
+ const buffer = Buffer.isBuffer(content) ? content : Buffer.from(content);
+ const target = ppath.relative(PortablePath.root, p);
+ const lzSource = this.allocateSource(content);
+ try {
+ const newIndex = this.libzip.file.add(this.zip, target, lzSource, this.libzip.ZIP_FL_OVERWRITE);
+ if (newIndex === -1)
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ if (this.level !== `mixed`) {
+ const method = this.level === 0 ? this.libzip.ZIP_CM_STORE : this.libzip.ZIP_CM_DEFLATE;
+ const rc = this.libzip.file.setCompression(this.zip, newIndex, 0, method, this.level);
+ if (rc === -1) {
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ }
+ }
+ this.fileSources.set(newIndex, buffer);
+ return newIndex;
+ } catch (error) {
+ this.libzip.source.free(lzSource);
+ throw error;
+ }
+ }
+ isSymbolicLink(index) {
+ if (this.symlinkCount === 0)
+ return false;
+ const attrs = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S);
+ if (attrs === -1)
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0;
+ if (opsys !== this.libzip.ZIP_OPSYS_UNIX)
+ return false;
+ const attributes = this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16;
+ return (attributes & fs.constants.S_IFMT) === fs.constants.S_IFLNK;
+ }
+ getFileSource(index, opts = { asyncDecompress: false }) {
+ const cachedFileSource = this.fileSources.get(index);
+ if (typeof cachedFileSource !== `undefined`)
+ return cachedFileSource;
+ const stat = this.libzip.struct.statS();
+ const rc = this.libzip.statIndex(this.zip, index, 0, 0, stat);
+ if (rc === -1)
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ const size = this.libzip.struct.statCompSize(stat);
+ const compressionMethod = this.libzip.struct.statCompMethod(stat);
+ const buffer = this.libzip.malloc(size);
+ try {
+ const file = this.libzip.fopenIndex(this.zip, index, 0, this.libzip.ZIP_FL_COMPRESSED);
+ if (file === 0)
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ try {
+ const rc2 = this.libzip.fread(file, buffer, size, 0);
+ if (rc2 === -1)
+ throw this.makeLibzipError(this.libzip.file.getError(file));
+ else if (rc2 < size)
+ throw new Error(`Incomplete read`);
+ else if (rc2 > size)
+ throw new Error(`Overread`);
+ const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size);
+ const data = Buffer.from(memory);
+ if (compressionMethod === 0) {
+ this.fileSources.set(index, data);
+ return data;
+ } else if (opts.asyncDecompress) {
+ return new Promise((resolve, reject) => {
+ zlib__default.default.inflateRaw(data, (error, result) => {
+ if (error) {
+ reject(error);
+ } else {
+ this.fileSources.set(index, result);
+ resolve(result);
+ }
+ });
+ });
+ } else {
+ const decompressedData = zlib__default.default.inflateRawSync(data);
+ this.fileSources.set(index, decompressedData);
+ return decompressedData;
+ }
+ } finally {
+ this.libzip.fclose(file);
+ }
+ } finally {
+ this.libzip.free(buffer);
+ }
+ }
+ async fchmodPromise(fd, mask) {
+ return this.chmodPromise(this.fdToPath(fd, `fchmod`), mask);
+ }
+ fchmodSync(fd, mask) {
+ return this.chmodSync(this.fdToPath(fd, `fchmodSync`), mask);
+ }
+ async chmodPromise(p, mask) {
+ return this.chmodSync(p, mask);
+ }
+ chmodSync(p, mask) {
+ if (this.readOnly)
+ throw EROFS(`chmod '${p}'`);
+ mask &= 493;
+ const resolvedP = this.resolveFilename(`chmod '${p}'`, p, false);
+ const entry = this.entries.get(resolvedP);
+ if (typeof entry === `undefined`)
+ throw new Error(`Assertion failed: The entry should have been registered (${resolvedP})`);
+ const oldMod = this.getUnixMode(entry, fs.constants.S_IFREG | 0);
+ const newMod = oldMod & ~511 | mask;
+ const rc = this.libzip.file.setExternalAttributes(this.zip, entry, 0, 0, this.libzip.ZIP_OPSYS_UNIX, newMod << 16);
+ if (rc === -1) {
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ }
+ }
+ async fchownPromise(fd, uid, gid) {
+ return this.chownPromise(this.fdToPath(fd, `fchown`), uid, gid);
+ }
+ fchownSync(fd, uid, gid) {
+ return this.chownSync(this.fdToPath(fd, `fchownSync`), uid, gid);
+ }
+ async chownPromise(p, uid, gid) {
+ return this.chownSync(p, uid, gid);
+ }
+ chownSync(p, uid, gid) {
+ throw new Error(`Unimplemented`);
+ }
+ async renamePromise(oldP, newP) {
+ return this.renameSync(oldP, newP);
+ }
+ renameSync(oldP, newP) {
+ throw new Error(`Unimplemented`);
+ }
+ async copyFilePromise(sourceP, destP, flags) {
+ const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags);
+ const source = await this.getFileSource(indexSource, { asyncDecompress: true });
+ const newIndex = this.setFileSource(resolvedDestP, source);
+ if (newIndex !== indexDest) {
+ this.registerEntry(resolvedDestP, newIndex);
+ }
+ }
+ copyFileSync(sourceP, destP, flags = 0) {
+ const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags);
+ const source = this.getFileSource(indexSource);
+ const newIndex = this.setFileSource(resolvedDestP, source);
+ if (newIndex !== indexDest) {
+ this.registerEntry(resolvedDestP, newIndex);
+ }
+ }
+ prepareCopyFile(sourceP, destP, flags = 0) {
+ if (this.readOnly)
+ throw EROFS(`copyfile '${sourceP} -> '${destP}'`);
+ if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0)
+ throw ENOSYS(`unsupported clone operation`, `copyfile '${sourceP}' -> ${destP}'`);
+ const resolvedSourceP = this.resolveFilename(`copyfile '${sourceP} -> ${destP}'`, sourceP);
+ const indexSource = this.entries.get(resolvedSourceP);
+ if (typeof indexSource === `undefined`)
+ throw EINVAL(`copyfile '${sourceP}' -> '${destP}'`);
+ const resolvedDestP = this.resolveFilename(`copyfile '${sourceP}' -> ${destP}'`, destP);
+ const indexDest = this.entries.get(resolvedDestP);
+ if ((flags & (fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE_FORCE)) !== 0 && typeof indexDest !== `undefined`)
+ throw EEXIST(`copyfile '${sourceP}' -> '${destP}'`);
+ return {
+ indexSource,
+ resolvedDestP,
+ indexDest
+ };
+ }
+ async appendFilePromise(p, content, opts) {
+ if (this.readOnly)
+ throw EROFS(`open '${p}'`);
+ if (typeof opts === `undefined`)
+ opts = { flag: `a` };
+ else if (typeof opts === `string`)
+ opts = { flag: `a`, encoding: opts };
+ else if (typeof opts.flag === `undefined`)
+ opts = { flag: `a`, ...opts };
+ return this.writeFilePromise(p, content, opts);
+ }
+ appendFileSync(p, content, opts = {}) {
+ if (this.readOnly)
+ throw EROFS(`open '${p}'`);
+ if (typeof opts === `undefined`)
+ opts = { flag: `a` };
+ else if (typeof opts === `string`)
+ opts = { flag: `a`, encoding: opts };
+ else if (typeof opts.flag === `undefined`)
+ opts = { flag: `a`, ...opts };
+ return this.writeFileSync(p, content, opts);
+ }
+ fdToPath(fd, reason) {
+ var _a;
+ const path = (_a = this.fds.get(fd)) == null ? void 0 : _a.p;
+ if (typeof path === `undefined`)
+ throw EBADF(reason);
+ return path;
+ }
+ async writeFilePromise(p, content, opts) {
+ const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts);
+ if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`))
+ content = Buffer.concat([await this.getFileSource(index, { asyncDecompress: true }), Buffer.from(content)]);
+ if (encoding !== null)
+ content = content.toString(encoding);
+ const newIndex = this.setFileSource(resolvedP, content);
+ if (newIndex !== index)
+ this.registerEntry(resolvedP, newIndex);
+ if (mode !== null) {
+ await this.chmodPromise(resolvedP, mode);
+ }
+ }
+ writeFileSync(p, content, opts) {
+ const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts);
+ if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`))
+ content = Buffer.concat([this.getFileSource(index), Buffer.from(content)]);
+ if (encoding !== null)
+ content = content.toString(encoding);
+ const newIndex = this.setFileSource(resolvedP, content);
+ if (newIndex !== index)
+ this.registerEntry(resolvedP, newIndex);
+ if (mode !== null) {
+ this.chmodSync(resolvedP, mode);
+ }
+ }
+ prepareWriteFile(p, opts) {
+ if (typeof p === `number`)
+ p = this.fdToPath(p, `read`);
+ if (this.readOnly)
+ throw EROFS(`open '${p}'`);
+ const resolvedP = this.resolveFilename(`open '${p}'`, p);
+ if (this.listings.has(resolvedP))
+ throw EISDIR(`open '${p}'`);
+ let encoding = null, mode = null;
+ if (typeof opts === `string`) {
+ encoding = opts;
+ } else if (typeof opts === `object`) {
+ ({
+ encoding = null,
+ mode = null
+ } = opts);
+ }
+ const index = this.entries.get(resolvedP);
+ return {
+ encoding,
+ mode,
+ resolvedP,
+ index
+ };
+ }
+ async unlinkPromise(p) {
+ return this.unlinkSync(p);
+ }
+ unlinkSync(p) {
+ if (this.readOnly)
+ throw EROFS(`unlink '${p}'`);
+ const resolvedP = this.resolveFilename(`unlink '${p}'`, p);
+ if (this.listings.has(resolvedP))
+ throw EISDIR(`unlink '${p}'`);
+ const index = this.entries.get(resolvedP);
+ if (typeof index === `undefined`)
+ throw EINVAL(`unlink '${p}'`);
+ this.deleteEntry(resolvedP, index);
+ }
+ async utimesPromise(p, atime, mtime) {
+ return this.utimesSync(p, atime, mtime);
+ }
+ utimesSync(p, atime, mtime) {
+ if (this.readOnly)
+ throw EROFS(`utimes '${p}'`);
+ const resolvedP = this.resolveFilename(`utimes '${p}'`, p);
+ this.utimesImpl(resolvedP, mtime);
+ }
+ async lutimesPromise(p, atime, mtime) {
+ return this.lutimesSync(p, atime, mtime);
+ }
+ lutimesSync(p, atime, mtime) {
+ if (this.readOnly)
+ throw EROFS(`lutimes '${p}'`);
+ const resolvedP = this.resolveFilename(`utimes '${p}'`, p, false);
+ this.utimesImpl(resolvedP, mtime);
+ }
+ utimesImpl(resolvedP, mtime) {
+ if (this.listings.has(resolvedP)) {
+ if (!this.entries.has(resolvedP))
+ this.hydrateDirectory(resolvedP);
+ }
+ const entry = this.entries.get(resolvedP);
+ if (entry === void 0)
+ throw new Error(`Unreachable`);
+ const rc = this.libzip.file.setMtime(this.zip, entry, 0, toUnixTimestamp(mtime), 0);
+ if (rc === -1) {
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ }
+ }
+ async mkdirPromise(p, opts) {
+ return this.mkdirSync(p, opts);
+ }
+ mkdirSync(p, { mode = 493, recursive = false } = {}) {
+ if (recursive)
+ return this.mkdirpSync(p, { chmod: mode });
+ if (this.readOnly)
+ throw EROFS(`mkdir '${p}'`);
+ const resolvedP = this.resolveFilename(`mkdir '${p}'`, p);
+ if (this.entries.has(resolvedP) || this.listings.has(resolvedP))
+ throw EEXIST(`mkdir '${p}'`);
+ this.hydrateDirectory(resolvedP);
+ this.chmodSync(resolvedP, mode);
+ return void 0;
+ }
+ async rmdirPromise(p, opts) {
+ return this.rmdirSync(p, opts);
+ }
+ rmdirSync(p, { recursive = false } = {}) {
+ if (this.readOnly)
+ throw EROFS(`rmdir '${p}'`);
+ if (recursive) {
+ this.removeSync(p);
+ return;
+ }
+ const resolvedP = this.resolveFilename(`rmdir '${p}'`, p);
+ const directoryListing = this.listings.get(resolvedP);
+ if (!directoryListing)
+ throw ENOTDIR(`rmdir '${p}'`);
+ if (directoryListing.size > 0)
+ throw ENOTEMPTY(`rmdir '${p}'`);
+ const index = this.entries.get(resolvedP);
+ if (typeof index === `undefined`)
+ throw EINVAL(`rmdir '${p}'`);
+ this.deleteEntry(p, index);
+ }
+ hydrateDirectory(resolvedP) {
+ const index = this.libzip.dir.add(this.zip, ppath.relative(PortablePath.root, resolvedP));
+ if (index === -1)
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ this.registerListing(resolvedP);
+ this.registerEntry(resolvedP, index);
+ return index;
+ }
+ async linkPromise(existingP, newP) {
+ return this.linkSync(existingP, newP);
+ }
+ linkSync(existingP, newP) {
+ throw EOPNOTSUPP(`link '${existingP}' -> '${newP}'`);
+ }
+ async symlinkPromise(target, p) {
+ return this.symlinkSync(target, p);
+ }
+ symlinkSync(target, p) {
+ if (this.readOnly)
+ throw EROFS(`symlink '${target}' -> '${p}'`);
+ const resolvedP = this.resolveFilename(`symlink '${target}' -> '${p}'`, p);
+ if (this.listings.has(resolvedP))
+ throw EISDIR(`symlink '${target}' -> '${p}'`);
+ if (this.entries.has(resolvedP))
+ throw EEXIST(`symlink '${target}' -> '${p}'`);
+ const index = this.setFileSource(resolvedP, target);
+ this.registerEntry(resolvedP, index);
+ const rc = this.libzip.file.setExternalAttributes(this.zip, index, 0, 0, this.libzip.ZIP_OPSYS_UNIX, (fs.constants.S_IFLNK | 511) << 16);
+ if (rc === -1)
+ throw this.makeLibzipError(this.libzip.getError(this.zip));
+ this.symlinkCount += 1;
+ }
+ async readFilePromise(p, encoding) {
+ if (typeof encoding === `object`)
+ encoding = encoding ? encoding.encoding : void 0;
+ const data = await this.readFileBuffer(p, { asyncDecompress: true });
+ return encoding ? data.toString(encoding) : data;
+ }
+ readFileSync(p, encoding) {
+ if (typeof encoding === `object`)
+ encoding = encoding ? encoding.encoding : void 0;
+ const data = this.readFileBuffer(p);
+ return encoding ? data.toString(encoding) : data;
+ }
+ readFileBuffer(p, opts = { asyncDecompress: false }) {
+ if (typeof p === `number`)
+ p = this.fdToPath(p, `read`);
+ const resolvedP = this.resolveFilename(`open '${p}'`, p);
+ if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
+ throw ENOENT(`open '${p}'`);
+ if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
+ throw ENOTDIR(`open '${p}'`);
+ if (this.listings.has(resolvedP))
+ throw EISDIR(`read`);
+ const entry = this.entries.get(resolvedP);
+ if (entry === void 0)
+ throw new Error(`Unreachable`);
+ return this.getFileSource(entry, opts);
+ }
+ async readdirPromise(p, opts) {
+ return this.readdirSync(p, opts);
+ }
+ readdirSync(p, opts) {
+ const resolvedP = this.resolveFilename(`scandir '${p}'`, p);
+ if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
+ throw ENOENT(`scandir '${p}'`);
+ const directoryListing = this.listings.get(resolvedP);
+ if (!directoryListing)
+ throw ENOTDIR(`scandir '${p}'`);
+ const entries = [...directoryListing];
+ if (!(opts == null ? void 0 : opts.withFileTypes))
+ return entries;
+ return entries.map((name) => {
+ return Object.assign(this.statImpl(`lstat`, ppath.join(p, name)), {
+ name
+ });
+ });
+ }
+ async readlinkPromise(p) {
+ const entry = this.prepareReadlink(p);
+ return (await this.getFileSource(entry, { asyncDecompress: true })).toString();
+ }
+ readlinkSync(p) {
+ const entry = this.prepareReadlink(p);
+ return this.getFileSource(entry).toString();
+ }
+ prepareReadlink(p) {
+ const resolvedP = this.resolveFilename(`readlink '${p}'`, p, false);
+ if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
+ throw ENOENT(`readlink '${p}'`);
+ if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
+ throw ENOTDIR(`open '${p}'`);
+ if (this.listings.has(resolvedP))
+ throw EINVAL(`readlink '${p}'`);
+ const entry = this.entries.get(resolvedP);
+ if (entry === void 0)
+ throw new Error(`Unreachable`);
+ if (!this.isSymbolicLink(entry))
+ throw EINVAL(`readlink '${p}'`);
+ return entry;
+ }
+ async truncatePromise(p, len = 0) {
+ const resolvedP = this.resolveFilename(`open '${p}'`, p);
+ const index = this.entries.get(resolvedP);
+ if (typeof index === `undefined`)
+ throw EINVAL(`open '${p}'`);
+ const source = await this.getFileSource(index, { asyncDecompress: true });
+ const truncated = Buffer.alloc(len, 0);
+ source.copy(truncated);
+ return await this.writeFilePromise(p, truncated);
+ }
+ truncateSync(p, len = 0) {
+ const resolvedP = this.resolveFilename(`open '${p}'`, p);
+ const index = this.entries.get(resolvedP);
+ if (typeof index === `undefined`)
+ throw EINVAL(`open '${p}'`);
+ const source = this.getFileSource(index);
+ const truncated = Buffer.alloc(len, 0);
+ source.copy(truncated);
+ return this.writeFileSync(p, truncated);
+ }
+ async ftruncatePromise(fd, len) {
+ return this.truncatePromise(this.fdToPath(fd, `ftruncate`), len);
+ }
+ ftruncateSync(fd, len) {
+ return this.truncateSync(this.fdToPath(fd, `ftruncateSync`), len);
+ }
+ watch(p, a, b) {
+ let persistent;
+ switch (typeof a) {
+ case `function`:
+ case `string`:
+ case `undefined`:
+ {
+ persistent = true;
+ }
+ break;
+ default:
+ {
+ ({ persistent = true } = a);
+ }
+ break;
+ }
+ if (!persistent)
+ return { on: () => {
+ }, close: () => {
+ } };
+ const interval = setInterval(() => {
+ }, 24 * 60 * 60 * 1e3);
+ return { on: () => {
+ }, close: () => {
+ clearInterval(interval);
+ } };
+ }
+ watchFile(p, a, b) {
+ const resolvedP = ppath.resolve(PortablePath.root, p);
+ return watchFile(this, resolvedP, a, b);
+ }
+ unwatchFile(p, cb) {
+ const resolvedP = ppath.resolve(PortablePath.root, p);
+ return unwatchFile(this, resolvedP, cb);
+ }
+}
+
+setFactory(() => {
+ const emZip = createModule();
+ return makeInterface(emZip);
+});
+
+var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {
+ ErrorCode2["API_ERROR"] = `API_ERROR`;
+ ErrorCode2["BUILTIN_NODE_RESOLUTION_FAILED"] = `BUILTIN_NODE_RESOLUTION_FAILED`;
+ ErrorCode2["EXPORTS_RESOLUTION_FAILED"] = `EXPORTS_RESOLUTION_FAILED`;
+ ErrorCode2["MISSING_DEPENDENCY"] = `MISSING_DEPENDENCY`;
+ ErrorCode2["MISSING_PEER_DEPENDENCY"] = `MISSING_PEER_DEPENDENCY`;
+ ErrorCode2["QUALIFIED_PATH_RESOLUTION_FAILED"] = `QUALIFIED_PATH_RESOLUTION_FAILED`;
+ ErrorCode2["INTERNAL"] = `INTERNAL`;
+ ErrorCode2["UNDECLARED_DEPENDENCY"] = `UNDECLARED_DEPENDENCY`;
+ ErrorCode2["UNSUPPORTED"] = `UNSUPPORTED`;
+ return ErrorCode2;
+})(ErrorCode || {});
+const MODULE_NOT_FOUND_ERRORS = /* @__PURE__ */ new Set([
+ "BUILTIN_NODE_RESOLUTION_FAILED" /* BUILTIN_NODE_RESOLUTION_FAILED */,
+ "MISSING_DEPENDENCY" /* MISSING_DEPENDENCY */,
+ "MISSING_PEER_DEPENDENCY" /* MISSING_PEER_DEPENDENCY */,
+ "QUALIFIED_PATH_RESOLUTION_FAILED" /* QUALIFIED_PATH_RESOLUTION_FAILED */,
+ "UNDECLARED_DEPENDENCY" /* UNDECLARED_DEPENDENCY */
+]);
+function makeError(pnpCode, message, data = {}, code) {
+ code ?? (code = MODULE_NOT_FOUND_ERRORS.has(pnpCode) ? `MODULE_NOT_FOUND` : pnpCode);
+ const propertySpec = {
+ configurable: true,
+ writable: true,
+ enumerable: false
+ };
+ return Object.defineProperties(new Error(message), {
+ code: {
+ ...propertySpec,
+ value: code
+ },
+ pnpCode: {
+ ...propertySpec,
+ value: pnpCode
+ },
+ data: {
+ ...propertySpec,
+ value: data
+ }
+ });
+}
+function getIssuerModule(parent) {
+ let issuer = parent;
+ while (issuer && (issuer.id === `[eval]` || issuer.id === `<repl>` || !issuer.filename))
+ issuer = issuer.parent;
+ return issuer || null;
+}
+function getPathForDisplay(p) {
+ return npath.normalize(npath.fromPortablePath(p));
+}
+
+const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10));
+const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13;
+
+const builtinModules = new Set(require$$0.Module.builtinModules || Object.keys(process.binding(`natives`)));
+const isBuiltinModule = (request) => request.startsWith(`node:`) || builtinModules.has(request);
+function readPackageScope(checkPath) {
+ const rootSeparatorIndex = checkPath.indexOf(npath.sep);
+ let separatorIndex;
+ do {
+ separatorIndex = checkPath.lastIndexOf(npath.sep);
+ checkPath = checkPath.slice(0, separatorIndex);
+ if (checkPath.endsWith(`${npath.sep}node_modules`))
+ return false;
+ const pjson = readPackage(checkPath + npath.sep);
+ if (pjson) {
+ return {
+ data: pjson,
+ path: checkPath
+ };
+ }
+ } while (separatorIndex > rootSeparatorIndex);
+ return false;
+}
+function readPackage(requestPath) {
+ const jsonPath = npath.resolve(requestPath, `package.json`);
+ if (!fs__default.default.existsSync(jsonPath))
+ return null;
+ return JSON.parse(fs__default.default.readFileSync(jsonPath, `utf8`));
+}
+function ERR_REQUIRE_ESM(filename, parentPath = null) {
+ const basename = parentPath && path__default.default.basename(filename) === path__default.default.basename(parentPath) ? filename : path__default.default.basename(filename);
+ const msg = `require() of ES Module ${filename}${parentPath ? ` from ${parentPath}` : ``} not supported.
+Instead change the require of ${basename} in ${parentPath} to a dynamic import() which is available in all CommonJS modules.`;
+ const err = new Error(msg);
+ err.code = `ERR_REQUIRE_ESM`;
+ return err;
+}
+function reportRequiredFilesToWatchMode(files) {
+ if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) {
+ files = files.map((filename) => npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename))));
+ if (WATCH_MODE_MESSAGE_USES_ARRAYS) {
+ process.send({ "watch:require": files });
+ } else {
+ for (const filename of files) {
+ process.send({ "watch:require": filename });
+ }
+ }
+ }
+}
+
+function applyPatch(pnpapi, opts) {
+ const defaultCache = {};
+ let enableNativeHooks = true;
+ process.versions.pnp = String(pnpapi.VERSIONS.std);
+ const moduleExports = require$$0__default.default;
+ moduleExports.findPnpApi = (lookupSource) => {
+ const lookupPath = lookupSource instanceof url.URL ? url.fileURLToPath(lookupSource) : lookupSource;
+ const apiPath = opts.manager.findApiPathFor(lookupPath);
+ if (apiPath === null)
+ return null;
+ const apiEntry = opts.manager.getApiEntry(apiPath, true);
+ return apiEntry.instance.findPackageLocator(lookupPath) ? apiEntry.instance : null;
+ };
+ function getRequireStack(parent) {
+ const requireStack = [];
+ for (let cursor = parent; cursor; cursor = cursor.parent)
+ requireStack.push(cursor.filename || cursor.id);
+ return requireStack;
+ }
+ const originalModuleLoad = require$$0.Module._load;
+ require$$0.Module._load = function(request, parent, isMain) {
+ if (!enableNativeHooks)
+ return originalModuleLoad.call(require$$0.Module, request, parent, isMain);
+ if (isBuiltinModule(request)) {
+ try {
+ enableNativeHooks = false;
+ return originalModuleLoad.call(require$$0.Module, request, parent, isMain);
+ } finally {
+ enableNativeHooks = true;
+ }
+ }
+ const parentApiPath = opts.manager.getApiPathFromParent(parent);
+ const parentApi = parentApiPath !== null ? opts.manager.getApiEntry(parentApiPath, true).instance : null;
+ if (parentApi === null)
+ return originalModuleLoad(request, parent, isMain);
+ if (request === `pnpapi`)
+ return parentApi;
+ const modulePath = require$$0.Module._resolveFilename(request, parent, isMain);
+ const isOwnedByRuntime = parentApi !== null ? parentApi.findPackageLocator(modulePath) !== null : false;
+ const moduleApiPath = isOwnedByRuntime ? parentApiPath : opts.manager.findApiPathFor(npath.dirname(modulePath));
+ const entry = moduleApiPath !== null ? opts.manager.getApiEntry(moduleApiPath) : { instance: null, cache: defaultCache };
+ const cacheEntry = entry.cache[modulePath];
+ if (cacheEntry) {
+ if (cacheEntry.loaded === false && cacheEntry.isLoading !== true) {
+ try {
+ cacheEntry.isLoading = true;
+ if (isMain) {
+ process.mainModule = cacheEntry;
+ cacheEntry.id = `.`;
+ }
+ cacheEntry.load(modulePath);
+ } finally {
+ cacheEntry.isLoading = false;
+ }
+ }
+ return cacheEntry.exports;
+ }
+ const module = new require$$0.Module(modulePath, parent ?? void 0);
+ module.pnpApiPath = moduleApiPath;
+ reportRequiredFilesToWatchMode([modulePath]);
+ entry.cache[modulePath] = module;
+ if (isMain) {
+ process.mainModule = module;
+ module.id = `.`;
+ }
+ let hasThrown = true;
+ try {
+ module.isLoading = true;
+ module.load(modulePath);
+ hasThrown = false;
+ } finally {
+ module.isLoading = false;
+ if (hasThrown) {
+ delete require$$0.Module._cache[modulePath];
+ }
+ }
+ return module.exports;
+ };
+ function getIssuerSpecsFromPaths(paths) {
+ return paths.map((path) => ({
+ apiPath: opts.manager.findApiPathFor(path),
+ path,
+ module: null
+ }));
+ }
+ function getIssuerSpecsFromModule(module) {
+ if (module && module.id !== `<repl>` && module.id !== `internal/preload` && !module.parent && !module.filename && module.paths.length > 0) {
+ return [{
+ apiPath: opts.manager.findApiPathFor(module.paths[0]),
+ path: module.paths[0],
+ module
+ }];
+ }
+ const issuer = getIssuerModule(module);
+ if (issuer !== null) {
+ const path = npath.dirname(issuer.filename);
+ const apiPath = opts.manager.getApiPathFromParent(issuer);
+ return [{ apiPath, path, module }];
+ } else {
+ const path = process.cwd();
+ const apiPath = opts.manager.findApiPathFor(npath.join(path, `[file]`)) ?? opts.manager.getApiPathFromParent(null);
+ return [{ apiPath, path, module }];
+ }
+ }
+ function makeFakeParent(path) {
+ const fakeParent = new require$$0.Module(``);
+ const fakeFilePath = npath.join(path, `[file]`);
+ fakeParent.paths = require$$0.Module._nodeModulePaths(fakeFilePath);
+ return fakeParent;
+ }
+ const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:@[^/]+\/)?[^/]+)\/*(.*|)$/;
+ const originalModuleResolveFilename = require$$0.Module._resolveFilename;
+ require$$0.Module._resolveFilename = function(request, parent, isMain, options) {
+ if (isBuiltinModule(request))
+ return request;
+ if (!enableNativeHooks)
+ return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, options);
+ if (options && options.plugnplay === false) {
+ const { plugnplay, ...rest } = options;
+ const forwardedOptions = Object.keys(rest).length > 0 ? rest : void 0;
+ try {
+ enableNativeHooks = false;
+ return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, forwardedOptions);
+ } finally {
+ enableNativeHooks = true;
+ }
+ }
+ if (options) {
+ const optionNames = new Set(Object.keys(options));
+ optionNames.delete(`paths`);
+ optionNames.delete(`plugnplay`);
+ if (optionNames.size > 0) {
+ throw makeError(
+ ErrorCode.UNSUPPORTED,
+ `Some options passed to require() aren't supported by PnP yet (${Array.from(optionNames).join(`, `)})`
+ );
+ }
+ }
+ const issuerSpecs = options && options.paths ? getIssuerSpecsFromPaths(options.paths) : getIssuerSpecsFromModule(parent);
+ if (request.match(pathRegExp) === null) {
+ const parentDirectory = (parent == null ? void 0 : parent.filename) != null ? npath.dirname(parent.filename) : null;
+ const absoluteRequest = npath.isAbsolute(request) ? request : parentDirectory !== null ? npath.resolve(parentDirectory, request) : null;
+ if (absoluteRequest !== null) {
+ const apiPath = parentDirectory === npath.dirname(absoluteRequest) && (parent == null ? void 0 : parent.pnpApiPath) ? parent.pnpApiPath : opts.manager.findApiPathFor(absoluteRequest);
+ if (apiPath !== null) {
+ issuerSpecs.unshift({
+ apiPath,
+ path: parentDirectory,
+ module: null
+ });
+ }
+ }
+ }
+ let firstError;
+ for (const { apiPath, path, module } of issuerSpecs) {
+ let resolution;
+ const issuerApi = apiPath !== null ? opts.manager.getApiEntry(apiPath, true).instance : null;
+ try {
+ if (issuerApi !== null) {
+ resolution = issuerApi.resolveRequest(request, path !== null ? `${path}/` : null);
+ } else {
+ if (path === null)
+ throw new Error(`Assertion failed: Expected the path to be set`);
+ resolution = originalModuleResolveFilename.call(require$$0.Module, request, module || makeFakeParent(path), isMain);
+ }
+ } catch (error) {
+ firstError = firstError || error;
+ continue;
+ }
+ if (resolution !== null) {
+ return resolution;
+ }
+ }
+ const requireStack = getRequireStack(parent);
+ Object.defineProperty(firstError, `requireStack`, {
+ configurable: true,
+ writable: true,
+ enumerable: false,
+ value: requireStack
+ });
+ if (requireStack.length > 0)
+ firstError.message += `
+Require stack:
+- ${requireStack.join(`
+- `)}`;
+ if (typeof firstError.pnpCode === `string`)
+ Error.captureStackTrace(firstError);
+ throw firstError;
+ };
+ const originalFindPath = require$$0.Module._findPath;
+ require$$0.Module._findPath = function(request, paths, isMain) {
+ if (request === `pnpapi`)
+ return false;
+ if (!enableNativeHooks)
+ return originalFindPath.call(require$$0.Module, request, paths, isMain);
+ const isAbsolute = npath.isAbsolute(request);
+ if (isAbsolute)
+ paths = [``];
+ else if (!paths || paths.length === 0)
+ return false;
+ for (const path of paths) {
+ let resolution;
+ try {
+ const pnpApiPath = opts.manager.findApiPathFor(isAbsolute ? request : path);
+ if (pnpApiPath !== null) {
+ const api = opts.manager.getApiEntry(pnpApiPath, true).instance;
+ resolution = api.resolveRequest(request, path) || false;
+ } else {
+ resolution = originalFindPath.call(require$$0.Module, request, [path], isMain);
+ }
+ } catch (error) {
+ continue;
+ }
+ if (resolution) {
+ return resolution;
+ }
+ }
+ return false;
+ };
+ const originalExtensionJSFunction = require$$0.Module._extensions[`.js`];
+ require$$0.Module._extensions[`.js`] = function(module, filename) {
+ var _a, _b;
+ if (filename.endsWith(`.js`)) {
+ const pkg = readPackageScope(filename);
+ if (pkg && ((_a = pkg.data) == null ? void 0 : _a.type) === `module`) {
+ const err = ERR_REQUIRE_ESM(filename, (_b = module.parent) == null ? void 0 : _b.filename);
+ Error.captureStackTrace(err);
+ throw err;
+ }
+ }
+ originalExtensionJSFunction.call(this, module, filename);
+ };
+ const originalDlopen = process.dlopen;
+ process.dlopen = function(...args) {
+ const [module, filename, ...rest] = args;
+ return originalDlopen.call(
+ this,
+ module,
+ npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename))),
+ ...rest
+ );
+ };
+ const originalEmit = process.emit;
+ process.emit = function(name, data, ...args) {
+ if (name === `warning` && typeof data === `object` && data.name === `ExperimentalWarning` && (data.message.includes(`--experimental-loader`) || data.message.includes(`Custom ESM Loaders is an experimental feature`)))
+ return false;
+ return originalEmit.apply(process, arguments);
+ };
+ patchFs(fs__default.default, new PosixFS(opts.fakeFs));
+}
+
+function hydrateRuntimeState(data, { basePath }) {
+ const portablePath = npath.toPortablePath(basePath);
+ const absolutePortablePath = ppath.resolve(portablePath);
+ const ignorePattern = data.ignorePatternData !== null ? new RegExp(data.ignorePatternData) : null;
+ const packageLocatorsByLocations = /* @__PURE__ */ new Map();
+ const packageRegistry = new Map(data.packageRegistryData.map(([packageName, packageStoreData]) => {
+ return [packageName, new Map(packageStoreData.map(([packageReference, packageInformationData]) => {
+ if (packageName === null !== (packageReference === null))
+ throw new Error(`Assertion failed: The name and reference should be null, or neither should`);
+ const discardFromLookup = packageInformationData.discardFromLookup ?? false;
+ const packageLocator = { name: packageName, reference: packageReference };
+ const entry = packageLocatorsByLocations.get(packageInformationData.packageLocation);
+ if (!entry) {
+ packageLocatorsByLocations.set(packageInformationData.packageLocation, { locator: packageLocator, discardFromLookup });
+ } else {
+ entry.discardFromLookup = entry.discardFromLookup && discardFromLookup;
+ if (!discardFromLookup) {
+ entry.locator = packageLocator;
+ }
+ }
+ let resolvedPackageLocation = null;
+ return [packageReference, {
+ packageDependencies: new Map(packageInformationData.packageDependencies),
+ packagePeers: new Set(packageInformationData.packagePeers),
+ linkType: packageInformationData.linkType,
+ discardFromLookup,
+ get packageLocation() {
+ return resolvedPackageLocation || (resolvedPackageLocation = ppath.join(absolutePortablePath, packageInformationData.packageLocation));
+ }
+ }];
+ }))];
+ }));
+ const fallbackExclusionList = new Map(data.fallbackExclusionList.map(([packageName, packageReferences]) => {
+ return [packageName, new Set(packageReferences)];
+ }));
+ const fallbackPool = new Map(data.fallbackPool);
+ const dependencyTreeRoots = data.dependencyTreeRoots;
+ const enableTopLevelFallback = data.enableTopLevelFallback;
+ return {
+ basePath: portablePath,
+ dependencyTreeRoots,
+ enableTopLevelFallback,
+ fallbackExclusionList,
+ fallbackPool,
+ ignorePattern,
+ packageLocatorsByLocations,
+ packageRegistry
+ };
+}
+
+/**
+ * @param {object} exports
+ * @param {Set<string>} keys
+ */
+function loop(exports, keys) {
+ if (typeof exports === 'string') {
+ return exports;
+ }
+
+ if (exports) {
+ let idx, tmp;
+ if (Array.isArray(exports)) {
+ for (idx=0; idx < exports.length; idx++) {
+ if (tmp = loop(exports[idx], keys)) return tmp;
+ }
+ } else {
+ for (idx in exports) {
+ if (keys.has(idx)) {
+ return loop(exports[idx], keys);
+ }
+ }
+ }
+ }
+}
+
+/**
+ * @param {string} name The package name
+ * @param {string} entry The target entry, eg "."
+ * @param {number} [condition] Unmatched condition?
+ */
+function bail(name, entry, condition) {
+ throw new Error(
+ condition
+ ? `No known conditions for "${entry}" entry in "${name}" package`
+ : `Missing "${entry}" export in "${name}" package`
+ );
+}
+
+/**
+ * @param {string} name the package name
+ * @param {string} entry the target path/import
+ */
+function toName(name, entry) {
+ return entry === name ? '.'
+ : entry[0] === '.' ? entry
+ : entry.replace(new RegExp('^' + name + '\/'), './');
+}
+
+/**
+ * @param {object} pkg package.json contents
+ * @param {string} [entry] entry name or import path
+ * @param {object} [options]
+ * @param {boolean} [options.browser]
+ * @param {boolean} [options.require]
+ * @param {string[]} [options.conditions]
+ * @param {boolean} [options.unsafe]
+ */
+function resolve(pkg, entry='.', options={}) {
+ let { name, exports } = pkg;
+
+ if (exports) {
+ let { browser, require, unsafe, conditions=[] } = options;
+
+ let target = toName(name, entry);
+ if (target[0] !== '.') target = './' + target;
+
+ if (typeof exports === 'string') {
+ return target === '.' ? exports : bail(name, target);
+ }
+
+ let allows = new Set(['default', ...conditions]);
+ unsafe || allows.add(require ? 'require' : 'import');
+ unsafe || allows.add(browser ? 'browser' : 'node');
+
+ let key, tmp, isSingle=false;
+
+ for (key in exports) {
+ isSingle = key[0] !== '.';
+ break;
+ }
+
+ if (isSingle) {
+ return target === '.'
+ ? loop(exports, allows) || bail(name, target, 1)
+ : bail(name, target);
+ }
+
+ if (tmp = exports[target]) {
+ return loop(tmp, allows) || bail(name, target, 1);
+ }
+
+ for (key in exports) {
+ tmp = key[key.length - 1];
+ if (tmp === '/' && target.startsWith(key)) {
+ return (tmp = loop(exports[key], allows))
+ ? (tmp + target.substring(key.length))
+ : bail(name, target, 1);
+ }
+ if (tmp === '*' && target.startsWith(key.slice(0, -1))) {
+ // do not trigger if no *content* to inject
+ if (target.substring(key.length - 1).length > 0) {
+ return (tmp = loop(exports[key], allows))
+ ? tmp.replace('*', target.substring(key.length - 1))
+ : bail(name, target, 1);
+ }
+ }
+ }
+
+ return bail(name, target);
+ }
+}
+
+const ArrayIsArray = Array.isArray;
+const JSONStringify = JSON.stringify;
+const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames;
+const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
+const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string);
+const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest);
+const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest);
+const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest);
+const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest);
+const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest);
+const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest);
+const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest);
+const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest);
+const SafeMap = Map;
+const JSONParse = JSON.parse;
+
+function createErrorType(code, messageCreator, errorType) {
+ return class extends errorType {
+ constructor(...args) {
+ super(messageCreator(...args));
+ this.code = code;
+ this.name = `${errorType.name} [${code}]`;
+ }
+ };
+}
+const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType(
+ `ERR_PACKAGE_IMPORT_NOT_DEFINED`,
+ (specifier, packagePath, base) => {
+ return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`;
+ },
+ TypeError
+);
+const ERR_INVALID_MODULE_SPECIFIER = createErrorType(
+ `ERR_INVALID_MODULE_SPECIFIER`,
+ (request, reason, base = void 0) => {
+ return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`;
+ },
+ TypeError
+);
+const ERR_INVALID_PACKAGE_TARGET = createErrorType(
+ `ERR_INVALID_PACKAGE_TARGET`,
+ (pkgPath, key, target, isImport = false, base = void 0) => {
+ const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`);
+ if (key === `.`) {
+ assert__default.default(isImport === false);
+ return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`;
+ }
+ return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify(
+ target
+ )} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`;
+ },
+ Error
+);
+const ERR_INVALID_PACKAGE_CONFIG = createErrorType(
+ `ERR_INVALID_PACKAGE_CONFIG`,
+ (path, base, message) => {
+ return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`;
+ },
+ Error
+);
+
+function filterOwnProperties(source, keys) {
+ const filtered = /* @__PURE__ */ Object.create(null);
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+ if (ObjectPrototypeHasOwnProperty(source, key)) {
+ filtered[key] = source[key];
+ }
+ }
+ return filtered;
+}
+
+const packageJSONCache = new SafeMap();
+function getPackageConfig(path, specifier, base, readFileSyncFn) {
+ const existing = packageJSONCache.get(path);
+ if (existing !== void 0) {
+ return existing;
+ }
+ const source = readFileSyncFn(path);
+ if (source === void 0) {
+ const packageConfig2 = {
+ pjsonPath: path,
+ exists: false,
+ main: void 0,
+ name: void 0,
+ type: "none",
+ exports: void 0,
+ imports: void 0
+ };
+ packageJSONCache.set(path, packageConfig2);
+ return packageConfig2;
+ }
+ let packageJSON;
+ try {
+ packageJSON = JSONParse(source);
+ } catch (error) {
+ throw new ERR_INVALID_PACKAGE_CONFIG(
+ path,
+ (base ? `"${specifier}" from ` : "") + url.fileURLToPath(base || specifier),
+ error.message
+ );
+ }
+ let { imports, main, name, type } = filterOwnProperties(packageJSON, [
+ "imports",
+ "main",
+ "name",
+ "type"
+ ]);
+ const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0;
+ if (typeof imports !== "object" || imports === null) {
+ imports = void 0;
+ }
+ if (typeof main !== "string") {
+ main = void 0;
+ }
+ if (typeof name !== "string") {
+ name = void 0;
+ }
+ if (type !== "module" && type !== "commonjs") {
+ type = "none";
+ }
+ const packageConfig = {
+ pjsonPath: path,
+ exists: true,
+ main,
+ name,
+ type,
+ exports,
+ imports
+ };
+ packageJSONCache.set(path, packageConfig);
+ return packageConfig;
+}
+function getPackageScopeConfig(resolved, readFileSyncFn) {
+ let packageJSONUrl = new URL("./package.json", resolved);
+ while (true) {
+ const packageJSONPath2 = packageJSONUrl.pathname;
+ if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) {
+ break;
+ }
+ const packageConfig2 = getPackageConfig(
+ url.fileURLToPath(packageJSONUrl),
+ resolved,
+ void 0,
+ readFileSyncFn
+ );
+ if (packageConfig2.exists) {
+ return packageConfig2;
+ }
+ const lastPackageJSONUrl = packageJSONUrl;
+ packageJSONUrl = new URL("../package.json", packageJSONUrl);
+ if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) {
+ break;
+ }
+ }
+ const packageJSONPath = url.fileURLToPath(packageJSONUrl);
+ const packageConfig = {
+ pjsonPath: packageJSONPath,
+ exists: false,
+ main: void 0,
+ name: void 0,
+ type: "none",
+ exports: void 0,
+ imports: void 0
+ };
+ packageJSONCache.set(packageJSONPath, packageConfig);
+ return packageConfig;
+}
+
+/**
+ @license
+ Copyright Node.js contributors. All rights reserved.
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to
+ deal in the Software without restriction, including without limitation the
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ IN THE SOFTWARE.
+*/
+function throwImportNotDefined(specifier, packageJSONUrl, base) {
+ throw new ERR_PACKAGE_IMPORT_NOT_DEFINED(
+ specifier,
+ packageJSONUrl && url.fileURLToPath(new URL(".", packageJSONUrl)),
+ url.fileURLToPath(base)
+ );
+}
+function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) {
+ const reason = `request is not a valid subpath for the "${internal ? "imports" : "exports"}" resolution of ${url.fileURLToPath(packageJSONUrl)}`;
+ throw new ERR_INVALID_MODULE_SPECIFIER(
+ subpath,
+ reason,
+ base && url.fileURLToPath(base)
+ );
+}
+function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) {
+ if (typeof target === "object" && target !== null) {
+ target = JSONStringify(target, null, "");
+ } else {
+ target = `${target}`;
+ }
+ throw new ERR_INVALID_PACKAGE_TARGET(
+ url.fileURLToPath(new URL(".", packageJSONUrl)),
+ subpath,
+ target,
+ internal,
+ base && url.fileURLToPath(base)
+ );
+}
+const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i;
+const patternRegEx = /\*/g;
+function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) {
+ if (subpath !== "" && !pattern && target[target.length - 1] !== "/")
+ throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
+ if (!StringPrototypeStartsWith(target, "./")) {
+ if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) {
+ let isURL = false;
+ try {
+ new URL(target);
+ isURL = true;
+ } catch {
+ }
+ if (!isURL) {
+ const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath;
+ return exportTarget;
+ }
+ }
+ throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
+ }
+ if (RegExpPrototypeExec(
+ invalidSegmentRegEx,
+ StringPrototypeSlice(target, 2)
+ ) !== null)
+ throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
+ const resolved = new URL(target, packageJSONUrl);
+ const resolvedPath = resolved.pathname;
+ const packagePath = new URL(".", packageJSONUrl).pathname;
+ if (!StringPrototypeStartsWith(resolvedPath, packagePath))
+ throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
+ if (subpath === "")
+ return resolved;
+ if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) {
+ const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath;
+ throwInvalidSubpath(request, packageJSONUrl, internal, base);
+ }
+ if (pattern) {
+ return new URL(
+ RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath)
+ );
+ }
+ return new URL(subpath, resolved);
+}
+function isArrayIndex(key) {
+ const keyNum = +key;
+ if (`${keyNum}` !== key)
+ return false;
+ return keyNum >= 0 && keyNum < 4294967295;
+}
+function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) {
+ if (typeof target === "string") {
+ return resolvePackageTargetString(
+ target,
+ subpath,
+ packageSubpath,
+ packageJSONUrl,
+ base,
+ pattern,
+ internal);
+ } else if (ArrayIsArray(target)) {
+ if (target.length === 0) {
+ return null;
+ }
+ let lastException;
+ for (let i = 0; i < target.length; i++) {
+ const targetItem = target[i];
+ let resolveResult;
+ try {
+ resolveResult = resolvePackageTarget(
+ packageJSONUrl,
+ targetItem,
+ subpath,
+ packageSubpath,
+ base,
+ pattern,
+ internal,
+ conditions
+ );
+ } catch (e) {
+ lastException = e;
+ if (e.code === "ERR_INVALID_PACKAGE_TARGET") {
+ continue;
+ }
+ throw e;
+ }
+ if (resolveResult === void 0) {
+ continue;
+ }
+ if (resolveResult === null) {
+ lastException = null;
+ continue;
+ }
+ return resolveResult;
+ }
+ if (lastException === void 0 || lastException === null)
+ return lastException;
+ throw lastException;
+ } else if (typeof target === "object" && target !== null) {
+ const keys = ObjectGetOwnPropertyNames(target);
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+ if (isArrayIndex(key)) {
+ throw new ERR_INVALID_PACKAGE_CONFIG(
+ url.fileURLToPath(packageJSONUrl),
+ base,
+ '"exports" cannot contain numeric property keys.'
+ );
+ }
+ }
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+ if (key === "default" || conditions.has(key)) {
+ const conditionalTarget = target[key];
+ const resolveResult = resolvePackageTarget(
+ packageJSONUrl,
+ conditionalTarget,
+ subpath,
+ packageSubpath,
+ base,
+ pattern,
+ internal,
+ conditions
+ );
+ if (resolveResult === void 0)
+ continue;
+ return resolveResult;
+ }
+ }
+ return void 0;
+ } else if (target === null) {
+ return null;
+ }
+ throwInvalidPackageTarget(
+ packageSubpath,
+ target,
+ packageJSONUrl,
+ internal,
+ base
+ );
+}
+function patternKeyCompare(a, b) {
+ const aPatternIndex = StringPrototypeIndexOf(a, "*");
+ const bPatternIndex = StringPrototypeIndexOf(b, "*");
+ const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1;
+ const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1;
+ if (baseLenA > baseLenB)
+ return -1;
+ if (baseLenB > baseLenA)
+ return 1;
+ if (aPatternIndex === -1)
+ return 1;
+ if (bPatternIndex === -1)
+ return -1;
+ if (a.length > b.length)
+ return -1;
+ if (b.length > a.length)
+ return 1;
+ return 0;
+}
+function packageImportsResolve({
+ name,
+ base,
+ conditions,
+ readFileSyncFn
+}) {
+ if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) {
+ const reason = "is not a valid internal imports specifier name";
+ throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, url.fileURLToPath(base));
+ }
+ let packageJSONUrl;
+ const packageConfig = getPackageScopeConfig(base, readFileSyncFn);
+ if (packageConfig.exists) {
+ packageJSONUrl = url.pathToFileURL(packageConfig.pjsonPath);
+ const imports = packageConfig.imports;
+ if (imports) {
+ if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) {
+ const resolveResult = resolvePackageTarget(
+ packageJSONUrl,
+ imports[name],
+ "",
+ name,
+ base,
+ false,
+ true,
+ conditions
+ );
+ if (resolveResult != null) {
+ return resolveResult;
+ }
+ } else {
+ let bestMatch = "";
+ let bestMatchSubpath;
+ const keys = ObjectGetOwnPropertyNames(imports);
+ for (let i = 0; i < keys.length; i++) {
+ const key = keys[i];
+ const patternIndex = StringPrototypeIndexOf(key, "*");
+ if (patternIndex !== -1 && StringPrototypeStartsWith(
+ name,
+ StringPrototypeSlice(key, 0, patternIndex)
+ )) {
+ const patternTrailer = StringPrototypeSlice(key, patternIndex + 1);
+ if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) {
+ bestMatch = key;
+ bestMatchSubpath = StringPrototypeSlice(
+ name,
+ patternIndex,
+ name.length - patternTrailer.length
+ );
+ }
+ }
+ }
+ if (bestMatch) {
+ const target = imports[bestMatch];
+ const resolveResult = resolvePackageTarget(
+ packageJSONUrl,
+ target,
+ bestMatchSubpath,
+ bestMatch,
+ base,
+ true,
+ true,
+ conditions
+ );
+ if (resolveResult != null) {
+ return resolveResult;
+ }
+ }
+ }
+ }
+ }
+ throwImportNotDefined(name, packageJSONUrl, base);
+}
+
+function makeApi(runtimeState, opts) {
+ const alwaysWarnOnFallback = Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK) > 0;
+ const debugLevel = Number(process.env.PNP_DEBUG_LEVEL);
+ const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/;
+ const isStrictRegExp = /^(\/|\.{1,2}(\/|$))/;
+ const isDirRegExp = /\/$/;
+ const isRelativeRegexp = /^\.{0,2}\//;
+ const topLevelLocator = { name: null, reference: null };
+ const fallbackLocators = [];
+ const emittedWarnings = /* @__PURE__ */ new Set();
+ if (runtimeState.enableTopLevelFallback === true)
+ fallbackLocators.push(topLevelLocator);
+ if (opts.compatibilityMode !== false) {
+ for (const name of [`react-scripts`, `gatsby`]) {
+ const packageStore = runtimeState.packageRegistry.get(name);
+ if (packageStore) {
+ for (const reference of packageStore.keys()) {
+ if (reference === null) {
+ throw new Error(`Assertion failed: This reference shouldn't be null`);
+ } else {
+ fallbackLocators.push({ name, reference });
+ }
+ }
+ }
+ }
+ }
+ const {
+ ignorePattern,
+ packageRegistry,
+ packageLocatorsByLocations
+ } = runtimeState;
+ function makeLogEntry(name, args) {
+ return {
+ fn: name,
+ args,
+ error: null,
+ result: null
+ };
+ }
+ function trace(entry) {
+ var _a, _b, _c, _d;
+ const colors = ((_b = (_a = process.stderr) == null ? void 0 : _a.hasColors) == null ? void 0 : _b.call(_a)) ?? process.stdout.isTTY;
+ const c = (n, str) => `\x1B[${n}m${str}\x1B[0m`;
+ const error = entry.error;
+ if (error)
+ console.error(c(`31;1`, `\u2716 ${(_c = entry.error) == null ? void 0 : _c.message.replace(/\n.*/s, ``)}`));
+ else
+ console.error(c(`33;1`, `\u203C Resolution`));
+ if (entry.args.length > 0)
+ console.error();
+ for (const arg of entry.args)
+ console.error(` ${c(`37;1`, `In \u2190`)} ${nodeUtils.inspect(arg, { colors, compact: true })}`);
+ if (entry.result) {
+ console.error();
+ console.error(` ${c(`37;1`, `Out \u2192`)} ${nodeUtils.inspect(entry.result, { colors, compact: true })}`);
+ }
+ const stack = ((_d = new Error().stack.match(/(?<=^ +)at.*/gm)) == null ? void 0 : _d.slice(2)) ?? [];
+ if (stack.length > 0) {
+ console.error();
+ for (const line of stack) {
+ console.error(` ${c(`38;5;244`, line)}`);
+ }
+ }
+ console.error();
+ }
+ function maybeLog(name, fn) {
+ if (opts.allowDebug === false)
+ return fn;
+ if (Number.isFinite(debugLevel)) {
+ if (debugLevel >= 2) {
+ return (...args) => {
+ const logEntry = makeLogEntry(name, args);
+ try {
+ return logEntry.result = fn(...args);
+ } catch (error) {
+ throw logEntry.error = error;
+ } finally {
+ trace(logEntry);
+ }
+ };
+ } else if (debugLevel >= 1) {
+ return (...args) => {
+ try {
+ return fn(...args);
+ } catch (error) {
+ const logEntry = makeLogEntry(name, args);
+ logEntry.error = error;
+ trace(logEntry);
+ throw error;
+ }
+ };
+ }
+ }
+ return fn;
+ }
+ function getPackageInformationSafe(packageLocator) {
+ const packageInformation = getPackageInformation(packageLocator);
+ if (!packageInformation) {
+ throw makeError(
+ ErrorCode.INTERNAL,
+ `Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)`
+ );
+ }
+ return packageInformation;
+ }
+ function isDependencyTreeRoot(packageLocator) {
+ if (packageLocator.name === null)
+ return true;
+ for (const dependencyTreeRoot of runtimeState.dependencyTreeRoots)
+ if (dependencyTreeRoot.name === packageLocator.name && dependencyTreeRoot.reference === packageLocator.reference)
+ return true;
+ return false;
+ }
+ const defaultExportsConditions = /* @__PURE__ */ new Set([`default`, `node`, `require`]);
+ function applyNodeExportsResolution(unqualifiedPath, conditions = defaultExportsConditions) {
+ const locator = findPackageLocator(ppath.join(unqualifiedPath, `internal.js`), {
+ resolveIgnored: true,
+ includeDiscardFromLookup: true
+ });
+ if (locator === null) {
+ throw makeError(
+ ErrorCode.INTERNAL,
+ `The locator that owns the "${unqualifiedPath}" path can't be found inside the dependency tree (this is probably an internal error)`
+ );
+ }
+ const { packageLocation } = getPackageInformationSafe(locator);
+ const manifestPath = ppath.join(packageLocation, Filename.manifest);
+ if (!opts.fakeFs.existsSync(manifestPath))
+ return null;
+ const pkgJson = JSON.parse(opts.fakeFs.readFileSync(manifestPath, `utf8`));
+ let subpath = ppath.contains(packageLocation, unqualifiedPath);
+ if (subpath === null) {
+ throw makeError(
+ ErrorCode.INTERNAL,
+ `unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)`
+ );
+ }
+ if (!isRelativeRegexp.test(subpath))
+ subpath = `./${subpath}`;
+ let resolvedExport;
+ try {
+ resolvedExport = resolve(pkgJson, ppath.normalize(subpath), {
+ conditions,
+ unsafe: true
+ });
+ } catch (error) {
+ throw makeError(
+ ErrorCode.EXPORTS_RESOLUTION_FAILED,
+ error.message,
+ { unqualifiedPath: getPathForDisplay(unqualifiedPath), locator, pkgJson, subpath: getPathForDisplay(subpath), conditions },
+ `ERR_PACKAGE_PATH_NOT_EXPORTED`
+ );
+ }
+ if (typeof resolvedExport === `string`)
+ return ppath.join(packageLocation, resolvedExport);
+ return null;
+ }
+ function applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }) {
+ let stat;
+ try {
+ candidates.push(unqualifiedPath);
+ stat = opts.fakeFs.statSync(unqualifiedPath);
+ } catch (error) {
+ }
+ if (stat && !stat.isDirectory())
+ return opts.fakeFs.realpathSync(unqualifiedPath);
+ if (stat && stat.isDirectory()) {
+ let pkgJson;
+ try {
+ pkgJson = JSON.parse(opts.fakeFs.readFileSync(ppath.join(unqualifiedPath, Filename.manifest), `utf8`));
+ } catch (error) {
+ }
+ let nextUnqualifiedPath;
+ if (pkgJson && pkgJson.main)
+ nextUnqualifiedPath = ppath.resolve(unqualifiedPath, pkgJson.main);
+ if (nextUnqualifiedPath && nextUnqualifiedPath !== unqualifiedPath) {
+ const resolution = applyNodeExtensionResolution(nextUnqualifiedPath, candidates, { extensions });
+ if (resolution !== null) {
+ return resolution;
+ }
+ }
+ }
+ for (let i = 0, length = extensions.length; i < length; i++) {
+ const candidateFile = `${unqualifiedPath}${extensions[i]}`;
+ candidates.push(candidateFile);
+ if (opts.fakeFs.existsSync(candidateFile)) {
+ return candidateFile;
+ }
+ }
+ if (stat && stat.isDirectory()) {
+ for (let i = 0, length = extensions.length; i < length; i++) {
+ const candidateFile = ppath.format({ dir: unqualifiedPath, name: `index`, ext: extensions[i] });
+ candidates.push(candidateFile);
+ if (opts.fakeFs.existsSync(candidateFile)) {
+ return candidateFile;
+ }
+ }
+ }
+ return null;
+ }
+ function makeFakeModule(path) {
+ const fakeModule = new require$$0.Module(path, null);
+ fakeModule.filename = path;
+ fakeModule.paths = require$$0.Module._nodeModulePaths(path);
+ return fakeModule;
+ }
+ function callNativeResolution(request, issuer) {
+ if (issuer.endsWith(`/`))
+ issuer = ppath.join(issuer, `internal.js`);
+ return require$$0.Module._resolveFilename(npath.fromPortablePath(request), makeFakeModule(npath.fromPortablePath(issuer)), false, { plugnplay: false });
+ }
+ function isPathIgnored(path) {
+ if (ignorePattern === null)
+ return false;
+ const subPath = ppath.contains(runtimeState.basePath, path);
+ if (subPath === null)
+ return false;
+ if (ignorePattern.test(subPath.replace(/\/$/, ``))) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+ const VERSIONS = { std: 3, resolveVirtual: 1, getAllLocators: 1 };
+ const topLevel = topLevelLocator;
+ function getPackageInformation({ name, reference }) {
+ const packageInformationStore = packageRegistry.get(name);
+ if (!packageInformationStore)
+ return null;
+ const packageInformation = packageInformationStore.get(reference);
+ if (!packageInformation)
+ return null;
+ return packageInformation;
+ }
+ function findPackageDependents({ name, reference }) {
+ const dependents = [];
+ for (const [dependentName, packageInformationStore] of packageRegistry) {
+ if (dependentName === null)
+ continue;
+ for (const [dependentReference, packageInformation] of packageInformationStore) {
+ if (dependentReference === null)
+ continue;
+ const dependencyReference = packageInformation.packageDependencies.get(name);
+ if (dependencyReference !== reference)
+ continue;
+ if (dependentName === name && dependentReference === reference)
+ continue;
+ dependents.push({
+ name: dependentName,
+ reference: dependentReference
+ });
+ }
+ }
+ return dependents;
+ }
+ function findBrokenPeerDependencies(dependency, initialPackage) {
+ const brokenPackages = /* @__PURE__ */ new Map();
+ const alreadyVisited = /* @__PURE__ */ new Set();
+ const traversal = (currentPackage) => {
+ const identifier = JSON.stringify(currentPackage.name);
+ if (alreadyVisited.has(identifier))
+ return;
+ alreadyVisited.add(identifier);
+ const dependents = findPackageDependents(currentPackage);
+ for (const dependent of dependents) {
+ const dependentInformation = getPackageInformationSafe(dependent);
+ if (dependentInformation.packagePeers.has(dependency)) {
+ traversal(dependent);
+ } else {
+ let brokenSet = brokenPackages.get(dependent.name);
+ if (typeof brokenSet === `undefined`)
+ brokenPackages.set(dependent.name, brokenSet = /* @__PURE__ */ new Set());
+ brokenSet.add(dependent.reference);
+ }
+ }
+ };
+ traversal(initialPackage);
+ const brokenList = [];
+ for (const name of [...brokenPackages.keys()].sort())
+ for (const reference of [...brokenPackages.get(name)].sort())
+ brokenList.push({ name, reference });
+ return brokenList;
+ }
+ function findPackageLocator(location, { resolveIgnored = false, includeDiscardFromLookup = false } = {}) {
+ if (isPathIgnored(location) && !resolveIgnored)
+ return null;
+ let relativeLocation = ppath.relative(runtimeState.basePath, location);
+ if (!relativeLocation.match(isStrictRegExp))
+ relativeLocation = `./${relativeLocation}`;
+ if (!relativeLocation.endsWith(`/`))
+ relativeLocation = `${relativeLocation}/`;
+ do {
+ const entry = packageLocatorsByLocations.get(relativeLocation);
+ if (typeof entry === `undefined` || entry.discardFromLookup && !includeDiscardFromLookup) {
+ relativeLocation = relativeLocation.substring(0, relativeLocation.lastIndexOf(`/`, relativeLocation.length - 2) + 1);
+ continue;
+ }
+ return entry.locator;
+ } while (relativeLocation !== ``);
+ return null;
+ }
+ function tryReadFile(filePath) {
+ try {
+ return opts.fakeFs.readFileSync(npath.toPortablePath(filePath), `utf8`);
+ } catch (err) {
+ if (err.code === `ENOENT`)
+ return void 0;
+ throw err;
+ }
+ }
+ function resolveToUnqualified(request, issuer, { considerBuiltins = true } = {}) {
+ if (request.startsWith(`#`))
+ throw new Error(`resolveToUnqualified can not handle private import mappings`);
+ if (request === `pnpapi`)
+ return npath.toPortablePath(opts.pnpapiResolution);
+ if (considerBuiltins && isBuiltinModule(request))
+ return null;
+ const requestForDisplay = getPathForDisplay(request);
+ const issuerForDisplay = issuer && getPathForDisplay(issuer);
+ if (issuer && isPathIgnored(issuer)) {
+ if (!ppath.isAbsolute(request) || findPackageLocator(request) === null) {
+ const result = callNativeResolution(request, issuer);
+ if (result === false) {
+ throw makeError(
+ ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED,
+ `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp)
+
+Require request: "${requestForDisplay}"
+Required by: ${issuerForDisplay}
+`,
+ { request: requestForDisplay, issuer: issuerForDisplay }
+ );
+ }
+ return npath.toPortablePath(result);
+ }
+ }
+ let unqualifiedPath;
+ const dependencyNameMatch = request.match(pathRegExp);
+ if (!dependencyNameMatch) {
+ if (ppath.isAbsolute(request)) {
+ unqualifiedPath = ppath.normalize(request);
+ } else {
+ if (!issuer) {
+ throw makeError(
+ ErrorCode.API_ERROR,
+ `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`,
+ { request: requestForDisplay, issuer: issuerForDisplay }
+ );
+ }
+ const absoluteIssuer = ppath.resolve(issuer);
+ if (issuer.match(isDirRegExp)) {
+ unqualifiedPath = ppath.normalize(ppath.join(absoluteIssuer, request));
+ } else {
+ unqualifiedPath = ppath.normalize(ppath.join(ppath.dirname(absoluteIssuer), request));
+ }
+ }
+ } else {
+ if (!issuer) {
+ throw makeError(
+ ErrorCode.API_ERROR,
+ `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`,
+ { request: requestForDisplay, issuer: issuerForDisplay }
+ );
+ }
+ const [, dependencyName, subPath] = dependencyNameMatch;
+ const issuerLocator = findPackageLocator(issuer);
+ if (!issuerLocator) {
+ const result = callNativeResolution(request, issuer);
+ if (result === false) {
+ throw makeError(
+ ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED,
+ `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree).
+
+Require path: "${requestForDisplay}"
+Required by: ${issuerForDisplay}
+`,
+ { request: requestForDisplay, issuer: issuerForDisplay }
+ );
+ }
+ return npath.toPortablePath(result);
+ }
+ const issuerInformation = getPackageInformationSafe(issuerLocator);
+ let dependencyReference = issuerInformation.packageDependencies.get(dependencyName);
+ let fallbackReference = null;
+ if (dependencyReference == null) {
+ if (issuerLocator.name !== null) {
+ const exclusionEntry = runtimeState.fallbackExclusionList.get(issuerLocator.name);
+ const canUseFallbacks = !exclusionEntry || !exclusionEntry.has(issuerLocator.reference);
+ if (canUseFallbacks) {
+ for (let t = 0, T = fallbackLocators.length; t < T; ++t) {
+ const fallbackInformation = getPackageInformationSafe(fallbackLocators[t]);
+ const reference = fallbackInformation.packageDependencies.get(dependencyName);
+ if (reference == null)
+ continue;
+ if (alwaysWarnOnFallback)
+ fallbackReference = reference;
+ else
+ dependencyReference = reference;
+ break;
+ }
+ if (runtimeState.enableTopLevelFallback) {
+ if (dependencyReference == null && fallbackReference === null) {
+ const reference = runtimeState.fallbackPool.get(dependencyName);
+ if (reference != null) {
+ fallbackReference = reference;
+ }
+ }
+ }
+ }
+ }
+ }
+ let error = null;
+ if (dependencyReference === null) {
+ if (isDependencyTreeRoot(issuerLocator)) {
+ error = makeError(
+ ErrorCode.MISSING_PEER_DEPENDENCY,
+ `Your application tried to access ${dependencyName} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.
+
+Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
+Required by: ${issuerForDisplay}
+`,
+ { request: requestForDisplay, issuer: issuerForDisplay, dependencyName }
+ );
+ } else {
+ const brokenAncestors = findBrokenPeerDependencies(dependencyName, issuerLocator);
+ if (brokenAncestors.every((ancestor) => isDependencyTreeRoot(ancestor))) {
+ error = makeError(
+ ErrorCode.MISSING_PEER_DEPENDENCY,
+ `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.
+
+Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
+Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay})
+${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference}
+`).join(``)}
+`,
+ { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors }
+ );
+ } else {
+ error = makeError(
+ ErrorCode.MISSING_PEER_DEPENDENCY,
+ `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.
+
+Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
+Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay})
+
+${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference}
+`).join(``)}
+`,
+ { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors }
+ );
+ }
+ }
+ } else if (dependencyReference === void 0) {
+ if (!considerBuiltins && isBuiltinModule(request)) {
+ if (isDependencyTreeRoot(issuerLocator)) {
+ error = makeError(
+ ErrorCode.UNDECLARED_DEPENDENCY,
+ `Your application tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.
+
+Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
+Required by: ${issuerForDisplay}
+`,
+ { request: requestForDisplay, issuer: issuerForDisplay, dependencyName }
+ );
+ } else {
+ error = makeError(
+ ErrorCode.UNDECLARED_DEPENDENCY,
+ `${issuerLocator.name} tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in ${issuerLocator.name}'s dependencies, this makes the require call ambiguous and unsound.
+
+Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
+Required by: ${issuerForDisplay}
+`,
+ { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName }
+ );
+ }
+ } else {
+ if (isDependencyTreeRoot(issuerLocator)) {
+ error = makeError(
+ ErrorCode.UNDECLARED_DEPENDENCY,
+ `Your application tried to access ${dependencyName}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.
+
+Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
+Required by: ${issuerForDisplay}
+`,
+ { request: requestForDisplay, issuer: issuerForDisplay, dependencyName }
+ );
+ } else {
+ error = makeError(
+ ErrorCode.UNDECLARED_DEPENDENCY,
+ `${issuerLocator.name} tried to access ${dependencyName}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
+
+Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
+Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay})
+`,
+ { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName }
+ );
+ }
+ }
+ }
+ if (dependencyReference == null) {
+ if (fallbackReference === null || error === null)
+ throw error || new Error(`Assertion failed: Expected an error to have been set`);
+ dependencyReference = fallbackReference;
+ const message = error.message.replace(/\n.*/g, ``);
+ error.message = message;
+ if (!emittedWarnings.has(message) && debugLevel !== 0) {
+ emittedWarnings.add(message);
+ process.emitWarning(error);
+ }
+ }
+ const dependencyLocator = Array.isArray(dependencyReference) ? { name: dependencyReference[0], reference: dependencyReference[1] } : { name: dependencyName, reference: dependencyReference };
+ const dependencyInformation = getPackageInformationSafe(dependencyLocator);
+ if (!dependencyInformation.packageLocation) {
+ throw makeError(
+ ErrorCode.MISSING_DEPENDENCY,
+ `A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.
+
+Required package: ${dependencyLocator.name}@${dependencyLocator.reference}${dependencyLocator.name !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
+Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay})
+`,
+ { request: requestForDisplay, issuer: issuerForDisplay, dependencyLocator: Object.assign({}, dependencyLocator) }
+ );
+ }
+ const dependencyLocation = dependencyInformation.packageLocation;
+ if (subPath) {
+ unqualifiedPath = ppath.join(dependencyLocation, subPath);
+ } else {
+ unqualifiedPath = dependencyLocation;
+ }
+ }
+ return ppath.normalize(unqualifiedPath);
+ }
+ function resolveUnqualifiedExport(request, unqualifiedPath, conditions = defaultExportsConditions) {
+ if (isStrictRegExp.test(request))
+ return unqualifiedPath;
+ const unqualifiedExportPath = applyNodeExportsResolution(unqualifiedPath, conditions);
+ if (unqualifiedExportPath) {
+ return ppath.normalize(unqualifiedExportPath);
+ } else {
+ return unqualifiedPath;
+ }
+ }
+ function resolveUnqualified(unqualifiedPath, { extensions = Object.keys(require$$0.Module._extensions) } = {}) {
+ const candidates = [];
+ const qualifiedPath = applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions });
+ if (qualifiedPath) {
+ return ppath.normalize(qualifiedPath);
+ } else {
+ reportRequiredFilesToWatchMode(candidates.map((candidate) => npath.fromPortablePath(candidate)));
+ const unqualifiedPathForDisplay = getPathForDisplay(unqualifiedPath);
+ const containingPackage = findPackageLocator(unqualifiedPath);
+ if (containingPackage) {
+ const { packageLocation } = getPackageInformationSafe(containingPackage);
+ let exists = true;
+ try {
+ opts.fakeFs.accessSync(packageLocation);
+ } catch (err) {
+ if ((err == null ? void 0 : err.code) === `ENOENT`) {
+ exists = false;
+ } else {
+ const readableError = ((err == null ? void 0 : err.message) ?? err ?? `empty exception thrown`).replace(/^[A-Z]/, ($0) => $0.toLowerCase());
+ throw makeError(ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, `Required package exists but could not be accessed (${readableError}).
+
+Missing package: ${containingPackage.name}@${containingPackage.reference}
+Expected package location: ${getPathForDisplay(packageLocation)}
+`, { unqualifiedPath: unqualifiedPathForDisplay, extensions });
+ }
+ }
+ if (!exists) {
+ const errorMessage = packageLocation.includes(`/unplugged/`) ? `Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).` : `Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.`;
+ throw makeError(
+ ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED,
+ `${errorMessage}
+
+Missing package: ${containingPackage.name}@${containingPackage.reference}
+Expected package location: ${getPathForDisplay(packageLocation)}
+`,
+ { unqualifiedPath: unqualifiedPathForDisplay, extensions }
+ );
+ }
+ }
+ throw makeError(
+ ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED,
+ `Qualified path resolution failed: we looked for the following paths, but none could be accessed.
+
+Source path: ${unqualifiedPathForDisplay}
+${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)}
+`).join(``)}`,
+ { unqualifiedPath: unqualifiedPathForDisplay, extensions }
+ );
+ }
+ }
+ function resolvePrivateRequest(request, issuer, opts2) {
+ if (!issuer)
+ throw new Error(`Assertion failed: An issuer is required to resolve private import mappings`);
+ const resolved = packageImportsResolve({
+ name: request,
+ base: url.pathToFileURL(npath.fromPortablePath(issuer)),
+ conditions: opts2.conditions ?? defaultExportsConditions,
+ readFileSyncFn: tryReadFile
+ });
+ if (resolved instanceof URL) {
+ return resolveUnqualified(npath.toPortablePath(url.fileURLToPath(resolved)), { extensions: opts2.extensions });
+ } else {
+ if (resolved.startsWith(`#`))
+ throw new Error(`Mapping from one private import to another isn't allowed`);
+ return resolveRequest(resolved, issuer, opts2);
+ }
+ }
+ function resolveRequest(request, issuer, opts2 = {}) {
+ try {
+ if (request.startsWith(`#`))
+ return resolvePrivateRequest(request, issuer, opts2);
+ const { considerBuiltins, extensions, conditions } = opts2;
+ const unqualifiedPath = resolveToUnqualified(request, issuer, { considerBuiltins });
+ if (request === `pnpapi`)
+ return unqualifiedPath;
+ if (unqualifiedPath === null)
+ return null;
+ const isIssuerIgnored = () => issuer !== null ? isPathIgnored(issuer) : false;
+ const remappedPath = (!considerBuiltins || !isBuiltinModule(request)) && !isIssuerIgnored() ? resolveUnqualifiedExport(request, unqualifiedPath, conditions) : unqualifiedPath;
+ return resolveUnqualified(remappedPath, { extensions });
+ } catch (error) {
+ if (Object.prototype.hasOwnProperty.call(error, `pnpCode`))
+ Object.assign(error.data, { request: getPathForDisplay(request), issuer: issuer && getPathForDisplay(issuer) });
+ throw error;
+ }
+ }
+ function resolveVirtual(request) {
+ const normalized = ppath.normalize(request);
+ const resolved = VirtualFS.resolveVirtual(normalized);
+ return resolved !== normalized ? resolved : null;
+ }
+ return {
+ VERSIONS,
+ topLevel,
+ getLocator: (name, referencish) => {
+ if (Array.isArray(referencish)) {
+ return { name: referencish[0], reference: referencish[1] };
+ } else {
+ return { name, reference: referencish };
+ }
+ },
+ getDependencyTreeRoots: () => {
+ return [...runtimeState.dependencyTreeRoots];
+ },
+ getAllLocators() {
+ const locators = [];
+ for (const [name, entry] of packageRegistry)
+ for (const reference of entry.keys())
+ if (name !== null && reference !== null)
+ locators.push({ name, reference });
+ return locators;
+ },
+ getPackageInformation: (locator) => {
+ const info = getPackageInformation(locator);
+ if (info === null)
+ return null;
+ const packageLocation = npath.fromPortablePath(info.packageLocation);
+ const nativeInfo = { ...info, packageLocation };
+ return nativeInfo;
+ },
+ findPackageLocator: (path) => {
+ return findPackageLocator(npath.toPortablePath(path));
+ },
+ resolveToUnqualified: maybeLog(`resolveToUnqualified`, (request, issuer, opts2) => {
+ const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null;
+ const resolution = resolveToUnqualified(npath.toPortablePath(request), portableIssuer, opts2);
+ if (resolution === null)
+ return null;
+ return npath.fromPortablePath(resolution);
+ }),
+ resolveUnqualified: maybeLog(`resolveUnqualified`, (unqualifiedPath, opts2) => {
+ return npath.fromPortablePath(resolveUnqualified(npath.toPortablePath(unqualifiedPath), opts2));
+ }),
+ resolveRequest: maybeLog(`resolveRequest`, (request, issuer, opts2) => {
+ const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null;
+ const resolution = resolveRequest(npath.toPortablePath(request), portableIssuer, opts2);
+ if (resolution === null)
+ return null;
+ return npath.fromPortablePath(resolution);
+ }),
+ resolveVirtual: maybeLog(`resolveVirtual`, (path) => {
+ const result = resolveVirtual(npath.toPortablePath(path));
+ if (result !== null) {
+ return npath.fromPortablePath(result);
+ } else {
+ return null;
+ }
+ })
+ };
+}
+
+function makeManager(pnpapi, opts) {
+ const initialApiPath = npath.toPortablePath(pnpapi.resolveToUnqualified(`pnpapi`, null));
+ const initialApiStats = opts.fakeFs.statSync(npath.toPortablePath(initialApiPath));
+ const apiMetadata = /* @__PURE__ */ new Map([
+ [initialApiPath, {
+ cache: require$$0.Module._cache,
+ instance: pnpapi,
+ stats: initialApiStats,
+ lastRefreshCheck: Date.now()
+ }]
+ ]);
+ function loadApiInstance(pnpApiPath) {
+ const nativePath = npath.fromPortablePath(pnpApiPath);
+ const module = new require$$0.Module(nativePath, null);
+ module.load(nativePath);
+ return module.exports;
+ }
+ function refreshApiEntry(pnpApiPath, apiEntry) {
+ const timeNow = Date.now();
+ if (timeNow - apiEntry.lastRefreshCheck < 500)
+ return;
+ apiEntry.lastRefreshCheck = timeNow;
+ const stats = opts.fakeFs.statSync(pnpApiPath);
+ if (stats.mtime > apiEntry.stats.mtime) {
+ process.emitWarning(`[Warning] The runtime detected new information in a PnP file; reloading the API instance (${npath.fromPortablePath(pnpApiPath)})`);
+ apiEntry.stats = stats;
+ apiEntry.instance = loadApiInstance(pnpApiPath);
+ }
+ }
+ function getApiEntry(pnpApiPath, refresh = false) {
+ let apiEntry = apiMetadata.get(pnpApiPath);
+ if (typeof apiEntry !== `undefined`) {
+ if (refresh) {
+ refreshApiEntry(pnpApiPath, apiEntry);
+ }
+ } else {
+ apiMetadata.set(pnpApiPath, apiEntry = {
+ cache: {},
+ instance: loadApiInstance(pnpApiPath),
+ stats: opts.fakeFs.statSync(pnpApiPath),
+ lastRefreshCheck: Date.now()
+ });
+ }
+ return apiEntry;
+ }
+ const findApiPathCache = /* @__PURE__ */ new Map();
+ function addToCacheAndReturn(start, end, target) {
+ if (target !== null)
+ target = VirtualFS.resolveVirtual(target);
+ let curr;
+ let next = start;
+ do {
+ curr = next;
+ findApiPathCache.set(curr, target);
+ next = ppath.dirname(curr);
+ } while (curr !== end);
+ return target;
+ }
+ function findApiPathFor(modulePath) {
+ let bestCandidate = null;
+ for (const [apiPath, apiEntry] of apiMetadata) {
+ const locator = apiEntry.instance.findPackageLocator(modulePath);
+ if (!locator)
+ continue;
+ if (apiMetadata.size === 1)
+ return apiPath;
+ const packageInformation = apiEntry.instance.getPackageInformation(locator);
+ if (!packageInformation)
+ throw new Error(`Assertion failed: Couldn't get package information for '${modulePath}'`);
+ if (!bestCandidate)
+ bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [] };
+ if (packageInformation.packageLocation === bestCandidate.packageLocation) {
+ bestCandidate.apiPaths.push(apiPath);
+ } else if (packageInformation.packageLocation.length > bestCandidate.packageLocation.length) {
+ bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [apiPath] };
+ }
+ }
+ if (bestCandidate) {
+ if (bestCandidate.apiPaths.length === 1)
+ return bestCandidate.apiPaths[0];
+ const controlSegment = bestCandidate.apiPaths.map((apiPath) => ` ${npath.fromPortablePath(apiPath)}`).join(`
+`);
+ throw new Error(`Unable to locate pnpapi, the module '${modulePath}' is controlled by multiple pnpapi instances.
+This is usually caused by using the global cache (enableGlobalCache: true)
+
+Controlled by:
+${controlSegment}
+`);
+ }
+ const start = ppath.resolve(npath.toPortablePath(modulePath));
+ let curr;
+ let next = start;
+ do {
+ curr = next;
+ const cached = findApiPathCache.get(curr);
+ if (cached !== void 0)
+ return addToCacheAndReturn(start, curr, cached);
+ const cjsCandidate = ppath.join(curr, Filename.pnpCjs);
+ if (opts.fakeFs.existsSync(cjsCandidate) && opts.fakeFs.statSync(cjsCandidate).isFile())
+ return addToCacheAndReturn(start, curr, cjsCandidate);
+ const legacyCjsCandidate = ppath.join(curr, Filename.pnpJs);
+ if (opts.fakeFs.existsSync(legacyCjsCandidate) && opts.fakeFs.statSync(legacyCjsCandidate).isFile())
+ return addToCacheAndReturn(start, curr, legacyCjsCandidate);
+ next = ppath.dirname(curr);
+ } while (curr !== PortablePath.root);
+ return addToCacheAndReturn(start, curr, null);
+ }
+ function getApiPathFromParent(parent) {
+ if (parent == null)
+ return initialApiPath;
+ if (typeof parent.pnpApiPath === `undefined`) {
+ if (parent.filename !== null) {
+ return parent.pnpApiPath = findApiPathFor(parent.filename);
+ } else {
+ return initialApiPath;
+ }
+ }
+ if (parent.pnpApiPath !== null)
+ return parent.pnpApiPath;
+ return null;
+ }
+ return {
+ getApiPathFromParent,
+ findApiPathFor,
+ getApiEntry
+ };
+}
+
+const localFs = { ...fs__default.default };
+const nodeFs = new NodeFS(localFs);
+const defaultRuntimeState = $$SETUP_STATE(hydrateRuntimeState);
+const defaultPnpapiResolution = __filename;
+const defaultFsLayer = new VirtualFS({
+ baseFs: new ZipOpenFS({
+ baseFs: nodeFs,
+ maxOpenFiles: 80,
+ readOnlyArchives: true
+ })
+});
+class DynamicFS extends ProxiedFS {
+ constructor() {
+ super(ppath);
+ this.baseFs = defaultFsLayer;
+ }
+ mapToBase(p) {
+ return p;
+ }
+ mapFromBase(p) {
+ return p;
+ }
+}
+const dynamicFsLayer = new DynamicFS();
+let manager;
+const defaultApi = Object.assign(makeApi(defaultRuntimeState, {
+ fakeFs: dynamicFsLayer,
+ pnpapiResolution: defaultPnpapiResolution
+}), {
+ makeApi: ({
+ basePath = void 0,
+ fakeFs = dynamicFsLayer,
+ pnpapiResolution = defaultPnpapiResolution,
+ ...rest
+ }) => {
+ const apiRuntimeState = typeof basePath !== `undefined` ? $$SETUP_STATE(hydrateRuntimeState, basePath) : defaultRuntimeState;
+ return makeApi(apiRuntimeState, {
+ fakeFs,
+ pnpapiResolution,
+ ...rest
+ });
+ },
+ setup: (api) => {
+ applyPatch(api || defaultApi, {
+ fakeFs: defaultFsLayer,
+ manager
+ });
+ dynamicFsLayer.baseFs = new NodeFS(fs__default.default);
+ }
+});
+manager = makeManager(defaultApi, {
+ fakeFs: dynamicFsLayer
+});
+if (module.parent && module.parent.id === `internal/preload`) {
+ defaultApi.setup();
+ if (module.filename) {
+ delete require$$0__default.default._cache[module.filename];
+ }
+}
+if (process.mainModule === module) {
+ const reportError = (code, message, data) => {
+ process.stdout.write(`${JSON.stringify([{ code, message, data }, null])}
+`);
+ };
+ const reportSuccess = (resolution) => {
+ process.stdout.write(`${JSON.stringify([null, resolution])}
+`);
+ };
+ const processResolution = (request, issuer) => {
+ try {
+ reportSuccess(defaultApi.resolveRequest(request, issuer));
+ } catch (error) {
+ reportError(error.code, error.message, error.data);
+ }
+ };
+ const processRequest = (data) => {
+ try {
+ const [request, issuer] = JSON.parse(data);
+ processResolution(request, issuer);
+ } catch (error) {
+ reportError(`INVALID_JSON`, error.message, error.data);
+ }
+ };
+ if (process.argv.length > 2) {
+ if (process.argv.length !== 4) {
+ process.stderr.write(`Usage: ${process.argv[0]} ${process.argv[1]} <request> <issuer>
+`);
+ process.exitCode = 64;
+ } else {
+ processResolution(process.argv[2], process.argv[3]);
+ }
+ } else {
+ let buffer = ``;
+ const decoder = new StringDecoder__default.default.StringDecoder();
+ process.stdin.on(`data`, (chunk) => {
+ buffer += decoder.write(chunk);
+ do {
+ const index = buffer.indexOf(`
+`);
+ if (index === -1)
+ break;
+ const line = buffer.slice(0, index);
+ buffer = buffer.slice(index + 1);
+ processRequest(line);
+ } while (true);
+ });
+ }
+}
+
+module.exports = defaultApi;