From 080f5d4d1ee38cbf62838f5def3fb3ab7090024f Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Thu, 30 Nov 2023 21:42:35 +0000 Subject: [PATCH 01/39] docs(upgrade-test): revise readme --- packages/deployment/upgrade-test/Readme.md | 50 ++++------------------ 1 file changed, 8 insertions(+), 42 deletions(-) diff --git a/packages/deployment/upgrade-test/Readme.md b/packages/deployment/upgrade-test/Readme.md index cd6eacb6b2f..731e0f710c1 100644 --- a/packages/deployment/upgrade-test/Readme.md +++ b/packages/deployment/upgrade-test/Readme.md @@ -1,20 +1,10 @@ # Dockerized Chain Upgrade Tester -This will build all previous upgrades and upgrade each one. - -## Upgrades - -| number | description | notes | -| ------ | -------------- | -------------------------------------------------------------------------- | -| 8 | PismoA | Runs with Pismo release agoric-sdk (including CLI) | -| 8.1 | PismoB | -| 9 | PismoC | -| 10 | --> Vaults | Runs with latest SDK. Tests backwards compatibility with Pismo vstorage. | -| 11 | Vaults --> V+1 | Anticipated upgrade. Tests that Vaults release _can be_ upgraded in place. | +This will build an image upgrade of [agoric-3-proposals](https://github.com/Agoric/agoric-3-proposals), a Docker based environment simulating the agoric-3 mainnet chain, using the latest agoric-sdk. ## Testing -**To build the images to latest** +**To build the upgrade image** ```shell make build @@ -24,7 +14,7 @@ By default pre-releases use the lastest image tagged `dev` in our [container rep a specific build: ```shell -DEST_IMAGE=docker pull ghcr.io/agoric/agoric-sdk:20230515033839-e56ae7 +DEST_IMAGE=ghcr.io/agoric/agoric-sdk:20230515033839-e56ae7 ``` To use a build based on local changes: ```shell @@ -33,7 +23,7 @@ make local_sdk build # or DEST_IMAGE=ghcr.io/agoric/agoric-sdk:latest make build ``` -**To run the latest upgrade interactively** +**To run the upgrade interactively** ```shell make run @@ -54,15 +44,6 @@ If you run into other problems, you might have a local `agoric-sdk:latest` that is stale. Either `make local_sdk` or delete your local image so Docker pulls from the repository instead. -**To build and run a specific upgrade** - -```shell -TARGET=agoric-upgrade-10 make build run -``` - -This will put you in `/usr/src/agoric-sdk`. You'll run commands from here. `upgrade-test-scripts` is copied here with only the test scripts for the current image. - - If you lose the connection and want to get back, ```sh # find the container id @@ -75,7 +56,7 @@ docker attach sweet_edison ```shell json='{"some":"json","here":123}' -make build BUILD_OPTS="--build-arg UPGRADE_INFO_11='$json'" +make build BUILD_OPTS="--build-arg UPGRADE_INFO='$json'" ``` Search this directory for `UPGRADE_INFO` if you want to see how it is plumbed @@ -101,24 +82,9 @@ make shell To make the wallet ui talk to your local chain, set the network config to `https://local.agoric.net/network-config` -## To add an upgrade - -1. Update the upgrade handler in app.go -2. Duplicate the last pair of UPGRADE and TEST blocks -3. Update their number from the UPGRADE / DEST block at the end -4. Make directory for tests (e.g. `agoric-upgrade-12`) -4. Make directory for ugprade (e.g. `propose-agoric-upgrade-12` with a `.keep`) -5. Update the UPGRADE/DEST pair to be your new upgrade (THIS_NAME matching the upgrade handler string in app.go) -6. Update the `Makefile` - - the two targets to `Makefile` (e.g. `propose-agoric-upgrade-12` and `agoric-upgrade-12`) - - set the default TARGET (e.g. `agoric-upgrade-12`) - - add the DEST target to the `.phony` in `Makefile` -7. Test with `make local_sdk build run` - - ## Development -You can iterate on a particular upgrade by targeting. When you exit and run again, it will be a fresh state. +When you exit and run again, the container will be a fresh state. By default targets that use "agoric-sdk:latest" will source from CI builds. To use your local checkout of agoric-sdk inside Docker run, @@ -127,9 +93,9 @@ make local_sdk ``` Builds an image: ghcr.io/agoric/agoric-sdk:latest that will be used by all your builds. -That will produce the an image tagged agoric-sdk:latest in your local resolution. (Then run `make build run` again.) +That will produce an image tagged agoric-sdk:latest in your local resolution. (Then run `make build run` again.) -You can send information from one run to the next using `/envs`. A release N can append ENV variable setting shell commands to `"$HOME/.agoric/envs"`. The N+1 release will then have them in its environment. (Because `env_setup.sh` starts with `source "$HOME/.agoric/envs"`) +For more details about the docker upgrade test framework, refer to the [agoric-3-proposals](https://github.com/Agoric/agoric-3-proposals) repository. ### IDE From 6b984ef848ece96ce998c8023934036db6ea882c Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Thu, 30 Nov 2023 19:05:25 +0000 Subject: [PATCH 02/39] chore: rename next upgrade --- golang/cosmos/app/app.go | 12 ++++++------ packages/deployment/upgrade-test/Dockerfile | 16 ++++++++-------- packages/deployment/upgrade-test/Makefile | 12 ++++++------ .../.gitignore | 0 .../actions.js | 0 .../actions.test.js | 0 .../post.test.js | 0 .../pre.test.js | 0 .../tools/vat-status.js | 0 9 files changed, 20 insertions(+), 20 deletions(-) rename packages/deployment/upgrade-test/upgrade-test-scripts/{agoric-upgrade-12 => agoric-upgrade-13}/.gitignore (100%) rename packages/deployment/upgrade-test/upgrade-test-scripts/{agoric-upgrade-12 => agoric-upgrade-13}/actions.js (100%) rename packages/deployment/upgrade-test/upgrade-test-scripts/{agoric-upgrade-12 => agoric-upgrade-13}/actions.test.js (100%) rename packages/deployment/upgrade-test/upgrade-test-scripts/{agoric-upgrade-12 => agoric-upgrade-13}/post.test.js (100%) rename packages/deployment/upgrade-test/upgrade-test-scripts/{agoric-upgrade-12 => agoric-upgrade-13}/pre.test.js (100%) rename packages/deployment/upgrade-test/upgrade-test-scripts/{agoric-upgrade-12 => agoric-upgrade-13}/tools/vat-status.js (100%) diff --git a/golang/cosmos/app/app.go b/golang/cosmos/app/app.go index b9aff7586f4..271038d1ff3 100644 --- a/golang/cosmos/app/app.go +++ b/golang/cosmos/app/app.go @@ -792,17 +792,17 @@ func NewAgoricApp( app.SetEndBlocker(app.EndBlocker) const ( - upgradeName = "agoric-upgrade-12" - upgradeNameTest = "agorictest-upgrade-12" + upgradeName = "agoric-upgrade-13" + upgradeNameTest = "agorictest-upgrade-13" ) app.UpgradeKeeper.SetUpgradeHandler( upgradeName, - upgrade12Handler(app, upgradeName), + upgrade13Handler(app, upgradeName), ) app.UpgradeKeeper.SetUpgradeHandler( upgradeNameTest, - upgrade12Handler(app, upgradeNameTest), + upgrade13Handler(app, upgradeNameTest), ) if loadLatest { @@ -825,8 +825,8 @@ func NewAgoricApp( return app } -// upgrade12Handler performs standard upgrade actions plus custom actions for upgrade-12. -func upgrade12Handler(app *GaiaApp, targetUpgrade string) func(sdk.Context, upgradetypes.Plan, module.VersionMap) (module.VersionMap, error) { +// upgrade13Handler performs standard upgrade actions plus custom actions for upgrade-13. +func upgrade13Handler(app *GaiaApp, targetUpgrade string) func(sdk.Context, upgradetypes.Plan, module.VersionMap) (module.VersionMap, error) { return func(ctx sdk.Context, plan upgradetypes.Plan, fromVm module.VersionMap) (module.VersionMap, error) { app.CheckControllerInited(false) // Record the plan to send to SwingSet diff --git a/packages/deployment/upgrade-test/Dockerfile b/packages/deployment/upgrade-test/Dockerfile index bc21bfd45f3..d39fa17a4a8 100644 --- a/packages/deployment/upgrade-test/Dockerfile +++ b/packages/deployment/upgrade-test/Dockerfile @@ -1,14 +1,14 @@ # Defaults -ARG BASE_IMAGE=ghcr.io/agoric/agoric-3-proposals@sha256:ac10c09b5927d759d37b1525b5a0bc4aeb3034df8d0f0fbb15b51203555ffb1b +ARG BASE_IMAGE=ghcr.io/agoric/agoric-3-proposals:pr-33 ARG DEST_IMAGE=ghcr.io/agoric/agoric-sdk:dev ARG BOOTSTRAP_MODE=main # TODO different naming scheme for upgrade handler (in app.go) and the image name # UPGRADE -FROM ${BASE_IMAGE} as propose-agoric-upgrade-12 -ARG BOOTSTRAP_MODE UPGRADE_INFO_12 -ENV THIS_NAME= UPGRADE_TO=agoric-upgrade-12 UPGRADE_INFO=${UPGRADE_INFO_12} BOOTSTRAP_MODE=${BOOTSTRAP_MODE} +FROM ${BASE_IMAGE} as propose-agoric-upgrade-13 +ARG BOOTSTRAP_MODE UPGRADE_INFO +ENV THIS_NAME= UPGRADE_TO="agoric-upgrade-13" UPGRADE_INFO=${UPGRADE_INFO} BOOTSTRAP_MODE=${BOOTSTRAP_MODE} WORKDIR /usr/src/agoric-sdk/ COPY --chmod=755 ./env_setup.sh ./start_to_to.sh ./upgrade-test-scripts/ @@ -16,12 +16,12 @@ SHELL ["/bin/bash", "-c"] RUN . ./upgrade-test-scripts/start_to_to.sh # DEST (TEST) -#this is agoric-upgrade-12 / multi-collateral, etc. +#this is agoric-upgrade-13 ARG DEST_IMAGE -FROM ${DEST_IMAGE} as agoric-upgrade-12 +FROM ${DEST_IMAGE} as agoric-upgrade-13 ARG BOOTSTRAP_MODE -ENV THIS_NAME=agoric-upgrade-12 BOOTSTRAP_MODE=${BOOTSTRAP_MODE} USE_JS=1 -COPY --from=propose-agoric-upgrade-12 /root/.agoric /root/.agoric +ENV THIS_NAME=agoric-upgrade-13 BOOTSTRAP_MODE=${BOOTSTRAP_MODE} USE_JS=1 +COPY --from=propose-agoric-upgrade-13 /root/.agoric /root/.agoric # start-chain boilerplate WORKDIR /usr/src/agoric-sdk/ COPY ./env_setup.sh ./start_to_to.sh ./package.json ./*.js ./upgrade-test-scripts/ diff --git a/packages/deployment/upgrade-test/Makefile b/packages/deployment/upgrade-test/Makefile index 5ab47afa0f4..ce3e13f8fa9 100644 --- a/packages/deployment/upgrade-test/Makefile +++ b/packages/deployment/upgrade-test/Makefile @@ -2,7 +2,7 @@ REPOSITORY = agoric/upgrade-test # use :dev (latest prerelease image) unless we build local sdk DEST_IMAGE ?= $(if $(findstring local_sdk,$(MAKECMDGOALS)),ghcr.io/agoric/agoric-sdk:latest,ghcr.io/agoric/agoric-sdk:dev) BOOTSTRAP_MODE?=main -TARGET?=agoric-upgrade-12 +TARGET?=agoric-upgrade-13 dockerLabel?=$(TARGET) @echo target: $(TARGET) @@ -13,11 +13,11 @@ BUILD = docker build --progress=plain $(BUILD_OPTS) \ --build-arg BOOTSTRAP_MODE=$(BOOTSTRAP_MODE) --build-arg DEST_IMAGE=$(DEST_IMAGE) \ -f Dockerfile upgrade-test-scripts -propose-agoric-upgrade-12: - $(BUILD) --target propose-agoric-upgrade-12 -t $(REPOSITORY):propose-agoric-upgrade-12$(TAG_SUFFIX) +propose-agoric-upgrade-13: + $(BUILD) --target propose-agoric-upgrade-13 -t $(REPOSITORY):propose-agoric-upgrade-13$(TAG_SUFFIX) -agoric-upgrade-12: propose-agoric-upgrade-12 - $(BUILD) --target agoric-upgrade-12 -t $(REPOSITORY):agoric-upgrade-12$(TAG_SUFFIX) +agoric-upgrade-13: propose-agoric-upgrade-13 + $(BUILD) --target agoric-upgrade-13 -t $(REPOSITORY):agoric-upgrade-13$(TAG_SUFFIX) # build main bootstrap build: $(TARGET) @@ -43,4 +43,4 @@ run_test: shell: docker exec -it `docker ps --latest --format json | jq -r .Names` bash -.PHONY: local_sdk agoric-upgrade-7-2 agoric-upgrade-8 agoric-upgrade-8-1 agoric-upgrade-9 agoric-upgrade-10 agoric-upgrade-11 agoric-upgrade-12 build build_test run +.PHONY: local_sdk agoric-upgrade-13 build build_test run diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-12/.gitignore b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/.gitignore similarity index 100% rename from packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-12/.gitignore rename to packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/.gitignore diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-12/actions.js b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.js similarity index 100% rename from packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-12/actions.js rename to packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.js diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-12/actions.test.js b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.test.js similarity index 100% rename from packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-12/actions.test.js rename to packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.test.js diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-12/post.test.js b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/post.test.js similarity index 100% rename from packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-12/post.test.js rename to packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/post.test.js diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-12/pre.test.js b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/pre.test.js similarity index 100% rename from packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-12/pre.test.js rename to packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/pre.test.js diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-12/tools/vat-status.js b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/tools/vat-status.js similarity index 100% rename from packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-12/tools/vat-status.js rename to packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/tools/vat-status.js From 64267759853dfa7f2de18527d7e2104363fe6017 Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Thu, 30 Nov 2023 19:06:48 +0000 Subject: [PATCH 03/39] chore: remove upgrade-12 and other actions --- golang/cosmos/app/app.go | 6 --- .../agoric-upgrade-13/.gitignore | 2 - .../agoric-upgrade-13/actions.test.js | 51 +------------------ .../agoric-upgrade-13/post.test.js | 6 --- .../agoric-upgrade-13/pre.test.js | 18 ------- 5 files changed, 2 insertions(+), 81 deletions(-) diff --git a/golang/cosmos/app/app.go b/golang/cosmos/app/app.go index 271038d1ff3..e276b988d85 100644 --- a/golang/cosmos/app/app.go +++ b/golang/cosmos/app/app.go @@ -103,7 +103,6 @@ import ( "github.com/tendermint/tendermint/libs/log" tmos "github.com/tendermint/tendermint/libs/os" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - tmtypes "github.com/tendermint/tendermint/types" dbm "github.com/tendermint/tm-db" gaiaappparams "github.com/Agoric/agoric-sdk/golang/cosmos/app/params" @@ -832,11 +831,6 @@ func upgrade13Handler(app *GaiaApp, targetUpgrade string) func(sdk.Context, upgr // Record the plan to send to SwingSet app.upgradePlan = &plan - // Reflect default BlockParams.MaxBytes change to current params - cp := app.BaseApp.GetConsensusParams(ctx) - cp.Block.MaxBytes = tmtypes.DefaultBlockParams().MaxBytes - app.BaseApp.StoreConsensusParams(ctx, cp) - // Always run module migrations mvm, err := app.mm.RunMigrations(ctx, app.configurator, fromVm) if err != nil { diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/.gitignore b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/.gitignore index 781644c0395..e69de29bb2d 100644 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/.gitignore +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/.gitignore @@ -1,2 +0,0 @@ -upgrade-walletFactory-permit.json -upgrade-walletFactory.js diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.test.js b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.test.js index 00e49a04dc9..823296571d0 100644 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.test.js +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.test.js @@ -1,30 +1,11 @@ import test from 'ava'; -import { agd, agoric, agops } from '../cliHelper.js'; -import { GOV1ADDR, SDK_ROOT } from '../constants.js'; -import { installBundles, runZcfUpgrade, runProber } from './actions.js'; +import { agops } from '../cliHelper.js'; +import { GOV1ADDR } from '../constants.js'; import { adjustVault, closeVault, mintIST, openVault } from '../econHelpers.js'; test.before(async t => { await mintIST(GOV1ADDR, 12340000000, 10000, 2000); - - const bundlesData = [ - { - name: 'Zcf-upgrade', - filePath: `${SDK_ROOT}/packages/zoe/src/contractFacet/vatRoot.js`, - }, - { - name: 'Zoe-upgrade', - filePath: `${SDK_ROOT}/packages/vats/src/vat-zoe.js`, - }, - { - name: 'prober-contract', - filePath: `${SDK_ROOT}/packages/boot/test/bootstrapTests/zcfProbe.js`, - }, - ]; - - // @ts-expect-error - t.context.bundleIds = await installBundles(bundlesData); }); test.skip('Open Vaults', async t => { @@ -38,31 +19,3 @@ test.skip('Open Vaults', async t => { await adjustVault(GOV1ADDR, vaultId, { giveCollateral: 2.0 }); await closeVault(GOV1ADDR, vaultId, 5.75); }); - -test.skip('Run Prober (first time)', async t => { - // @ts-expect-error - await runProber(t.context.bundleIds['prober-contract']); - const data = await agd.query('vstorage', 'data', 'published.prober-asid9a'); - const value = JSON.parse(data.value); - t.is(value.values[0], 'false'); -}); - -test.skip('Upgrade Zoe and ZCF', async t => { - await runZcfUpgrade( - // @ts-expect-error - t.context.bundleIds['Zcf-upgrade'], - // @ts-expect-error - t.context.bundleIds['Zoe-upgrade'], - ); - - t.pass(); -}); - -test.skip('Run Prober (second time)', async t => { - // @ts-expect-error - await runProber(t.context.bundleIds['prober-contract']); - - const data = await agd.query('vstorage', 'data', 'published.prober-asid9a'); - const value = JSON.parse(data.value); - t.is(value.values[0], 'true'); -}); diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/post.test.js b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/post.test.js index 8483e97e403..8c8d4b3bbde 100644 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/post.test.js +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/post.test.js @@ -1,7 +1 @@ import test from 'ava'; -import { getIncarnation } from './tools/vat-status.js'; - -test.skip(`verify Zoe vat incarnation`, async t => { - const incarantion = await getIncarnation('zoe'); - t.is(incarantion, 1); -}); diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/pre.test.js b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/pre.test.js index 09113d99805..567fb1ec863 100644 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/pre.test.js +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/pre.test.js @@ -1,27 +1,9 @@ import test from 'ava'; import { waitForBlock } from '../commonUpgradeHelpers.js'; -import { agd } from '../cliHelper.js'; -import { getIncarnation } from './tools/vat-status.js'; test.before(async () => { console.log('Wait for upgrade to settle'); await waitForBlock(5); }); - -test(`Ensure Zoe Vat is at 0`, async t => { - const incarnation = await getIncarnation('zoe'); - t.is(incarnation, 0); -}); - -test('Ensure MaxBytes param was updated', async t => { - const { value: rawParams } = await agd.query( - 'params', - 'subspace', - 'baseapp', - 'BlockParams', - ); - const blockParams = JSON.parse(rawParams); - t.is(blockParams.max_bytes, '5242880'); -}); From 2c64440d5b5957076ad9ac7b9243de3b600c859f Mon Sep 17 00:00:00 2001 From: Mathieu Hofman <86499+mhofman@users.noreply.github.com> Date: Mon, 4 Dec 2023 09:41:03 -0800 Subject: [PATCH 04/39] fix: handle Node 18 breaking change (#8600) --- .../test/snapshots/test-xsnap-store.js.md | 8 +- .../test/snapshots/test-xsnap-store.js.snap | Bin 503 -> 503 bytes patches/ses+0.18.4.patch | 1375 +++++++++++++++++ 3 files changed, 1379 insertions(+), 4 deletions(-) create mode 100644 patches/ses+0.18.4.patch diff --git a/packages/SwingSet/test/snapshots/test-xsnap-store.js.md b/packages/SwingSet/test/snapshots/test-xsnap-store.js.md index 39a7b873085..0d8781a3ccb 100644 --- a/packages/SwingSet/test/snapshots/test-xsnap-store.js.md +++ b/packages/SwingSet/test/snapshots/test-xsnap-store.js.md @@ -20,8 +20,8 @@ Generated by [AVA](https://avajs.dev). { compressSeconds: 0, dbSaveSeconds: 0, - hash: '49658a6d771258ceebed044629865b8e16b898a5c242b14449810fe552495d4a', - uncompressedSize: 725739, + hash: '74cd3c13ad240ccf19507ff2227d888d1267a64cbf88722abb24576f6df50676', + uncompressedSize: 728531, } > after use of harden() - sensitive to SES-shim, XS, and supervisor @@ -29,6 +29,6 @@ Generated by [AVA](https://avajs.dev). { compressSeconds: 0, dbSaveSeconds: 0, - hash: '95151df3313ef37578364add6dbdf2561c26b5328f511700613c2a4f93bb51f0', - uncompressedSize: 725899, + hash: '637b86b253d4a071c5522586d21c9b00e2f609461f3d7686c52d641adb6c2790', + uncompressedSize: 728691, } diff --git a/packages/SwingSet/test/snapshots/test-xsnap-store.js.snap b/packages/SwingSet/test/snapshots/test-xsnap-store.js.snap index 8b1eeeacdcb6b2f168f76a9511c205856b2990e0..a3c4241fcf0553e84f9facf2b89cdfbc6191afa5 100644 GIT binary patch literal 503 zcmV}PJ00000000BklD%#dK@i7pV<#Y?D7K&lZ3!YqdwctJsX{?baZM<9cV@YR z^R0Dzwjw%2N5>a2#y1Dow;KRE*bihr$sT3fAdkuM#h5Qg zg;C!}{TcO?oXp9|d-n7kPdM> zU!=NOp3|%9oZ1d(TCcF*G%5BEjjbxQGswL(#Y&;_P=HoO tdC5VE+=5e{>yq7*ZF;e1`*z26osh;rYuf{MFJJu+;=h%cfoeMh008R$?_&S} literal 503 zcmVrmeD}C80L&-~V4MSPg=JO6y{Uz%z=KjuQC~UBwb!OD4Tlnh(#{F) zq*25^_>)zqGTEehyV;G*AZ7ql(&ND_Bcvgu@G0F3?NoSm=LJ~`*5sWG?2&u|a t5@xC9zGlV<;>$ { let Symbol,entries,fromEntries,getOwnPropertyDescriptors,defineProperties,arrayMap;$h‍_imports([["./commons.js", [["Symbol", [$h‍_a => (Symbol = $h‍_a)]],["entries", [$h‍_a => (entries = $h‍_a)]],["fromEntries", [$h‍_a => (fromEntries = $h‍_a)]],["getOwnPropertyDescriptors", [$h‍_a => (getOwnPropertyDescriptors = $h‍_a)]],["defineProperties", [$h‍_a => (defineProperties = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]]]]]); ++ ++ ++ ++ ++ ++ ++ ++ ++/** ++ * This taming replaces the original `Symbol` constructor with one that seems ++ * identical, except that all its properties are "temporarily" configurable. ++ * This assumes two succeeding phases of processing: A whitelisting phase, that ++ * removes all properties not on the whitelist (which requires them to be ++ * configurable) and a global hardening step that freezes all primordials, ++ * returning these properties to their non-configurable status. ++ * ++ * However, the ses shim is constructed to enable vetter shims to run between ++ * repair and global hardening. Such vetter shims will see the replacement ++ * `Symbol` constructor with any "extra" properties that the whitelisting will ++ * remove, and with the well-known-symbol properties being configurable, in ++ * violation of the JavaScript spec. ++ * ++ * Note that the spec refers to the global `Symbol` function as the ++ * ["Symbol Constructor"](https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-symbol-constructor) ++ * even though it has a call behavior (can be called as a function) and does not ++ * not have a construct behavior (cannot be called with `new`). Accordingly, ++ * to tame it, we must replace it with a function without a construct ++ * behavior. ++ * ++ * @returns {SymbolConstructor} ++ */ ++const tameSymbolConstructor= ()=> { ++ const OriginalSymbol= Symbol; ++ const SymbolPrototype= OriginalSymbol.prototype; ++ ++ const SharedSymbol= { ++ Symbol(description) { ++ return OriginalSymbol(description); ++ }}. ++ Symbol; ++ ++ defineProperties(SymbolPrototype, { ++ constructor: { ++ value: SharedSymbol ++ // leave other `constructor` attributes as is ++}}); ++ ++ ++ const originalDescsEntries= entries( ++ getOwnPropertyDescriptors(OriginalSymbol)); ++ ++ const descs= fromEntries( ++ arrayMap(originalDescsEntries, ([name, desc])=> [ ++ name, ++ { ...desc, configurable: true}])); ++ ++ ++ defineProperties(SharedSymbol, descs); ++ ++ return (/** @type {SymbolConstructor} */ SharedSymbol); ++ };$h‍_once.tameSymbolConstructor(tameSymbolConstructor); ++}) ++, ++// === functors[44] === + (({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let whitelist,FunctionInstance,isAccessorPermit,Map,String,TypeError,arrayFilter,arrayIncludes,arrayMap,entries,getOwnPropertyDescriptor,getPrototypeOf,isObject,mapGet,objectHasOwnProperty,ownKeys,symbolKeyFor;$h‍_imports([["./whitelist.js", [["whitelist", [$h‍_a => (whitelist = $h‍_a)]],["FunctionInstance", [$h‍_a => (FunctionInstance = $h‍_a)]],["isAccessorPermit", [$h‍_a => (isAccessorPermit = $h‍_a)]]]],["./commons.js", [["Map", [$h‍_a => (Map = $h‍_a)]],["String", [$h‍_a => (String = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayIncludes", [$h‍_a => (arrayIncludes = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["entries", [$h‍_a => (entries = $h‍_a)]],["getOwnPropertyDescriptor", [$h‍_a => (getOwnPropertyDescriptor = $h‍_a)]],["getPrototypeOf", [$h‍_a => (getPrototypeOf = $h‍_a)]],["isObject", [$h‍_a => (isObject = $h‍_a)]],["mapGet", [$h‍_a => (mapGet = $h‍_a)]],["objectHasOwnProperty", [$h‍_a => (objectHasOwnProperty = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["symbolKeyFor", [$h‍_a => (symbolKeyFor = $h‍_a)]]]]]); + + +@@ -9182,8 +9248,9 @@ function whitelistIntrinsics( + }$h‍_once.default( whitelistIntrinsics); + }) + , +-// === functors[44] === +-(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden;$h‍_imports([["./commons.js", [["FERAL_FUNCTION", [$h‍_a => (FERAL_FUNCTION = $h‍_a)]],["FERAL_EVAL", [$h‍_a => (FERAL_EVAL = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["is", [$h‍_a => (is = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["stringSplit", [$h‍_a => (stringSplit = $h‍_a)]],["noEvalEvaluate", [$h‍_a => (noEvalEvaluate = $h‍_a)]]]],["./error/stringify-utils.js", [["enJoin", [$h‍_a => (enJoin = $h‍_a)]]]],["./make-hardener.js", [["makeHardener", [$h‍_a => (makeHardener = $h‍_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector", [$h‍_a => (makeIntrinsicsCollector = $h‍_a)]]]],["./whitelist-intrinsics.js", [["default", [$h‍_a => (whitelistIntrinsics = $h‍_a)]]]],["./tame-function-constructors.js", [["default", [$h‍_a => (tameFunctionConstructors = $h‍_a)]]]],["./tame-date-constructor.js", [["default", [$h‍_a => (tameDateConstructor = $h‍_a)]]]],["./tame-math-object.js", [["default", [$h‍_a => (tameMathObject = $h‍_a)]]]],["./tame-regexp-constructor.js", [["default", [$h‍_a => (tameRegExpConstructor = $h‍_a)]]]],["./enable-property-overrides.js", [["default", [$h‍_a => (enablePropertyOverrides = $h‍_a)]]]],["./tame-locale-methods.js", [["default", [$h‍_a => (tameLocaleMethods = $h‍_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties", [$h‍_a => (setGlobalObjectConstantProperties = $h‍_a)]],["setGlobalObjectMutableProperties", [$h‍_a => (setGlobalObjectMutableProperties = $h‍_a)]],["setGlobalObjectEvaluators", [$h‍_a => (setGlobalObjectEvaluators = $h‍_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator", [$h‍_a => (makeSafeEvaluator = $h‍_a)]]]],["./whitelist.js", [["initialGlobalPropertyNames", [$h‍_a => (initialGlobalPropertyNames = $h‍_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./tame-domains.js", [["tameDomains", [$h‍_a => (tameDomains = $h‍_a)]]]],["./error/tame-console.js", [["tameConsole", [$h‍_a => (tameConsole = $h‍_a)]]]],["./error/tame-error-constructor.js", [["default", [$h‍_a => (tameErrorConstructor = $h‍_a)]]]],["./error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]],["makeAssert", [$h‍_a => (makeAssert = $h‍_a)]]]],["./environment-options.js", [["makeEnvironmentCaptor", [$h‍_a => (makeEnvironmentCaptor = $h‍_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics", [$h‍_a => (getAnonymousIntrinsics = $h‍_a)]]]],["./compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./tame-harden.js", [["tameHarden", [$h‍_a => (tameHarden = $h‍_a)]]]]]); ++// === functors[45] === ++(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden,tameSymbolConstructor;$h‍_imports([["./commons.js", [["FERAL_FUNCTION", [$h‍_a => (FERAL_FUNCTION = $h‍_a)]],["FERAL_EVAL", [$h‍_a => (FERAL_EVAL = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["is", [$h‍_a => (is = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["stringSplit", [$h‍_a => (stringSplit = $h‍_a)]],["noEvalEvaluate", [$h‍_a => (noEvalEvaluate = $h‍_a)]]]],["./error/stringify-utils.js", [["enJoin", [$h‍_a => (enJoin = $h‍_a)]]]],["./make-hardener.js", [["makeHardener", [$h‍_a => (makeHardener = $h‍_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector", [$h‍_a => (makeIntrinsicsCollector = $h‍_a)]]]],["./whitelist-intrinsics.js", [["default", [$h‍_a => (whitelistIntrinsics = $h‍_a)]]]],["./tame-function-constructors.js", [["default", [$h‍_a => (tameFunctionConstructors = $h‍_a)]]]],["./tame-date-constructor.js", [["default", [$h‍_a => (tameDateConstructor = $h‍_a)]]]],["./tame-math-object.js", [["default", [$h‍_a => (tameMathObject = $h‍_a)]]]],["./tame-regexp-constructor.js", [["default", [$h‍_a => (tameRegExpConstructor = $h‍_a)]]]],["./enable-property-overrides.js", [["default", [$h‍_a => (enablePropertyOverrides = $h‍_a)]]]],["./tame-locale-methods.js", [["default", [$h‍_a => (tameLocaleMethods = $h‍_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties", [$h‍_a => (setGlobalObjectConstantProperties = $h‍_a)]],["setGlobalObjectMutableProperties", [$h‍_a => (setGlobalObjectMutableProperties = $h‍_a)]],["setGlobalObjectEvaluators", [$h‍_a => (setGlobalObjectEvaluators = $h‍_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator", [$h‍_a => (makeSafeEvaluator = $h‍_a)]]]],["./whitelist.js", [["initialGlobalPropertyNames", [$h‍_a => (initialGlobalPropertyNames = $h‍_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./tame-domains.js", [["tameDomains", [$h‍_a => (tameDomains = $h‍_a)]]]],["./error/tame-console.js", [["tameConsole", [$h‍_a => (tameConsole = $h‍_a)]]]],["./error/tame-error-constructor.js", [["default", [$h‍_a => (tameErrorConstructor = $h‍_a)]]]],["./error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]],["makeAssert", [$h‍_a => (makeAssert = $h‍_a)]]]],["./environment-options.js", [["makeEnvironmentCaptor", [$h‍_a => (makeEnvironmentCaptor = $h‍_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics", [$h‍_a => (getAnonymousIntrinsics = $h‍_a)]]]],["./compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./tame-harden.js", [["tameHarden", [$h‍_a => (tameHarden = $h‍_a)]]]],["./tame-symbol-constructor.js", [["tameSymbolConstructor", [$h‍_a => (tameSymbolConstructor = $h‍_a)]]]]]); ++ + + + +@@ -9448,6 +9515,10 @@ const repairIntrinsics= (options= {})=> { + + tameDomains(domainTaming); + ++ const SharedSymbol= tameSymbolConstructor(); ++ // Must happen before `makeIntrinsicsCollector()` ++ globalThis.Symbol= SharedSymbol; ++ + const { addIntrinsics, completePrototypes, finalIntrinsics}= + makeIntrinsicsCollector(); + +@@ -9593,7 +9664,7 @@ const lockdown= (options= {})=> { + };$h‍_once.lockdown(lockdown); + }) + , +-// === functors[45] === ++// === functors[46] === + (({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let globalThis,TypeError,assign,tameFunctionToString,getGlobalIntrinsics,lockdown,makeCompartmentConstructor,assert;$h‍_imports([["./src/commons.js", [["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["assign", [$h‍_a => (assign = $h‍_a)]]]],["./src/tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./src/intrinsics.js", [["getGlobalIntrinsics", [$h‍_a => (getGlobalIntrinsics = $h‍_a)]]]],["./src/lockdown-shim.js", [["lockdown", [$h‍_a => (lockdown = $h‍_a)]]]],["./src/compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./src/error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]]]]]); + + +@@ -9680,6 +9751,7 @@ assign(globalThis, { + FERAL_REG_EXP: cell("FERAL_REG_EXP"), + Set: cell("Set"), + String: cell("String"), ++ Symbol: cell("Symbol"), + WeakMap: cell("WeakMap"), + WeakSet: cell("WeakSet"), + FERAL_ERROR: cell("FERAL_ERROR"), +@@ -9962,6 +10034,9 @@ assign(globalThis, { + { + default: cell("default"), + }, ++ { ++ tameSymbolConstructor: cell("tameSymbolConstructor"), ++ }, + { + default: cell("default"), + }, +@@ -10016,6 +10091,7 @@ function observeImports(map, importName, importIndex) { + FERAL_REG_EXP: cells[0].FERAL_REG_EXP.set, + Set: cells[0].Set.set, + String: cells[0].String.set, ++ Symbol: cells[0].Symbol.set, + WeakMap: cells[0].WeakMap.set, + WeakSet: cells[0].WeakSet.set, + FERAL_ERROR: cells[0].FERAL_ERROR.set, +@@ -10729,16 +10805,28 @@ function observeImports(map, importName, importIndex) { + imports(entries) { + const map = new Map(entries); + observeImports(map, "./commons.js", 0); +- observeImports(map, "./whitelist.js", 17); + }, + liveVar: { + }, + onceVar: { +- default: cells[43].default.set, ++ tameSymbolConstructor: cells[43].tameSymbolConstructor.set, + }, + importMeta: {}, + }); + functors[44]({ ++ imports(entries) { ++ const map = new Map(entries); ++ observeImports(map, "./commons.js", 0); ++ observeImports(map, "./whitelist.js", 17); ++ }, ++ liveVar: { ++ }, ++ onceVar: { ++ default: cells[44].default.set, ++ }, ++ importMeta: {}, ++ }); ++ functors[45]({ + imports(entries) { + const map = new Map(entries); + observeImports(map, "./commons.js", 0); +@@ -10762,25 +10850,26 @@ function observeImports(map, importName, importIndex) { + observeImports(map, "./tame-locale-methods.js", 40); + observeImports(map, "./tame-math-object.js", 41); + observeImports(map, "./tame-regexp-constructor.js", 42); +- observeImports(map, "./whitelist-intrinsics.js", 43); ++ observeImports(map, "./tame-symbol-constructor.js", 43); ++ observeImports(map, "./whitelist-intrinsics.js", 44); + observeImports(map, "./whitelist.js", 17); + }, + liveVar: { + }, + onceVar: { +- repairIntrinsics: cells[44].repairIntrinsics.set, +- lockdown: cells[44].lockdown.set, ++ repairIntrinsics: cells[45].repairIntrinsics.set, ++ lockdown: cells[45].lockdown.set, + }, + importMeta: {}, + }); +- functors[45]({ ++ functors[46]({ + imports(entries) { + const map = new Map(entries); + observeImports(map, "./src/commons.js", 0); + observeImports(map, "./src/compartment-shim.js", 23); + observeImports(map, "./src/error/assert.js", 5); + observeImports(map, "./src/intrinsics.js", 24); +- observeImports(map, "./src/lockdown-shim.js", 44); ++ observeImports(map, "./src/lockdown-shim.js", 45); + observeImports(map, "./src/tame-function-tostring.js", 38); + }, + liveVar: { +diff --git a/node_modules/ses/dist/lockdown.mjs b/node_modules/ses/dist/lockdown.mjs +index 9584dfb..43ee4f5 100644 +--- a/node_modules/ses/dist/lockdown.mjs ++++ b/node_modules/ses/dist/lockdown.mjs +@@ -37,9 +37,10 @@ const { + RegExp: FERAL_REG_EXP, + Set, + String, ++ Symbol, + WeakMap, + WeakSet}= +- globalThis;$h‍_once.Array(Array);$h‍_once.Date(Date);$h‍_once.FinalizationRegistry(FinalizationRegistry);$h‍_once.Float32Array(Float32Array);$h‍_once.JSON(JSON);$h‍_once.Map(Map);$h‍_once.Math(Math);$h‍_once.Number(Number);$h‍_once.Object(Object);$h‍_once.Promise(Promise);$h‍_once.Proxy(Proxy);$h‍_once.Reflect(Reflect);$h‍_once.FERAL_REG_EXP(FERAL_REG_EXP);$h‍_once.Set(Set);$h‍_once.String(String);$h‍_once.WeakMap(WeakMap);$h‍_once.WeakSet(WeakSet); ++ globalThis;$h‍_once.Array(Array);$h‍_once.Date(Date);$h‍_once.FinalizationRegistry(FinalizationRegistry);$h‍_once.Float32Array(Float32Array);$h‍_once.JSON(JSON);$h‍_once.Map(Map);$h‍_once.Math(Math);$h‍_once.Number(Number);$h‍_once.Object(Object);$h‍_once.Promise(Promise);$h‍_once.Proxy(Proxy);$h‍_once.Reflect(Reflect);$h‍_once.FERAL_REG_EXP(FERAL_REG_EXP);$h‍_once.Set(Set);$h‍_once.String(String);$h‍_once.Symbol(Symbol);$h‍_once.WeakMap(WeakMap);$h‍_once.WeakSet(WeakSet); + + const { + // The feral Error constructor is safe for internal use, but must not be +@@ -8865,6 +8866,71 @@ function tameRegExpConstructor(regExpTaming= 'safe') { + }) + , + // === functors[43] === ++(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let Symbol,entries,fromEntries,getOwnPropertyDescriptors,defineProperties,arrayMap;$h‍_imports([["./commons.js", [["Symbol", [$h‍_a => (Symbol = $h‍_a)]],["entries", [$h‍_a => (entries = $h‍_a)]],["fromEntries", [$h‍_a => (fromEntries = $h‍_a)]],["getOwnPropertyDescriptors", [$h‍_a => (getOwnPropertyDescriptors = $h‍_a)]],["defineProperties", [$h‍_a => (defineProperties = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]]]]]); ++ ++ ++ ++ ++ ++ ++ ++ ++/** ++ * This taming replaces the original `Symbol` constructor with one that seems ++ * identical, except that all its properties are "temporarily" configurable. ++ * This assumes two succeeding phases of processing: A whitelisting phase, that ++ * removes all properties not on the whitelist (which requires them to be ++ * configurable) and a global hardening step that freezes all primordials, ++ * returning these properties to their non-configurable status. ++ * ++ * However, the ses shim is constructed to enable vetter shims to run between ++ * repair and global hardening. Such vetter shims will see the replacement ++ * `Symbol` constructor with any "extra" properties that the whitelisting will ++ * remove, and with the well-known-symbol properties being configurable, in ++ * violation of the JavaScript spec. ++ * ++ * Note that the spec refers to the global `Symbol` function as the ++ * ["Symbol Constructor"](https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-symbol-constructor) ++ * even though it has a call behavior (can be called as a function) and does not ++ * not have a construct behavior (cannot be called with `new`). Accordingly, ++ * to tame it, we must replace it with a function without a construct ++ * behavior. ++ * ++ * @returns {SymbolConstructor} ++ */ ++const tameSymbolConstructor= ()=> { ++ const OriginalSymbol= Symbol; ++ const SymbolPrototype= OriginalSymbol.prototype; ++ ++ const SharedSymbol= { ++ Symbol(description) { ++ return OriginalSymbol(description); ++ }}. ++ Symbol; ++ ++ defineProperties(SymbolPrototype, { ++ constructor: { ++ value: SharedSymbol ++ // leave other `constructor` attributes as is ++}}); ++ ++ ++ const originalDescsEntries= entries( ++ getOwnPropertyDescriptors(OriginalSymbol)); ++ ++ const descs= fromEntries( ++ arrayMap(originalDescsEntries, ([name, desc])=> [ ++ name, ++ { ...desc, configurable: true}])); ++ ++ ++ defineProperties(SharedSymbol, descs); ++ ++ return (/** @type {SymbolConstructor} */ SharedSymbol); ++ };$h‍_once.tameSymbolConstructor(tameSymbolConstructor); ++}) ++, ++// === functors[44] === + (({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let whitelist,FunctionInstance,isAccessorPermit,Map,String,TypeError,arrayFilter,arrayIncludes,arrayMap,entries,getOwnPropertyDescriptor,getPrototypeOf,isObject,mapGet,objectHasOwnProperty,ownKeys,symbolKeyFor;$h‍_imports([["./whitelist.js", [["whitelist", [$h‍_a => (whitelist = $h‍_a)]],["FunctionInstance", [$h‍_a => (FunctionInstance = $h‍_a)]],["isAccessorPermit", [$h‍_a => (isAccessorPermit = $h‍_a)]]]],["./commons.js", [["Map", [$h‍_a => (Map = $h‍_a)]],["String", [$h‍_a => (String = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayIncludes", [$h‍_a => (arrayIncludes = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["entries", [$h‍_a => (entries = $h‍_a)]],["getOwnPropertyDescriptor", [$h‍_a => (getOwnPropertyDescriptor = $h‍_a)]],["getPrototypeOf", [$h‍_a => (getPrototypeOf = $h‍_a)]],["isObject", [$h‍_a => (isObject = $h‍_a)]],["mapGet", [$h‍_a => (mapGet = $h‍_a)]],["objectHasOwnProperty", [$h‍_a => (objectHasOwnProperty = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["symbolKeyFor", [$h‍_a => (symbolKeyFor = $h‍_a)]]]]]); + + +@@ -9182,8 +9248,9 @@ function whitelistIntrinsics( + }$h‍_once.default( whitelistIntrinsics); + }) + , +-// === functors[44] === +-(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden;$h‍_imports([["./commons.js", [["FERAL_FUNCTION", [$h‍_a => (FERAL_FUNCTION = $h‍_a)]],["FERAL_EVAL", [$h‍_a => (FERAL_EVAL = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["is", [$h‍_a => (is = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["stringSplit", [$h‍_a => (stringSplit = $h‍_a)]],["noEvalEvaluate", [$h‍_a => (noEvalEvaluate = $h‍_a)]]]],["./error/stringify-utils.js", [["enJoin", [$h‍_a => (enJoin = $h‍_a)]]]],["./make-hardener.js", [["makeHardener", [$h‍_a => (makeHardener = $h‍_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector", [$h‍_a => (makeIntrinsicsCollector = $h‍_a)]]]],["./whitelist-intrinsics.js", [["default", [$h‍_a => (whitelistIntrinsics = $h‍_a)]]]],["./tame-function-constructors.js", [["default", [$h‍_a => (tameFunctionConstructors = $h‍_a)]]]],["./tame-date-constructor.js", [["default", [$h‍_a => (tameDateConstructor = $h‍_a)]]]],["./tame-math-object.js", [["default", [$h‍_a => (tameMathObject = $h‍_a)]]]],["./tame-regexp-constructor.js", [["default", [$h‍_a => (tameRegExpConstructor = $h‍_a)]]]],["./enable-property-overrides.js", [["default", [$h‍_a => (enablePropertyOverrides = $h‍_a)]]]],["./tame-locale-methods.js", [["default", [$h‍_a => (tameLocaleMethods = $h‍_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties", [$h‍_a => (setGlobalObjectConstantProperties = $h‍_a)]],["setGlobalObjectMutableProperties", [$h‍_a => (setGlobalObjectMutableProperties = $h‍_a)]],["setGlobalObjectEvaluators", [$h‍_a => (setGlobalObjectEvaluators = $h‍_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator", [$h‍_a => (makeSafeEvaluator = $h‍_a)]]]],["./whitelist.js", [["initialGlobalPropertyNames", [$h‍_a => (initialGlobalPropertyNames = $h‍_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./tame-domains.js", [["tameDomains", [$h‍_a => (tameDomains = $h‍_a)]]]],["./error/tame-console.js", [["tameConsole", [$h‍_a => (tameConsole = $h‍_a)]]]],["./error/tame-error-constructor.js", [["default", [$h‍_a => (tameErrorConstructor = $h‍_a)]]]],["./error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]],["makeAssert", [$h‍_a => (makeAssert = $h‍_a)]]]],["./environment-options.js", [["makeEnvironmentCaptor", [$h‍_a => (makeEnvironmentCaptor = $h‍_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics", [$h‍_a => (getAnonymousIntrinsics = $h‍_a)]]]],["./compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./tame-harden.js", [["tameHarden", [$h‍_a => (tameHarden = $h‍_a)]]]]]); ++// === functors[45] === ++(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden,tameSymbolConstructor;$h‍_imports([["./commons.js", [["FERAL_FUNCTION", [$h‍_a => (FERAL_FUNCTION = $h‍_a)]],["FERAL_EVAL", [$h‍_a => (FERAL_EVAL = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["is", [$h‍_a => (is = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["stringSplit", [$h‍_a => (stringSplit = $h‍_a)]],["noEvalEvaluate", [$h‍_a => (noEvalEvaluate = $h‍_a)]]]],["./error/stringify-utils.js", [["enJoin", [$h‍_a => (enJoin = $h‍_a)]]]],["./make-hardener.js", [["makeHardener", [$h‍_a => (makeHardener = $h‍_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector", [$h‍_a => (makeIntrinsicsCollector = $h‍_a)]]]],["./whitelist-intrinsics.js", [["default", [$h‍_a => (whitelistIntrinsics = $h‍_a)]]]],["./tame-function-constructors.js", [["default", [$h‍_a => (tameFunctionConstructors = $h‍_a)]]]],["./tame-date-constructor.js", [["default", [$h‍_a => (tameDateConstructor = $h‍_a)]]]],["./tame-math-object.js", [["default", [$h‍_a => (tameMathObject = $h‍_a)]]]],["./tame-regexp-constructor.js", [["default", [$h‍_a => (tameRegExpConstructor = $h‍_a)]]]],["./enable-property-overrides.js", [["default", [$h‍_a => (enablePropertyOverrides = $h‍_a)]]]],["./tame-locale-methods.js", [["default", [$h‍_a => (tameLocaleMethods = $h‍_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties", [$h‍_a => (setGlobalObjectConstantProperties = $h‍_a)]],["setGlobalObjectMutableProperties", [$h‍_a => (setGlobalObjectMutableProperties = $h‍_a)]],["setGlobalObjectEvaluators", [$h‍_a => (setGlobalObjectEvaluators = $h‍_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator", [$h‍_a => (makeSafeEvaluator = $h‍_a)]]]],["./whitelist.js", [["initialGlobalPropertyNames", [$h‍_a => (initialGlobalPropertyNames = $h‍_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./tame-domains.js", [["tameDomains", [$h‍_a => (tameDomains = $h‍_a)]]]],["./error/tame-console.js", [["tameConsole", [$h‍_a => (tameConsole = $h‍_a)]]]],["./error/tame-error-constructor.js", [["default", [$h‍_a => (tameErrorConstructor = $h‍_a)]]]],["./error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]],["makeAssert", [$h‍_a => (makeAssert = $h‍_a)]]]],["./environment-options.js", [["makeEnvironmentCaptor", [$h‍_a => (makeEnvironmentCaptor = $h‍_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics", [$h‍_a => (getAnonymousIntrinsics = $h‍_a)]]]],["./compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./tame-harden.js", [["tameHarden", [$h‍_a => (tameHarden = $h‍_a)]]]],["./tame-symbol-constructor.js", [["tameSymbolConstructor", [$h‍_a => (tameSymbolConstructor = $h‍_a)]]]]]); ++ + + + +@@ -9448,6 +9515,10 @@ const repairIntrinsics= (options= {})=> { + + tameDomains(domainTaming); + ++ const SharedSymbol= tameSymbolConstructor(); ++ // Must happen before `makeIntrinsicsCollector()` ++ globalThis.Symbol= SharedSymbol; ++ + const { addIntrinsics, completePrototypes, finalIntrinsics}= + makeIntrinsicsCollector(); + +@@ -9593,7 +9664,7 @@ const lockdown= (options= {})=> { + };$h‍_once.lockdown(lockdown); + }) + , +-// === functors[45] === ++// === functors[46] === + (({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let globalThis,TypeError,assign,tameFunctionToString,getGlobalIntrinsics,lockdown,makeCompartmentConstructor,assert;$h‍_imports([["./src/commons.js", [["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["assign", [$h‍_a => (assign = $h‍_a)]]]],["./src/tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./src/intrinsics.js", [["getGlobalIntrinsics", [$h‍_a => (getGlobalIntrinsics = $h‍_a)]]]],["./src/lockdown-shim.js", [["lockdown", [$h‍_a => (lockdown = $h‍_a)]]]],["./src/compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./src/error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]]]]]); + + +@@ -9680,6 +9751,7 @@ assign(globalThis, { + FERAL_REG_EXP: cell("FERAL_REG_EXP"), + Set: cell("Set"), + String: cell("String"), ++ Symbol: cell("Symbol"), + WeakMap: cell("WeakMap"), + WeakSet: cell("WeakSet"), + FERAL_ERROR: cell("FERAL_ERROR"), +@@ -9962,6 +10034,9 @@ assign(globalThis, { + { + default: cell("default"), + }, ++ { ++ tameSymbolConstructor: cell("tameSymbolConstructor"), ++ }, + { + default: cell("default"), + }, +@@ -10016,6 +10091,7 @@ function observeImports(map, importName, importIndex) { + FERAL_REG_EXP: cells[0].FERAL_REG_EXP.set, + Set: cells[0].Set.set, + String: cells[0].String.set, ++ Symbol: cells[0].Symbol.set, + WeakMap: cells[0].WeakMap.set, + WeakSet: cells[0].WeakSet.set, + FERAL_ERROR: cells[0].FERAL_ERROR.set, +@@ -10729,16 +10805,28 @@ function observeImports(map, importName, importIndex) { + imports(entries) { + const map = new Map(entries); + observeImports(map, "./commons.js", 0); +- observeImports(map, "./whitelist.js", 17); + }, + liveVar: { + }, + onceVar: { +- default: cells[43].default.set, ++ tameSymbolConstructor: cells[43].tameSymbolConstructor.set, + }, + importMeta: {}, + }); + functors[44]({ ++ imports(entries) { ++ const map = new Map(entries); ++ observeImports(map, "./commons.js", 0); ++ observeImports(map, "./whitelist.js", 17); ++ }, ++ liveVar: { ++ }, ++ onceVar: { ++ default: cells[44].default.set, ++ }, ++ importMeta: {}, ++ }); ++ functors[45]({ + imports(entries) { + const map = new Map(entries); + observeImports(map, "./commons.js", 0); +@@ -10762,25 +10850,26 @@ function observeImports(map, importName, importIndex) { + observeImports(map, "./tame-locale-methods.js", 40); + observeImports(map, "./tame-math-object.js", 41); + observeImports(map, "./tame-regexp-constructor.js", 42); +- observeImports(map, "./whitelist-intrinsics.js", 43); ++ observeImports(map, "./tame-symbol-constructor.js", 43); ++ observeImports(map, "./whitelist-intrinsics.js", 44); + observeImports(map, "./whitelist.js", 17); + }, + liveVar: { + }, + onceVar: { +- repairIntrinsics: cells[44].repairIntrinsics.set, +- lockdown: cells[44].lockdown.set, ++ repairIntrinsics: cells[45].repairIntrinsics.set, ++ lockdown: cells[45].lockdown.set, + }, + importMeta: {}, + }); +- functors[45]({ ++ functors[46]({ + imports(entries) { + const map = new Map(entries); + observeImports(map, "./src/commons.js", 0); + observeImports(map, "./src/compartment-shim.js", 23); + observeImports(map, "./src/error/assert.js", 5); + observeImports(map, "./src/intrinsics.js", 24); +- observeImports(map, "./src/lockdown-shim.js", 44); ++ observeImports(map, "./src/lockdown-shim.js", 45); + observeImports(map, "./src/tame-function-tostring.js", 38); + }, + liveVar: { +diff --git a/node_modules/ses/dist/lockdown.umd.js b/node_modules/ses/dist/lockdown.umd.js +index 9584dfb..43ee4f5 100644 +--- a/node_modules/ses/dist/lockdown.umd.js ++++ b/node_modules/ses/dist/lockdown.umd.js +@@ -37,9 +37,10 @@ const { + RegExp: FERAL_REG_EXP, + Set, + String, ++ Symbol, + WeakMap, + WeakSet}= +- globalThis;$h‍_once.Array(Array);$h‍_once.Date(Date);$h‍_once.FinalizationRegistry(FinalizationRegistry);$h‍_once.Float32Array(Float32Array);$h‍_once.JSON(JSON);$h‍_once.Map(Map);$h‍_once.Math(Math);$h‍_once.Number(Number);$h‍_once.Object(Object);$h‍_once.Promise(Promise);$h‍_once.Proxy(Proxy);$h‍_once.Reflect(Reflect);$h‍_once.FERAL_REG_EXP(FERAL_REG_EXP);$h‍_once.Set(Set);$h‍_once.String(String);$h‍_once.WeakMap(WeakMap);$h‍_once.WeakSet(WeakSet); ++ globalThis;$h‍_once.Array(Array);$h‍_once.Date(Date);$h‍_once.FinalizationRegistry(FinalizationRegistry);$h‍_once.Float32Array(Float32Array);$h‍_once.JSON(JSON);$h‍_once.Map(Map);$h‍_once.Math(Math);$h‍_once.Number(Number);$h‍_once.Object(Object);$h‍_once.Promise(Promise);$h‍_once.Proxy(Proxy);$h‍_once.Reflect(Reflect);$h‍_once.FERAL_REG_EXP(FERAL_REG_EXP);$h‍_once.Set(Set);$h‍_once.String(String);$h‍_once.Symbol(Symbol);$h‍_once.WeakMap(WeakMap);$h‍_once.WeakSet(WeakSet); + + const { + // The feral Error constructor is safe for internal use, but must not be +@@ -8865,6 +8866,71 @@ function tameRegExpConstructor(regExpTaming= 'safe') { + }) + , + // === functors[43] === ++(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let Symbol,entries,fromEntries,getOwnPropertyDescriptors,defineProperties,arrayMap;$h‍_imports([["./commons.js", [["Symbol", [$h‍_a => (Symbol = $h‍_a)]],["entries", [$h‍_a => (entries = $h‍_a)]],["fromEntries", [$h‍_a => (fromEntries = $h‍_a)]],["getOwnPropertyDescriptors", [$h‍_a => (getOwnPropertyDescriptors = $h‍_a)]],["defineProperties", [$h‍_a => (defineProperties = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]]]]]); ++ ++ ++ ++ ++ ++ ++ ++ ++/** ++ * This taming replaces the original `Symbol` constructor with one that seems ++ * identical, except that all its properties are "temporarily" configurable. ++ * This assumes two succeeding phases of processing: A whitelisting phase, that ++ * removes all properties not on the whitelist (which requires them to be ++ * configurable) and a global hardening step that freezes all primordials, ++ * returning these properties to their non-configurable status. ++ * ++ * However, the ses shim is constructed to enable vetter shims to run between ++ * repair and global hardening. Such vetter shims will see the replacement ++ * `Symbol` constructor with any "extra" properties that the whitelisting will ++ * remove, and with the well-known-symbol properties being configurable, in ++ * violation of the JavaScript spec. ++ * ++ * Note that the spec refers to the global `Symbol` function as the ++ * ["Symbol Constructor"](https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-symbol-constructor) ++ * even though it has a call behavior (can be called as a function) and does not ++ * not have a construct behavior (cannot be called with `new`). Accordingly, ++ * to tame it, we must replace it with a function without a construct ++ * behavior. ++ * ++ * @returns {SymbolConstructor} ++ */ ++const tameSymbolConstructor= ()=> { ++ const OriginalSymbol= Symbol; ++ const SymbolPrototype= OriginalSymbol.prototype; ++ ++ const SharedSymbol= { ++ Symbol(description) { ++ return OriginalSymbol(description); ++ }}. ++ Symbol; ++ ++ defineProperties(SymbolPrototype, { ++ constructor: { ++ value: SharedSymbol ++ // leave other `constructor` attributes as is ++}}); ++ ++ ++ const originalDescsEntries= entries( ++ getOwnPropertyDescriptors(OriginalSymbol)); ++ ++ const descs= fromEntries( ++ arrayMap(originalDescsEntries, ([name, desc])=> [ ++ name, ++ { ...desc, configurable: true}])); ++ ++ ++ defineProperties(SharedSymbol, descs); ++ ++ return (/** @type {SymbolConstructor} */ SharedSymbol); ++ };$h‍_once.tameSymbolConstructor(tameSymbolConstructor); ++}) ++, ++// === functors[44] === + (({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let whitelist,FunctionInstance,isAccessorPermit,Map,String,TypeError,arrayFilter,arrayIncludes,arrayMap,entries,getOwnPropertyDescriptor,getPrototypeOf,isObject,mapGet,objectHasOwnProperty,ownKeys,symbolKeyFor;$h‍_imports([["./whitelist.js", [["whitelist", [$h‍_a => (whitelist = $h‍_a)]],["FunctionInstance", [$h‍_a => (FunctionInstance = $h‍_a)]],["isAccessorPermit", [$h‍_a => (isAccessorPermit = $h‍_a)]]]],["./commons.js", [["Map", [$h‍_a => (Map = $h‍_a)]],["String", [$h‍_a => (String = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayIncludes", [$h‍_a => (arrayIncludes = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["entries", [$h‍_a => (entries = $h‍_a)]],["getOwnPropertyDescriptor", [$h‍_a => (getOwnPropertyDescriptor = $h‍_a)]],["getPrototypeOf", [$h‍_a => (getPrototypeOf = $h‍_a)]],["isObject", [$h‍_a => (isObject = $h‍_a)]],["mapGet", [$h‍_a => (mapGet = $h‍_a)]],["objectHasOwnProperty", [$h‍_a => (objectHasOwnProperty = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["symbolKeyFor", [$h‍_a => (symbolKeyFor = $h‍_a)]]]]]); + + +@@ -9182,8 +9248,9 @@ function whitelistIntrinsics( + }$h‍_once.default( whitelistIntrinsics); + }) + , +-// === functors[44] === +-(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden;$h‍_imports([["./commons.js", [["FERAL_FUNCTION", [$h‍_a => (FERAL_FUNCTION = $h‍_a)]],["FERAL_EVAL", [$h‍_a => (FERAL_EVAL = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["is", [$h‍_a => (is = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["stringSplit", [$h‍_a => (stringSplit = $h‍_a)]],["noEvalEvaluate", [$h‍_a => (noEvalEvaluate = $h‍_a)]]]],["./error/stringify-utils.js", [["enJoin", [$h‍_a => (enJoin = $h‍_a)]]]],["./make-hardener.js", [["makeHardener", [$h‍_a => (makeHardener = $h‍_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector", [$h‍_a => (makeIntrinsicsCollector = $h‍_a)]]]],["./whitelist-intrinsics.js", [["default", [$h‍_a => (whitelistIntrinsics = $h‍_a)]]]],["./tame-function-constructors.js", [["default", [$h‍_a => (tameFunctionConstructors = $h‍_a)]]]],["./tame-date-constructor.js", [["default", [$h‍_a => (tameDateConstructor = $h‍_a)]]]],["./tame-math-object.js", [["default", [$h‍_a => (tameMathObject = $h‍_a)]]]],["./tame-regexp-constructor.js", [["default", [$h‍_a => (tameRegExpConstructor = $h‍_a)]]]],["./enable-property-overrides.js", [["default", [$h‍_a => (enablePropertyOverrides = $h‍_a)]]]],["./tame-locale-methods.js", [["default", [$h‍_a => (tameLocaleMethods = $h‍_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties", [$h‍_a => (setGlobalObjectConstantProperties = $h‍_a)]],["setGlobalObjectMutableProperties", [$h‍_a => (setGlobalObjectMutableProperties = $h‍_a)]],["setGlobalObjectEvaluators", [$h‍_a => (setGlobalObjectEvaluators = $h‍_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator", [$h‍_a => (makeSafeEvaluator = $h‍_a)]]]],["./whitelist.js", [["initialGlobalPropertyNames", [$h‍_a => (initialGlobalPropertyNames = $h‍_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./tame-domains.js", [["tameDomains", [$h‍_a => (tameDomains = $h‍_a)]]]],["./error/tame-console.js", [["tameConsole", [$h‍_a => (tameConsole = $h‍_a)]]]],["./error/tame-error-constructor.js", [["default", [$h‍_a => (tameErrorConstructor = $h‍_a)]]]],["./error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]],["makeAssert", [$h‍_a => (makeAssert = $h‍_a)]]]],["./environment-options.js", [["makeEnvironmentCaptor", [$h‍_a => (makeEnvironmentCaptor = $h‍_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics", [$h‍_a => (getAnonymousIntrinsics = $h‍_a)]]]],["./compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./tame-harden.js", [["tameHarden", [$h‍_a => (tameHarden = $h‍_a)]]]]]); ++// === functors[45] === ++(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden,tameSymbolConstructor;$h‍_imports([["./commons.js", [["FERAL_FUNCTION", [$h‍_a => (FERAL_FUNCTION = $h‍_a)]],["FERAL_EVAL", [$h‍_a => (FERAL_EVAL = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["is", [$h‍_a => (is = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["stringSplit", [$h‍_a => (stringSplit = $h‍_a)]],["noEvalEvaluate", [$h‍_a => (noEvalEvaluate = $h‍_a)]]]],["./error/stringify-utils.js", [["enJoin", [$h‍_a => (enJoin = $h‍_a)]]]],["./make-hardener.js", [["makeHardener", [$h‍_a => (makeHardener = $h‍_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector", [$h‍_a => (makeIntrinsicsCollector = $h‍_a)]]]],["./whitelist-intrinsics.js", [["default", [$h‍_a => (whitelistIntrinsics = $h‍_a)]]]],["./tame-function-constructors.js", [["default", [$h‍_a => (tameFunctionConstructors = $h‍_a)]]]],["./tame-date-constructor.js", [["default", [$h‍_a => (tameDateConstructor = $h‍_a)]]]],["./tame-math-object.js", [["default", [$h‍_a => (tameMathObject = $h‍_a)]]]],["./tame-regexp-constructor.js", [["default", [$h‍_a => (tameRegExpConstructor = $h‍_a)]]]],["./enable-property-overrides.js", [["default", [$h‍_a => (enablePropertyOverrides = $h‍_a)]]]],["./tame-locale-methods.js", [["default", [$h‍_a => (tameLocaleMethods = $h‍_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties", [$h‍_a => (setGlobalObjectConstantProperties = $h‍_a)]],["setGlobalObjectMutableProperties", [$h‍_a => (setGlobalObjectMutableProperties = $h‍_a)]],["setGlobalObjectEvaluators", [$h‍_a => (setGlobalObjectEvaluators = $h‍_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator", [$h‍_a => (makeSafeEvaluator = $h‍_a)]]]],["./whitelist.js", [["initialGlobalPropertyNames", [$h‍_a => (initialGlobalPropertyNames = $h‍_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./tame-domains.js", [["tameDomains", [$h‍_a => (tameDomains = $h‍_a)]]]],["./error/tame-console.js", [["tameConsole", [$h‍_a => (tameConsole = $h‍_a)]]]],["./error/tame-error-constructor.js", [["default", [$h‍_a => (tameErrorConstructor = $h‍_a)]]]],["./error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]],["makeAssert", [$h‍_a => (makeAssert = $h‍_a)]]]],["./environment-options.js", [["makeEnvironmentCaptor", [$h‍_a => (makeEnvironmentCaptor = $h‍_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics", [$h‍_a => (getAnonymousIntrinsics = $h‍_a)]]]],["./compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./tame-harden.js", [["tameHarden", [$h‍_a => (tameHarden = $h‍_a)]]]],["./tame-symbol-constructor.js", [["tameSymbolConstructor", [$h‍_a => (tameSymbolConstructor = $h‍_a)]]]]]); ++ + + + +@@ -9448,6 +9515,10 @@ const repairIntrinsics= (options= {})=> { + + tameDomains(domainTaming); + ++ const SharedSymbol= tameSymbolConstructor(); ++ // Must happen before `makeIntrinsicsCollector()` ++ globalThis.Symbol= SharedSymbol; ++ + const { addIntrinsics, completePrototypes, finalIntrinsics}= + makeIntrinsicsCollector(); + +@@ -9593,7 +9664,7 @@ const lockdown= (options= {})=> { + };$h‍_once.lockdown(lockdown); + }) + , +-// === functors[45] === ++// === functors[46] === + (({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let globalThis,TypeError,assign,tameFunctionToString,getGlobalIntrinsics,lockdown,makeCompartmentConstructor,assert;$h‍_imports([["./src/commons.js", [["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["assign", [$h‍_a => (assign = $h‍_a)]]]],["./src/tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./src/intrinsics.js", [["getGlobalIntrinsics", [$h‍_a => (getGlobalIntrinsics = $h‍_a)]]]],["./src/lockdown-shim.js", [["lockdown", [$h‍_a => (lockdown = $h‍_a)]]]],["./src/compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./src/error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]]]]]); + + +@@ -9680,6 +9751,7 @@ assign(globalThis, { + FERAL_REG_EXP: cell("FERAL_REG_EXP"), + Set: cell("Set"), + String: cell("String"), ++ Symbol: cell("Symbol"), + WeakMap: cell("WeakMap"), + WeakSet: cell("WeakSet"), + FERAL_ERROR: cell("FERAL_ERROR"), +@@ -9962,6 +10034,9 @@ assign(globalThis, { + { + default: cell("default"), + }, ++ { ++ tameSymbolConstructor: cell("tameSymbolConstructor"), ++ }, + { + default: cell("default"), + }, +@@ -10016,6 +10091,7 @@ function observeImports(map, importName, importIndex) { + FERAL_REG_EXP: cells[0].FERAL_REG_EXP.set, + Set: cells[0].Set.set, + String: cells[0].String.set, ++ Symbol: cells[0].Symbol.set, + WeakMap: cells[0].WeakMap.set, + WeakSet: cells[0].WeakSet.set, + FERAL_ERROR: cells[0].FERAL_ERROR.set, +@@ -10729,16 +10805,28 @@ function observeImports(map, importName, importIndex) { + imports(entries) { + const map = new Map(entries); + observeImports(map, "./commons.js", 0); +- observeImports(map, "./whitelist.js", 17); + }, + liveVar: { + }, + onceVar: { +- default: cells[43].default.set, ++ tameSymbolConstructor: cells[43].tameSymbolConstructor.set, + }, + importMeta: {}, + }); + functors[44]({ ++ imports(entries) { ++ const map = new Map(entries); ++ observeImports(map, "./commons.js", 0); ++ observeImports(map, "./whitelist.js", 17); ++ }, ++ liveVar: { ++ }, ++ onceVar: { ++ default: cells[44].default.set, ++ }, ++ importMeta: {}, ++ }); ++ functors[45]({ + imports(entries) { + const map = new Map(entries); + observeImports(map, "./commons.js", 0); +@@ -10762,25 +10850,26 @@ function observeImports(map, importName, importIndex) { + observeImports(map, "./tame-locale-methods.js", 40); + observeImports(map, "./tame-math-object.js", 41); + observeImports(map, "./tame-regexp-constructor.js", 42); +- observeImports(map, "./whitelist-intrinsics.js", 43); ++ observeImports(map, "./tame-symbol-constructor.js", 43); ++ observeImports(map, "./whitelist-intrinsics.js", 44); + observeImports(map, "./whitelist.js", 17); + }, + liveVar: { + }, + onceVar: { +- repairIntrinsics: cells[44].repairIntrinsics.set, +- lockdown: cells[44].lockdown.set, ++ repairIntrinsics: cells[45].repairIntrinsics.set, ++ lockdown: cells[45].lockdown.set, + }, + importMeta: {}, + }); +- functors[45]({ ++ functors[46]({ + imports(entries) { + const map = new Map(entries); + observeImports(map, "./src/commons.js", 0); + observeImports(map, "./src/compartment-shim.js", 23); + observeImports(map, "./src/error/assert.js", 5); + observeImports(map, "./src/intrinsics.js", 24); +- observeImports(map, "./src/lockdown-shim.js", 44); ++ observeImports(map, "./src/lockdown-shim.js", 45); + observeImports(map, "./src/tame-function-tostring.js", 38); + }, + liveVar: { +diff --git a/node_modules/ses/dist/lockdown.umd.min.js b/node_modules/ses/dist/lockdown.umd.min.js +index 76e177a..4a64047 100644 +--- a/node_modules/ses/dist/lockdown.umd.min.js ++++ b/node_modules/ses/dist/lockdown.umd.min.js +@@ -1 +1 @@ +-"use strict";(()=>{const functors=[({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);const universalThis=globalThis;$h‍_once.universalThis(universalThis);const{Array:Array,Date:Date,FinalizationRegistry:FinalizationRegistry,Float32Array:Float32Array,JSON:JSON,Map:Map,Math:Math,Number:Number,Object:Object,Promise:Promise,Proxy:Proxy,Reflect:Reflect,RegExp:FERAL_REG_EXP,Set:Set,String:String,WeakMap:WeakMap,WeakSet:WeakSet}=globalThis;$h‍_once.Array(Array),$h‍_once.Date(Date),$h‍_once.FinalizationRegistry(FinalizationRegistry),$h‍_once.Float32Array(Float32Array),$h‍_once.JSON(JSON),$h‍_once.Map(Map),$h‍_once.Math(Math),$h‍_once.Number(Number),$h‍_once.Object(Object),$h‍_once.Promise(Promise),$h‍_once.Proxy(Proxy),$h‍_once.Reflect(Reflect),$h‍_once.FERAL_REG_EXP(FERAL_REG_EXP),$h‍_once.Set(Set),$h‍_once.String(String),$h‍_once.WeakMap(WeakMap),$h‍_once.WeakSet(WeakSet);const{Error:FERAL_ERROR,RangeError:RangeError,ReferenceError:ReferenceError,SyntaxError:SyntaxError,TypeError:TypeError}=globalThis;$h‍_once.FERAL_ERROR(FERAL_ERROR),$h‍_once.RangeError(RangeError),$h‍_once.ReferenceError(ReferenceError),$h‍_once.SyntaxError(SyntaxError),$h‍_once.TypeError(TypeError);const{assign:assign,create:create,defineProperties:defineProperties,entries:entries,freeze:freeze,getOwnPropertyDescriptor:getOwnPropertyDescriptor,getOwnPropertyDescriptors:getOwnPropertyDescriptors,getOwnPropertyNames:getOwnPropertyNames,getPrototypeOf:getPrototypeOf,is:is,isFrozen:isFrozen,isSealed:isSealed,isExtensible:isExtensible,keys:keys,prototype:objectPrototype,seal:seal,preventExtensions:preventExtensions,setPrototypeOf:setPrototypeOf,values:values,fromEntries:fromEntries}=Object;$h‍_once.assign(assign),$h‍_once.create(create),$h‍_once.defineProperties(defineProperties),$h‍_once.entries(entries),$h‍_once.freeze(freeze),$h‍_once.getOwnPropertyDescriptor(getOwnPropertyDescriptor),$h‍_once.getOwnPropertyDescriptors(getOwnPropertyDescriptors),$h‍_once.getOwnPropertyNames(getOwnPropertyNames),$h‍_once.getPrototypeOf(getPrototypeOf),$h‍_once.is(is),$h‍_once.isFrozen(isFrozen),$h‍_once.isSealed(isSealed),$h‍_once.isExtensible(isExtensible),$h‍_once.keys(keys),$h‍_once.objectPrototype(objectPrototype),$h‍_once.seal(seal),$h‍_once.preventExtensions(preventExtensions),$h‍_once.setPrototypeOf(setPrototypeOf),$h‍_once.values(values),$h‍_once.fromEntries(fromEntries);const{species:speciesSymbol,toStringTag:toStringTagSymbol,iterator:iteratorSymbol,matchAll:matchAllSymbol,unscopables:unscopablesSymbol,keyFor:symbolKeyFor,for:symbolFor}=Symbol;$h‍_once.speciesSymbol(speciesSymbol),$h‍_once.toStringTagSymbol(toStringTagSymbol),$h‍_once.iteratorSymbol(iteratorSymbol),$h‍_once.matchAllSymbol(matchAllSymbol),$h‍_once.unscopablesSymbol(unscopablesSymbol),$h‍_once.symbolKeyFor(symbolKeyFor),$h‍_once.symbolFor(symbolFor);const{isInteger:isInteger}=Number;$h‍_once.isInteger(isInteger);const{stringify:stringifyJson}=JSON;$h‍_once.stringifyJson(stringifyJson);const{defineProperty:originalDefineProperty}=Object;$h‍_once.defineProperty(((object,prop,descriptor)=>{const result=originalDefineProperty(object,prop,descriptor);if(result!==object)throw TypeError(`Please report that the original defineProperty silently failed to set ${stringifyJson(String(prop))}. (SES_DEFINE_PROPERTY_FAILED_SILENTLY)`);return result}));const{apply:apply,construct:construct,get:reflectGet,getOwnPropertyDescriptor:reflectGetOwnPropertyDescriptor,has:reflectHas,isExtensible:reflectIsExtensible,ownKeys:ownKeys,preventExtensions:reflectPreventExtensions,set:reflectSet}=Reflect;$h‍_once.apply(apply),$h‍_once.construct(construct),$h‍_once.reflectGet(reflectGet),$h‍_once.reflectGetOwnPropertyDescriptor(reflectGetOwnPropertyDescriptor),$h‍_once.reflectHas(reflectHas),$h‍_once.reflectIsExtensible(reflectIsExtensible),$h‍_once.ownKeys(ownKeys),$h‍_once.reflectPreventExtensions(reflectPreventExtensions),$h‍_once.reflectSet(reflectSet);const{isArray:isArray,prototype:arrayPrototype}=Array;$h‍_once.isArray(isArray),$h‍_once.arrayPrototype(arrayPrototype);const{prototype:mapPrototype}=Map;$h‍_once.mapPrototype(mapPrototype);const{revocable:proxyRevocable}=Proxy;$h‍_once.proxyRevocable(proxyRevocable);const{prototype:regexpPrototype}=RegExp;$h‍_once.regexpPrototype(regexpPrototype);const{prototype:setPrototype}=Set;$h‍_once.setPrototype(setPrototype);const{prototype:stringPrototype}=String;$h‍_once.stringPrototype(stringPrototype);const{prototype:weakmapPrototype}=WeakMap;$h‍_once.weakmapPrototype(weakmapPrototype);const{prototype:weaksetPrototype}=WeakSet;$h‍_once.weaksetPrototype(weaksetPrototype);const{prototype:functionPrototype}=Function;$h‍_once.functionPrototype(functionPrototype);const{prototype:promisePrototype}=Promise;$h‍_once.promisePrototype(promisePrototype);const typedArrayPrototype=getPrototypeOf(Uint8Array.prototype);$h‍_once.typedArrayPrototype(typedArrayPrototype);const{bind:bind}=functionPrototype,uncurryThis=bind.bind(bind.call);$h‍_once.uncurryThis(uncurryThis);const objectHasOwnProperty=uncurryThis(objectPrototype.hasOwnProperty);$h‍_once.objectHasOwnProperty(objectHasOwnProperty);const arrayFilter=uncurryThis(arrayPrototype.filter);$h‍_once.arrayFilter(arrayFilter);const arrayForEach=uncurryThis(arrayPrototype.forEach);$h‍_once.arrayForEach(arrayForEach);const arrayIncludes=uncurryThis(arrayPrototype.includes);$h‍_once.arrayIncludes(arrayIncludes);const arrayJoin=uncurryThis(arrayPrototype.join);$h‍_once.arrayJoin(arrayJoin);const arrayMap=uncurryThis(arrayPrototype.map);$h‍_once.arrayMap(arrayMap);const arrayPop=uncurryThis(arrayPrototype.pop);$h‍_once.arrayPop(arrayPop);const arrayPush=uncurryThis(arrayPrototype.push);$h‍_once.arrayPush(arrayPush);const arraySlice=uncurryThis(arrayPrototype.slice);$h‍_once.arraySlice(arraySlice);const arraySome=uncurryThis(arrayPrototype.some);$h‍_once.arraySome(arraySome);const arraySort=uncurryThis(arrayPrototype.sort);$h‍_once.arraySort(arraySort);const iterateArray=uncurryThis(arrayPrototype[iteratorSymbol]);$h‍_once.iterateArray(iterateArray);const mapSet=uncurryThis(mapPrototype.set);$h‍_once.mapSet(mapSet);const mapGet=uncurryThis(mapPrototype.get);$h‍_once.mapGet(mapGet);const mapHas=uncurryThis(mapPrototype.has);$h‍_once.mapHas(mapHas);const mapDelete=uncurryThis(mapPrototype.delete);$h‍_once.mapDelete(mapDelete);const mapEntries=uncurryThis(mapPrototype.entries);$h‍_once.mapEntries(mapEntries);const iterateMap=uncurryThis(mapPrototype[iteratorSymbol]);$h‍_once.iterateMap(iterateMap);const setAdd=uncurryThis(setPrototype.add);$h‍_once.setAdd(setAdd);const setDelete=uncurryThis(setPrototype.delete);$h‍_once.setDelete(setDelete);const setForEach=uncurryThis(setPrototype.forEach);$h‍_once.setForEach(setForEach);const setHas=uncurryThis(setPrototype.has);$h‍_once.setHas(setHas);const iterateSet=uncurryThis(setPrototype[iteratorSymbol]);$h‍_once.iterateSet(iterateSet);const regexpTest=uncurryThis(regexpPrototype.test);$h‍_once.regexpTest(regexpTest);const regexpExec=uncurryThis(regexpPrototype.exec);$h‍_once.regexpExec(regexpExec);const matchAllRegExp=uncurryThis(regexpPrototype[matchAllSymbol]);$h‍_once.matchAllRegExp(matchAllRegExp);const stringEndsWith=uncurryThis(stringPrototype.endsWith);$h‍_once.stringEndsWith(stringEndsWith);const stringIncludes=uncurryThis(stringPrototype.includes);$h‍_once.stringIncludes(stringIncludes);const stringIndexOf=uncurryThis(stringPrototype.indexOf);$h‍_once.stringIndexOf(stringIndexOf);const stringMatch=uncurryThis(stringPrototype.match);$h‍_once.stringMatch(stringMatch);const stringReplace=uncurryThis(stringPrototype.replace);$h‍_once.stringReplace(stringReplace);const stringSearch=uncurryThis(stringPrototype.search);$h‍_once.stringSearch(stringSearch);const stringSlice=uncurryThis(stringPrototype.slice);$h‍_once.stringSlice(stringSlice);const stringSplit=uncurryThis(stringPrototype.split);$h‍_once.stringSplit(stringSplit);const stringStartsWith=uncurryThis(stringPrototype.startsWith);$h‍_once.stringStartsWith(stringStartsWith);const iterateString=uncurryThis(stringPrototype[iteratorSymbol]);$h‍_once.iterateString(iterateString);const weakmapDelete=uncurryThis(weakmapPrototype.delete);$h‍_once.weakmapDelete(weakmapDelete);const weakmapGet=uncurryThis(weakmapPrototype.get);$h‍_once.weakmapGet(weakmapGet);const weakmapHas=uncurryThis(weakmapPrototype.has);$h‍_once.weakmapHas(weakmapHas);const weakmapSet=uncurryThis(weakmapPrototype.set);$h‍_once.weakmapSet(weakmapSet);const weaksetAdd=uncurryThis(weaksetPrototype.add);$h‍_once.weaksetAdd(weaksetAdd);const weaksetHas=uncurryThis(weaksetPrototype.has);$h‍_once.weaksetHas(weaksetHas);const functionToString=uncurryThis(functionPrototype.toString);$h‍_once.functionToString(functionToString);const{all:all}=Promise;$h‍_once.promiseAll((promises=>apply(all,Promise,[promises])));const promiseCatch=uncurryThis(promisePrototype.catch);$h‍_once.promiseCatch(promiseCatch);const promiseThen=uncurryThis(promisePrototype.then);$h‍_once.promiseThen(promiseThen);const finalizationRegistryRegister=FinalizationRegistry&&uncurryThis(FinalizationRegistry.prototype.register);$h‍_once.finalizationRegistryRegister(finalizationRegistryRegister);const finalizationRegistryUnregister=FinalizationRegistry&&uncurryThis(FinalizationRegistry.prototype.unregister);$h‍_once.finalizationRegistryUnregister(finalizationRegistryUnregister);$h‍_once.getConstructorOf((fn=>reflectGet(getPrototypeOf(fn),"constructor")));const immutableObject=freeze(create(null));$h‍_once.immutableObject(immutableObject);$h‍_once.isObject((value=>Object(value)===value));$h‍_once.isError((value=>value instanceof FERAL_ERROR));const FERAL_EVAL=eval;$h‍_once.FERAL_EVAL(FERAL_EVAL);const FERAL_FUNCTION=Function;$h‍_once.FERAL_FUNCTION(FERAL_FUNCTION);$h‍_once.noEvalEvaluate((()=>{throw new TypeError('Cannot eval with evalTaming set to "noEval" (SES_NO_EVAL)')}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([])},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([["./internal-types.js",[]]]);const{freeze:freeze}=Object,{isSafeInteger:isSafeInteger}=Number,makeSelfCell=data=>{const selfCell={next:void 0,prev:void 0,data:data};return selfCell.next=selfCell,selfCell.prev=selfCell,selfCell},spliceAfter=(prev,selfCell)=>{if(prev===selfCell)throw TypeError("Cannot splice a cell into itself");if(selfCell.next!==selfCell||selfCell.prev!==selfCell)throw TypeError("Expected self-linked cell");const cell=selfCell,next=prev.next;return cell.prev=prev,cell.next=next,prev.next=cell,next.prev=cell,cell},spliceOut=cell=>{const{prev:prev,next:next}=cell;prev.next=next,next.prev=prev,cell.prev=cell,cell.next=cell},makeLRUCacheMap=keysBudget=>{if(!isSafeInteger(keysBudget)||keysBudget<0)throw new TypeError("keysBudget must be a safe non-negative integer number");const keyToCell=new WeakMap;let size=0;const head=makeSelfCell(void 0),touchCell=key=>{const cell=keyToCell.get(key);if(void 0!==cell&&void 0!==cell.data)return spliceOut(cell),spliceAfter(head,cell),cell},has=key=>void 0!==touchCell(key);freeze(has);const get=key=>{const cell=touchCell(key);return cell&&cell.data&&cell.data.get(key)};freeze(get);const set=(key,value)=>{if(keysBudget<1)return lruCacheMap;let cell=touchCell(key);if(void 0===cell&&(cell=makeSelfCell(void 0),spliceAfter(head,cell)),!cell.data)for(size+=1,cell.data=new WeakMap,keyToCell.set(key,cell);size>keysBudget;){const condemned=head.prev;spliceOut(condemned),condemned.data=void 0,size-=1}return cell.data.set(key,value),lruCacheMap};freeze(set);const deleteIt=key=>{const cell=keyToCell.get(key);return void 0!==cell&&(spliceOut(cell),keyToCell.delete(key),void 0!==cell.data&&(cell.data=void 0,size-=1,!0))};freeze(deleteIt);const lruCacheMap=freeze({has:has,get:get,set:set,delete:deleteIt,[Symbol.toStringTag]:"LRUCacheMap"});return lruCacheMap};$h‍_once.makeLRUCacheMap(makeLRUCacheMap),freeze(makeLRUCacheMap);const makeNoteLogArgsArrayKit=(errorsBudget=1e3,argsPerErrorBudget=100)=>{if(!isSafeInteger(argsPerErrorBudget)||argsPerErrorBudget<1)throw new TypeError("argsPerErrorBudget must be a safe positive integer number");const noteLogArgsArrayMap=makeLRUCacheMap(errorsBudget),addLogArgs=(error,logArgs)=>{const logArgsArray=noteLogArgsArrayMap.get(error);void 0!==logArgsArray?(logArgsArray.length>=argsPerErrorBudget&&logArgsArray.shift(),logArgsArray.push(logArgs)):noteLogArgsArrayMap.set(error,[logArgs])};freeze(addLogArgs);const takeLogArgsArray=error=>{const result=noteLogArgsArrayMap.get(error);return noteLogArgsArrayMap.delete(error),result};return freeze(takeLogArgsArray),freeze({addLogArgs:addLogArgs,takeLogArgsArray:takeLogArgsArray})};$h‍_once.makeNoteLogArgsArrayKit(makeNoteLogArgsArrayKit),freeze(makeNoteLogArgsArrayKit)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Set,String,arrayJoin,arraySlice,freeze,is,isError,setAdd,setHas,stringIncludes,stringStartsWith,stringifyJson,toStringTagSymbol;$h‍_imports([["../commons.js",[["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arraySlice",[$h‍_a=>arraySlice=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["isError",[$h‍_a=>isError=$h‍_a]],["setAdd",[$h‍_a=>setAdd=$h‍_a]],["setHas",[$h‍_a=>setHas=$h‍_a]],["stringIncludes",[$h‍_a=>stringIncludes=$h‍_a]],["stringStartsWith",[$h‍_a=>stringStartsWith=$h‍_a]],["stringifyJson",[$h‍_a=>stringifyJson=$h‍_a]],["toStringTagSymbol",[$h‍_a=>toStringTagSymbol=$h‍_a]]]]]);$h‍_once.enJoin(((terms,conjunction)=>{if(0===terms.length)return"(none)";if(1===terms.length)return terms[0];if(2===terms.length){const[first,second]=terms;return`${first} ${conjunction} ${second}`}return`${arrayJoin(arraySlice(terms,0,-1),", ")}, ${conjunction} ${terms[terms.length-1]}`}));const an=str=>(str=`${str}`).length>=1&&stringIncludes("aeiouAEIOU",str[0])?`an ${str}`:`a ${str}`;$h‍_once.an(an),freeze(an);const bestEffortStringify=(payload,spaces=undefined)=>{const seenSet=new Set,replacer=(_,val)=>{switch(typeof val){case"object":return null===val?null:setHas(seenSet,val)?"[Seen]":(setAdd(seenSet,val),isError(val)?`[${val.name}: ${val.message}]`:toStringTagSymbol in val?`[${val[toStringTagSymbol]}]`:val);case"function":return`[Function ${val.name||""}]`;case"string":return stringStartsWith(val,"[")?`[${val}]`:val;case"undefined":case"symbol":return`[${String(val)}]`;case"bigint":return`[${val}n]`;case"number":return is(val,NaN)?"[NaN]":val===1/0?"[Infinity]":val===-1/0?"[-Infinity]":val;default:return val}};try{return stringifyJson(payload,replacer,spaces)}catch(_err){return"[Something that failed to stringify]"}};$h‍_once.bestEffortStringify(bestEffortStringify),freeze(bestEffortStringify)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([])},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let RangeError,TypeError,WeakMap,arrayJoin,arrayMap,arrayPop,arrayPush,assign,freeze,globalThis,is,isError,stringIndexOf,stringReplace,stringSlice,stringStartsWith,weakmapDelete,weakmapGet,weakmapHas,weakmapSet,an,bestEffortStringify,makeNoteLogArgsArrayKit;$h‍_imports([["../commons.js",[["RangeError",[$h‍_a=>RangeError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arrayPop",[$h‍_a=>arrayPop=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["isError",[$h‍_a=>isError=$h‍_a]],["stringIndexOf",[$h‍_a=>stringIndexOf=$h‍_a]],["stringReplace",[$h‍_a=>stringReplace=$h‍_a]],["stringSlice",[$h‍_a=>stringSlice=$h‍_a]],["stringStartsWith",[$h‍_a=>stringStartsWith=$h‍_a]],["weakmapDelete",[$h‍_a=>weakmapDelete=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapHas",[$h‍_a=>weakmapHas=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]]]],["./stringify-utils.js",[["an",[$h‍_a=>an=$h‍_a]],["bestEffortStringify",[$h‍_a=>bestEffortStringify=$h‍_a]]]],["./types.js",[]],["./internal-types.js",[]],["./note-log-args.js",[["makeNoteLogArgsArrayKit",[$h‍_a=>makeNoteLogArgsArrayKit=$h‍_a]]]]]);const declassifiers=new WeakMap,quote=(payload,spaces=undefined)=>{const result=freeze({toString:freeze((()=>bestEffortStringify(payload,spaces)))});return weakmapSet(declassifiers,result,payload),result};freeze(quote);const hiddenDetailsMap=new WeakMap,getMessageString=({template:template,args:args})=>{const parts=[template[0]];for(let i=0;i{const detailsToken=freeze({__proto__:DetailsTokenProto});return weakmapSet(hiddenDetailsMap,detailsToken,{template:template,args:args}),detailsToken};freeze(redactedDetails);const unredactedDetails=(template,...args)=>(args=arrayMap(args,(arg=>weakmapHas(declassifiers,arg)?arg:quote(arg))),redactedDetails(template,...args));$h‍_once.unredactedDetails(unredactedDetails),freeze(unredactedDetails);const getLogArgs=({template:template,args:args})=>{const logArgs=[template[0]];for(let i=0;i{let errorTag=weakmapGet(errorTags,err);return void 0!==errorTag||(errorTagNum+=1,errorTag=`${optErrorName}#${errorTagNum}`,weakmapSet(errorTags,err,errorTag)),errorTag},makeError=(optDetails=redactedDetails`Assert failed`,ErrorConstructor=globalThis.Error,{errorName:errorName}={})=>{"string"==typeof optDetails&&(optDetails=redactedDetails([optDetails]));const hiddenDetails=weakmapGet(hiddenDetailsMap,optDetails);if(void 0===hiddenDetails)throw new TypeError(`unrecognized details ${quote(optDetails)}`);const error=new ErrorConstructor(getMessageString(hiddenDetails));return weakmapSet(hiddenMessageLogArgs,error,getLogArgs(hiddenDetails)),void 0!==errorName&&tagError(error,errorName),error};freeze(makeError);const{addLogArgs:addLogArgs,takeLogArgsArray:takeLogArgsArray}=makeNoteLogArgsArrayKit(),hiddenNoteCallbackArrays=new WeakMap,note=(error,detailsNote)=>{"string"==typeof detailsNote&&(detailsNote=redactedDetails([detailsNote]));const hiddenDetails=weakmapGet(hiddenDetailsMap,detailsNote);if(void 0===hiddenDetails)throw new TypeError(`unrecognized details ${quote(detailsNote)}`);const logArgs=getLogArgs(hiddenDetails),callbacks=weakmapGet(hiddenNoteCallbackArrays,error);if(void 0!==callbacks)for(const callback of callbacks)callback(error,logArgs);else addLogArgs(error,logArgs)};freeze(note);const loggedErrorHandler={getStackString:globalThis.getStackString||(error=>{if(!("stack"in error))return"";const stackString=`${error.stack}`,pos=stringIndexOf(stackString,"\n");return stringStartsWith(stackString," ")||-1===pos?stackString:stringSlice(stackString,pos+1)}),tagError:error=>tagError(error),resetErrorTagNum:()=>{errorTagNum=0},getMessageLogArgs:error=>weakmapGet(hiddenMessageLogArgs,error),takeMessageLogArgs:error=>{const result=weakmapGet(hiddenMessageLogArgs,error);return weakmapDelete(hiddenMessageLogArgs,error),result},takeNoteLogArgsArray:(error,callback)=>{const result=takeLogArgsArray(error);if(void 0!==callback){const callbacks=weakmapGet(hiddenNoteCallbackArrays,error);callbacks?arrayPush(callbacks,callback):weakmapSet(hiddenNoteCallbackArrays,error,[callback])}return result||[]}};$h‍_once.loggedErrorHandler(loggedErrorHandler),freeze(loggedErrorHandler);const makeAssert=(optRaise=undefined,unredacted=!1)=>{const details=unredacted?unredactedDetails:redactedDetails,assertFailedDetails=details`Check failed`,fail=(optDetails=assertFailedDetails,ErrorConstructor=globalThis.Error)=>{const reason=makeError(optDetails,ErrorConstructor);throw void 0!==optRaise&&optRaise(reason),reason};freeze(fail);const Fail=(template,...args)=>fail(details(template,...args));const equal=(actual,expected,optDetails=undefined,ErrorConstructor=undefined)=>{is(actual,expected)||fail(optDetails||details`Expected ${actual} is same as ${expected}`,ErrorConstructor||RangeError)};freeze(equal);const assertTypeof=(specimen,typename,optDetails)=>{typeof specimen!==typename&&("string"==typeof typename||Fail`${quote(typename)} must be a string`,void 0===optDetails&&(optDetails=details(["",` must be ${an(typename)}`],specimen)),fail(optDetails,TypeError))};freeze(assertTypeof);const assert=assign((function(flag,optDetails=undefined,ErrorConstructor=undefined){flag||fail(optDetails,ErrorConstructor)}),{error:makeError,fail:fail,equal:equal,typeof:assertTypeof,string:(specimen,optDetails=undefined)=>assertTypeof(specimen,"string",optDetails),note:note,details:details,Fail:Fail,quote:quote,makeAssert:makeAssert});return freeze(assert)};$h‍_once.makeAssert(makeAssert),freeze(makeAssert);const assert=makeAssert();$h‍_once.assert(assert)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_EVAL,create,defineProperties,freeze,assert;$h‍_imports([["./commons.js",[["FERAL_EVAL",[$h‍_a=>FERAL_EVAL=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail}=assert;$h‍_once.makeEvalScopeKit((()=>{const evalScope=create(null),oneTimeEvalProperties=freeze({eval:{get:()=>(delete evalScope.eval,FERAL_EVAL),enumerable:!1,configurable:!0}}),evalScopeKit={evalScope:evalScope,allowNextEvalToBeUnsafe(){const{revoked:revoked}=evalScopeKit;null!==revoked&&Fail`a handler did not reset allowNextEvalToBeUnsafe ${revoked.err}`,defineProperties(evalScope,oneTimeEvalProperties)},revoked:null};return evalScopeKit}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let arrayFilter,arrayIncludes,getOwnPropertyDescriptor,getOwnPropertyNames,objectHasOwnProperty,regexpTest;$h‍_imports([["./commons.js",[["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayIncludes",[$h‍_a=>arrayIncludes=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyNames",[$h‍_a=>getOwnPropertyNames=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["regexpTest",[$h‍_a=>regexpTest=$h‍_a]]]]]);const keywords=["await","break","case","catch","class","const","continue","debugger","default","delete","do","else","export","extends","finally","for","function","if","import","in","instanceof","new","return","super","switch","this","throw","try","typeof","var","void","while","with","yield","let","static","enum","implements","package","protected","interface","private","public","await","null","true","false","this","arguments"],identifierPattern=/^[a-zA-Z_$][\w$]*$/,isValidIdentifierName=name=>"eval"!==name&&!arrayIncludes(keywords,name)&®expTest(identifierPattern,name);function isImmutableDataProperty(obj,name){const desc=getOwnPropertyDescriptor(obj,name);return desc&&!1===desc.configurable&&!1===desc.writable&&objectHasOwnProperty(desc,"value")}$h‍_once.isValidIdentifierName(isValidIdentifierName);$h‍_once.getScopeConstants(((globalObject,moduleLexicals={})=>{const globalObjectNames=getOwnPropertyNames(globalObject),moduleLexicalNames=getOwnPropertyNames(moduleLexicals),moduleLexicalConstants=arrayFilter(moduleLexicalNames,(name=>isValidIdentifierName(name)&&isImmutableDataProperty(moduleLexicals,name)));return{globalObjectConstants:arrayFilter(globalObjectNames,(name=>!arrayIncludes(moduleLexicalNames,name)&&isValidIdentifierName(name)&&isImmutableDataProperty(globalObject,name))),moduleLexicalConstants:moduleLexicalConstants}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,arrayJoin,apply,getScopeConstants;function buildOptimizer(constants,name){return 0===constants.length?"":`const {${arrayJoin(constants,",")}} = this.${name};`}$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]]]],["./scope-constants.js",[["getScopeConstants",[$h‍_a=>getScopeConstants=$h‍_a]]]]]);$h‍_once.makeEvaluate((context=>{const{globalObjectConstants:globalObjectConstants,moduleLexicalConstants:moduleLexicalConstants}=getScopeConstants(context.globalObject,context.moduleLexicals),globalObjectOptimizer=buildOptimizer(globalObjectConstants,"globalObject"),moduleLexicalOptimizer=buildOptimizer(moduleLexicalConstants,"moduleLexicals"),evaluateFactory=FERAL_FUNCTION(`\n with (this.scopeTerminator) {\n with (this.globalObject) {\n with (this.moduleLexicals) {\n with (this.evalScope) {\n ${globalObjectOptimizer}\n ${moduleLexicalOptimizer}\n return function() {\n 'use strict';\n return eval(arguments[0]);\n };\n }\n }\n }\n }\n `);return apply(evaluateFactory,context,[])}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Proxy,String,TypeError,ReferenceError,create,freeze,getOwnPropertyDescriptors,globalThis,immutableObject,assert;$h‍_imports([["./commons.js",[["Proxy",[$h‍_a=>Proxy=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["immutableObject",[$h‍_a=>immutableObject=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,alwaysThrowHandler=new Proxy(immutableObject,freeze({get(_shadow,prop){Fail`Please report unexpected scope handler trap: ${q(String(prop))}`}}));$h‍_once.alwaysThrowHandler(alwaysThrowHandler);const strictScopeTerminatorHandler=freeze(create(alwaysThrowHandler,getOwnPropertyDescriptors({get(_shadow,_prop){},set(_shadow,prop,_value){throw new ReferenceError(`${String(prop)} is not defined`)},has:(_shadow,prop)=>prop in globalThis,getPrototypeOf:()=>null,getOwnPropertyDescriptor(_target,prop){const quotedProp=q(String(prop));console.warn(`getOwnPropertyDescriptor trap on scopeTerminatorHandler for ${quotedProp}`,(new TypeError).stack)}})));$h‍_once.strictScopeTerminatorHandler(strictScopeTerminatorHandler);const strictScopeTerminator=new Proxy(immutableObject,strictScopeTerminatorHandler);$h‍_once.strictScopeTerminator(strictScopeTerminator)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Proxy,create,freeze,getOwnPropertyDescriptors,immutableObject,reflectSet,strictScopeTerminatorHandler,alwaysThrowHandler;$h‍_imports([["./commons.js",[["Proxy",[$h‍_a=>Proxy=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["immutableObject",[$h‍_a=>immutableObject=$h‍_a]],["reflectSet",[$h‍_a=>reflectSet=$h‍_a]]]],["./strict-scope-terminator.js",[["strictScopeTerminatorHandler",[$h‍_a=>strictScopeTerminatorHandler=$h‍_a]],["alwaysThrowHandler",[$h‍_a=>alwaysThrowHandler=$h‍_a]]]]]);const createSloppyGlobalsScopeTerminator=globalObject=>{const scopeProxyHandlerProperties={...strictScopeTerminatorHandler,set:(_shadow,prop,value)=>reflectSet(globalObject,prop,value),has:(_shadow,_prop)=>!0},sloppyGlobalsScopeTerminatorHandler=freeze(create(alwaysThrowHandler,getOwnPropertyDescriptors(scopeProxyHandlerProperties)));return new Proxy(immutableObject,sloppyGlobalsScopeTerminatorHandler)};$h‍_once.createSloppyGlobalsScopeTerminator(createSloppyGlobalsScopeTerminator),freeze(createSloppyGlobalsScopeTerminator)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_REG_EXP,regexpExec,stringSlice;$h‍_imports([["./commons.js",[["FERAL_REG_EXP",[$h‍_a=>FERAL_REG_EXP=$h‍_a]],["regexpExec",[$h‍_a=>regexpExec=$h‍_a]],["stringSlice",[$h‍_a=>stringSlice=$h‍_a]]]]]);const sourceMetaEntriesRegExp=new FERAL_REG_EXP("(?:\\s*//\\s*[@#]\\s*([a-zA-Z][a-zA-Z0-9]*)\\s*=\\s*([^\\s\\*]*)|/\\*\\s*[@#]\\s*([a-zA-Z][a-zA-Z0-9]*)\\s*=\\s*([^\\s\\*]*)\\s*\\*/)\\s*$");$h‍_once.getSourceURL((src=>{let sourceURL="";for(;src.length>0;){const match=regexpExec(sourceMetaEntriesRegExp,src);if(null===match)break;src=stringSlice(src,0,src.length-match[0].length),"sourceURL"===match[3]?sourceURL=match[4]:"sourceURL"===match[1]&&(sourceURL=match[2])}return sourceURL}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_REG_EXP,SyntaxError,stringReplace,stringSearch,stringSlice,stringSplit,freeze,getSourceURL;function getLineNumber(src,pattern){const index=stringSearch(src,pattern);if(index<0)return-1;const adjustment="\n"===src[index]?1:0;return stringSplit(stringSlice(src,0,index),"\n").length+adjustment}$h‍_imports([["./commons.js",[["FERAL_REG_EXP",[$h‍_a=>FERAL_REG_EXP=$h‍_a]],["SyntaxError",[$h‍_a=>SyntaxError=$h‍_a]],["stringReplace",[$h‍_a=>stringReplace=$h‍_a]],["stringSearch",[$h‍_a=>stringSearch=$h‍_a]],["stringSlice",[$h‍_a=>stringSlice=$h‍_a]],["stringSplit",[$h‍_a=>stringSplit=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./get-source-url.js",[["getSourceURL",[$h‍_a=>getSourceURL=$h‍_a]]]]]);const htmlCommentPattern=new FERAL_REG_EXP("(?:\x3c!--|--\x3e)","g"),rejectHtmlComments=src=>{const lineNumber=getLineNumber(src,htmlCommentPattern);if(lineNumber<0)return src;const name=getSourceURL(src);throw new SyntaxError(`Possible HTML comment rejected at ${name}:${lineNumber}. (SES_HTML_COMMENT_REJECTED)`)};$h‍_once.rejectHtmlComments(rejectHtmlComments);const evadeHtmlCommentTest=src=>stringReplace(src,htmlCommentPattern,(match=>"<"===match[0]?"< ! --":"-- >"));$h‍_once.evadeHtmlCommentTest(evadeHtmlCommentTest);const importPattern=new FERAL_REG_EXP("(^|[^.])\\bimport(\\s*(?:\\(|/[/*]))","g"),rejectImportExpressions=src=>{const lineNumber=getLineNumber(src,importPattern);if(lineNumber<0)return src;const name=getSourceURL(src);throw new SyntaxError(`Possible import expression rejected at ${name}:${lineNumber}. (SES_IMPORT_REJECTED)`)};$h‍_once.rejectImportExpressions(rejectImportExpressions);const evadeImportExpressionTest=src=>stringReplace(src,importPattern,((_,p1,p2)=>`${p1}__import__${p2}`));$h‍_once.evadeImportExpressionTest(evadeImportExpressionTest);const someDirectEvalPattern=new FERAL_REG_EXP("(^|[^.])\\beval(\\s*\\()","g"),rejectSomeDirectEvalExpressions=src=>{const lineNumber=getLineNumber(src,someDirectEvalPattern);if(lineNumber<0)return src;const name=getSourceURL(src);throw new SyntaxError(`Possible direct eval expression rejected at ${name}:${lineNumber}. (SES_EVAL_REJECTED)`)};$h‍_once.rejectSomeDirectEvalExpressions(rejectSomeDirectEvalExpressions);const mandatoryTransforms=source=>(source=rejectHtmlComments(source),source=rejectImportExpressions(source));$h‍_once.mandatoryTransforms(mandatoryTransforms);const applyTransforms=(source,transforms)=>{for(const transform of transforms)source=transform(source);return source};$h‍_once.applyTransforms(applyTransforms);const transforms=freeze({rejectHtmlComments:freeze(rejectHtmlComments),evadeHtmlCommentTest:freeze(evadeHtmlCommentTest),rejectImportExpressions:freeze(rejectImportExpressions),evadeImportExpressionTest:freeze(evadeImportExpressionTest),rejectSomeDirectEvalExpressions:freeze(rejectSomeDirectEvalExpressions),mandatoryTransforms:freeze(mandatoryTransforms),applyTransforms:freeze(applyTransforms)});$h‍_once.transforms(transforms)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let apply,freeze,strictScopeTerminator,createSloppyGlobalsScopeTerminator,makeEvalScopeKit,applyTransforms,mandatoryTransforms,makeEvaluate,assert;$h‍_imports([["./commons.js",[["apply",[$h‍_a=>apply=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./strict-scope-terminator.js",[["strictScopeTerminator",[$h‍_a=>strictScopeTerminator=$h‍_a]]]],["./sloppy-globals-scope-terminator.js",[["createSloppyGlobalsScopeTerminator",[$h‍_a=>createSloppyGlobalsScopeTerminator=$h‍_a]]]],["./eval-scope.js",[["makeEvalScopeKit",[$h‍_a=>makeEvalScopeKit=$h‍_a]]]],["./transforms.js",[["applyTransforms",[$h‍_a=>applyTransforms=$h‍_a]],["mandatoryTransforms",[$h‍_a=>mandatoryTransforms=$h‍_a]]]],["./make-evaluate.js",[["makeEvaluate",[$h‍_a=>makeEvaluate=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail}=assert;$h‍_once.makeSafeEvaluator((({globalObject:globalObject,moduleLexicals:moduleLexicals={},globalTransforms:globalTransforms=[],sloppyGlobalsMode:sloppyGlobalsMode=!1})=>{const scopeTerminator=sloppyGlobalsMode?createSloppyGlobalsScopeTerminator(globalObject):strictScopeTerminator,evalScopeKit=makeEvalScopeKit(),{evalScope:evalScope}=evalScopeKit,evaluateContext=freeze({evalScope:evalScope,moduleLexicals:moduleLexicals,globalObject:globalObject,scopeTerminator:scopeTerminator});let evaluate;return{safeEvaluate:(source,options)=>{const{localTransforms:localTransforms=[]}=options||{};let err;evaluate||(evaluate=makeEvaluate(evaluateContext)),source=applyTransforms(source,[...localTransforms,...globalTransforms,mandatoryTransforms]);try{return evalScopeKit.allowNextEvalToBeUnsafe(),apply(evaluate,globalObject,[source])}catch(e){throw err=e,e}finally{const unsafeEvalWasStillExposed="eval"in evalScope;delete evalScope.eval,unsafeEvalWasStillExposed&&(evalScopeKit.revoked={err:err},Fail`handler did not reset allowNextEvalToBeUnsafe ${err}`)}}}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,arrayPush,create,getOwnPropertyDescriptors,evadeHtmlCommentTest,evadeImportExpressionTest,rejectSomeDirectEvalExpressions,makeSafeEvaluator;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]]]],["./transforms.js",[["evadeHtmlCommentTest",[$h‍_a=>evadeHtmlCommentTest=$h‍_a]],["evadeImportExpressionTest",[$h‍_a=>evadeImportExpressionTest=$h‍_a]],["rejectSomeDirectEvalExpressions",[$h‍_a=>rejectSomeDirectEvalExpressions=$h‍_a]]]],["./make-safe-evaluator.js",[["makeSafeEvaluator",[$h‍_a=>makeSafeEvaluator=$h‍_a]]]]]);const provideCompartmentEvaluator=(compartmentFields,options)=>{const{sloppyGlobalsMode:sloppyGlobalsMode=!1,__moduleShimLexicals__:__moduleShimLexicals__}=options;let safeEvaluate;if(void 0!==__moduleShimLexicals__||sloppyGlobalsMode){let{globalTransforms:globalTransforms}=compartmentFields;const{globalObject:globalObject}=compartmentFields;let moduleLexicals;void 0!==__moduleShimLexicals__&&(globalTransforms=void 0,moduleLexicals=create(null,getOwnPropertyDescriptors(__moduleShimLexicals__))),({safeEvaluate:safeEvaluate}=makeSafeEvaluator({globalObject:globalObject,moduleLexicals:moduleLexicals,globalTransforms:globalTransforms,sloppyGlobalsMode:sloppyGlobalsMode}))}else({safeEvaluate:safeEvaluate}=compartmentFields);return{safeEvaluate:safeEvaluate}};$h‍_once.provideCompartmentEvaluator(provideCompartmentEvaluator);$h‍_once.compartmentEvaluate(((compartmentFields,source,options)=>{if("string"!=typeof source)throw new TypeError("first argument of evaluate() must be a string");const{transforms:transforms=[],__evadeHtmlCommentTest__:__evadeHtmlCommentTest__=!1,__evadeImportExpressionTest__:__evadeImportExpressionTest__=!1,__rejectSomeDirectEvalExpressions__:__rejectSomeDirectEvalExpressions__=!0}=options,localTransforms=[...transforms];!0===__evadeHtmlCommentTest__&&arrayPush(localTransforms,evadeHtmlCommentTest),!0===__evadeImportExpressionTest__&&arrayPush(localTransforms,evadeImportExpressionTest),!0===__rejectSomeDirectEvalExpressions__&&arrayPush(localTransforms,rejectSomeDirectEvalExpressions);const{safeEvaluate:safeEvaluate}=provideCompartmentEvaluator(compartmentFields,options);return safeEvaluate(source,{localTransforms:localTransforms})}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);$h‍_once.makeEvalFunction((safeEvaluate=>source=>"string"!=typeof source?source:safeEvaluate(source)))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,arrayJoin,arrayPop,defineProperties,getPrototypeOf,assert;$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayPop",[$h‍_a=>arrayPop=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail}=assert;$h‍_once.makeFunctionConstructor((safeEvaluate=>{const newFunction=function(_body){const bodyText=`${arrayPop(arguments)||""}`,parameters=`${arrayJoin(arguments,",")}`;new FERAL_FUNCTION(parameters,""),new FERAL_FUNCTION(bodyText);return safeEvaluate(`(function anonymous(${parameters}\n) {\n${bodyText}\n})`)};return defineProperties(newFunction,{prototype:{value:FERAL_FUNCTION.prototype,writable:!1,enumerable:!1,configurable:!1}}),getPrototypeOf(FERAL_FUNCTION)===FERAL_FUNCTION.prototype||Fail`Function prototype is the same accross compartments`,getPrototypeOf(newFunction)===FERAL_FUNCTION.prototype||Fail`Function constructor prototype is the same accross compartments`,newFunction}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);const constantProperties={Infinity:1/0,NaN:NaN,undefined:void 0};$h‍_once.constantProperties(constantProperties);$h‍_once.universalPropertyNames({isFinite:"isFinite",isNaN:"isNaN",parseFloat:"parseFloat",parseInt:"parseInt",decodeURI:"decodeURI",decodeURIComponent:"decodeURIComponent",encodeURI:"encodeURI",encodeURIComponent:"encodeURIComponent",Array:"Array",ArrayBuffer:"ArrayBuffer",BigInt:"BigInt",BigInt64Array:"BigInt64Array",BigUint64Array:"BigUint64Array",Boolean:"Boolean",DataView:"DataView",EvalError:"EvalError",Float32Array:"Float32Array",Float64Array:"Float64Array",Int8Array:"Int8Array",Int16Array:"Int16Array",Int32Array:"Int32Array",Map:"Map",Number:"Number",Object:"Object",Promise:"Promise",Proxy:"Proxy",RangeError:"RangeError",ReferenceError:"ReferenceError",Set:"Set",String:"String",Symbol:"Symbol",SyntaxError:"SyntaxError",TypeError:"TypeError",Uint8Array:"Uint8Array",Uint8ClampedArray:"Uint8ClampedArray",Uint16Array:"Uint16Array",Uint32Array:"Uint32Array",URIError:"URIError",WeakMap:"WeakMap",WeakSet:"WeakSet",JSON:"JSON",Reflect:"Reflect",escape:"escape",unescape:"unescape",lockdown:"lockdown",harden:"harden",HandledPromise:"HandledPromise"});$h‍_once.initialGlobalPropertyNames({Date:"%InitialDate%",Error:"%InitialError%",RegExp:"%InitialRegExp%",Math:"%InitialMath%",getStackString:"%InitialGetStackString%"});$h‍_once.sharedGlobalPropertyNames({Date:"%SharedDate%",Error:"%SharedError%",RegExp:"%SharedRegExp%",Math:"%SharedMath%"});$h‍_once.uniqueGlobalPropertyNames({globalThis:"%UniqueGlobalThis%",eval:"%UniqueEval%",Function:"%UniqueFunction%",Compartment:"%UniqueCompartment%"});const NativeErrors=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError];$h‍_once.NativeErrors(NativeErrors);const FunctionInstance={"[[Proto]]":"%FunctionPrototype%",length:"number",name:"string"};$h‍_once.FunctionInstance(FunctionInstance);const fn=FunctionInstance,asyncFn={"[[Proto]]":"%AsyncFunctionPrototype%"},getter={get:fn,set:"undefined"},accessor={get:fn,set:fn};function NativeError(prototype){return{"[[Proto]]":"%SharedError%",prototype:prototype}}function NativeErrorPrototype(constructor){return{"[[Proto]]":"%ErrorPrototype%",constructor:constructor,message:"string",name:"string",toString:!1,cause:!1}}function TypedArray(prototype){return{"[[Proto]]":"%TypedArray%",BYTES_PER_ELEMENT:"number",prototype:prototype}}function TypedArrayPrototype(constructor){return{"[[Proto]]":"%TypedArrayPrototype%",BYTES_PER_ELEMENT:"number",constructor:constructor}}$h‍_once.isAccessorPermit((permit=>permit===getter||permit===accessor));const SharedMath={E:"number",LN10:"number",LN2:"number",LOG10E:"number",LOG2E:"number",PI:"number",SQRT1_2:"number",SQRT2:"number","@@toStringTag":"string",abs:fn,acos:fn,acosh:fn,asin:fn,asinh:fn,atan:fn,atanh:fn,atan2:fn,cbrt:fn,ceil:fn,clz32:fn,cos:fn,cosh:fn,exp:fn,expm1:fn,floor:fn,fround:fn,hypot:fn,imul:fn,log:fn,log1p:fn,log10:fn,log2:fn,max:fn,min:fn,pow:fn,round:fn,sign:fn,sin:fn,sinh:fn,sqrt:fn,tan:fn,tanh:fn,trunc:fn,idiv:!1,idivmod:!1,imod:!1,imuldiv:!1,irem:!1,mod:!1},whitelist={"[[Proto]]":null,"%ThrowTypeError%":fn,Infinity:"number",NaN:"number",undefined:"undefined","%UniqueEval%":fn,isFinite:fn,isNaN:fn,parseFloat:fn,parseInt:fn,decodeURI:fn,decodeURIComponent:fn,encodeURI:fn,encodeURIComponent:fn,Object:{"[[Proto]]":"%FunctionPrototype%",assign:fn,create:fn,defineProperties:fn,defineProperty:fn,entries:fn,freeze:fn,fromEntries:fn,getOwnPropertyDescriptor:fn,getOwnPropertyDescriptors:fn,getOwnPropertyNames:fn,getOwnPropertySymbols:fn,getPrototypeOf:fn,hasOwn:fn,is:fn,isExtensible:fn,isFrozen:fn,isSealed:fn,keys:fn,preventExtensions:fn,prototype:"%ObjectPrototype%",seal:fn,setPrototypeOf:fn,values:fn},"%ObjectPrototype%":{"[[Proto]]":null,constructor:"Object",hasOwnProperty:fn,isPrototypeOf:fn,propertyIsEnumerable:fn,toLocaleString:fn,toString:fn,valueOf:fn,"--proto--":accessor,__defineGetter__:fn,__defineSetter__:fn,__lookupGetter__:fn,__lookupSetter__:fn},"%UniqueFunction%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%FunctionPrototype%"},"%InertFunction%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%FunctionPrototype%"},"%FunctionPrototype%":{apply:fn,bind:fn,call:fn,constructor:"%InertFunction%",toString:fn,"@@hasInstance":fn,caller:!1,arguments:!1},Boolean:{"[[Proto]]":"%FunctionPrototype%",prototype:"%BooleanPrototype%"},"%BooleanPrototype%":{constructor:"Boolean",toString:fn,valueOf:fn},Symbol:{"[[Proto]]":"%FunctionPrototype%",asyncIterator:"symbol",for:fn,hasInstance:"symbol",isConcatSpreadable:"symbol",iterator:"symbol",keyFor:fn,match:"symbol",matchAll:"symbol",prototype:"%SymbolPrototype%",replace:"symbol",search:"symbol",species:"symbol",split:"symbol",toPrimitive:"symbol",toStringTag:"symbol",unscopables:"symbol"},"%SymbolPrototype%":{constructor:"Symbol",description:getter,toString:fn,valueOf:fn,"@@toPrimitive":fn,"@@toStringTag":"string"},"%InitialError%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%ErrorPrototype%",captureStackTrace:fn,stackTraceLimit:accessor,prepareStackTrace:accessor},"%SharedError%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%ErrorPrototype%",captureStackTrace:fn,stackTraceLimit:accessor,prepareStackTrace:accessor},"%ErrorPrototype%":{constructor:"%SharedError%",message:"string",name:"string",toString:fn,at:!1,stack:accessor,cause:!1},EvalError:NativeError("%EvalErrorPrototype%"),RangeError:NativeError("%RangeErrorPrototype%"),ReferenceError:NativeError("%ReferenceErrorPrototype%"),SyntaxError:NativeError("%SyntaxErrorPrototype%"),TypeError:NativeError("%TypeErrorPrototype%"),URIError:NativeError("%URIErrorPrototype%"),"%EvalErrorPrototype%":NativeErrorPrototype("EvalError"),"%RangeErrorPrototype%":NativeErrorPrototype("RangeError"),"%ReferenceErrorPrototype%":NativeErrorPrototype("ReferenceError"),"%SyntaxErrorPrototype%":NativeErrorPrototype("SyntaxError"),"%TypeErrorPrototype%":NativeErrorPrototype("TypeError"),"%URIErrorPrototype%":NativeErrorPrototype("URIError"),Number:{"[[Proto]]":"%FunctionPrototype%",EPSILON:"number",isFinite:fn,isInteger:fn,isNaN:fn,isSafeInteger:fn,MAX_SAFE_INTEGER:"number",MAX_VALUE:"number",MIN_SAFE_INTEGER:"number",MIN_VALUE:"number",NaN:"number",NEGATIVE_INFINITY:"number",parseFloat:fn,parseInt:fn,POSITIVE_INFINITY:"number",prototype:"%NumberPrototype%"},"%NumberPrototype%":{constructor:"Number",toExponential:fn,toFixed:fn,toLocaleString:fn,toPrecision:fn,toString:fn,valueOf:fn},BigInt:{"[[Proto]]":"%FunctionPrototype%",asIntN:fn,asUintN:fn,prototype:"%BigIntPrototype%",bitLength:!1,fromArrayBuffer:!1},"%BigIntPrototype%":{constructor:"BigInt",toLocaleString:fn,toString:fn,valueOf:fn,"@@toStringTag":"string"},"%InitialMath%":{...SharedMath,random:fn},"%SharedMath%":SharedMath,"%InitialDate%":{"[[Proto]]":"%FunctionPrototype%",now:fn,parse:fn,prototype:"%DatePrototype%",UTC:fn},"%SharedDate%":{"[[Proto]]":"%FunctionPrototype%",now:fn,parse:fn,prototype:"%DatePrototype%",UTC:fn},"%DatePrototype%":{constructor:"%SharedDate%",getDate:fn,getDay:fn,getFullYear:fn,getHours:fn,getMilliseconds:fn,getMinutes:fn,getMonth:fn,getSeconds:fn,getTime:fn,getTimezoneOffset:fn,getUTCDate:fn,getUTCDay:fn,getUTCFullYear:fn,getUTCHours:fn,getUTCMilliseconds:fn,getUTCMinutes:fn,getUTCMonth:fn,getUTCSeconds:fn,setDate:fn,setFullYear:fn,setHours:fn,setMilliseconds:fn,setMinutes:fn,setMonth:fn,setSeconds:fn,setTime:fn,setUTCDate:fn,setUTCFullYear:fn,setUTCHours:fn,setUTCMilliseconds:fn,setUTCMinutes:fn,setUTCMonth:fn,setUTCSeconds:fn,toDateString:fn,toISOString:fn,toJSON:fn,toLocaleDateString:fn,toLocaleString:fn,toLocaleTimeString:fn,toString:fn,toTimeString:fn,toUTCString:fn,valueOf:fn,"@@toPrimitive":fn,getYear:fn,setYear:fn,toGMTString:fn},String:{"[[Proto]]":"%FunctionPrototype%",fromCharCode:fn,fromCodePoint:fn,prototype:"%StringPrototype%",raw:fn,fromArrayBuffer:!1},"%StringPrototype%":{length:"number",at:fn,charAt:fn,charCodeAt:fn,codePointAt:fn,concat:fn,constructor:"String",endsWith:fn,includes:fn,indexOf:fn,lastIndexOf:fn,localeCompare:fn,match:fn,matchAll:fn,normalize:fn,padEnd:fn,padStart:fn,repeat:fn,replace:fn,replaceAll:fn,search:fn,slice:fn,split:fn,startsWith:fn,substring:fn,toLocaleLowerCase:fn,toLocaleUpperCase:fn,toLowerCase:fn,toString:fn,toUpperCase:fn,trim:fn,trimEnd:fn,trimStart:fn,valueOf:fn,"@@iterator":fn,substr:fn,anchor:fn,big:fn,blink:fn,bold:fn,fixed:fn,fontcolor:fn,fontsize:fn,italics:fn,link:fn,small:fn,strike:fn,sub:fn,sup:fn,trimLeft:fn,trimRight:fn,compare:!1},"%StringIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},"%InitialRegExp%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%RegExpPrototype%","@@species":getter,input:!1,$_:!1,lastMatch:!1,"$&":!1,lastParen:!1,"$+":!1,leftContext:!1,"$`":!1,rightContext:!1,"$'":!1,$1:!1,$2:!1,$3:!1,$4:!1,$5:!1,$6:!1,$7:!1,$8:!1,$9:!1},"%SharedRegExp%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%RegExpPrototype%","@@species":getter},"%RegExpPrototype%":{constructor:"%SharedRegExp%",exec:fn,dotAll:getter,flags:getter,global:getter,ignoreCase:getter,"@@match":fn,"@@matchAll":fn,multiline:getter,"@@replace":fn,"@@search":fn,source:getter,"@@split":fn,sticky:getter,test:fn,toString:fn,unicode:getter,compile:!1,hasIndices:!1},"%RegExpStringIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},Array:{"[[Proto]]":"%FunctionPrototype%",from:fn,isArray:fn,of:fn,prototype:"%ArrayPrototype%","@@species":getter,at:fn},"%ArrayPrototype%":{at:fn,length:"number",concat:fn,constructor:"Array",copyWithin:fn,entries:fn,every:fn,fill:fn,filter:fn,find:fn,findIndex:fn,flat:fn,flatMap:fn,forEach:fn,includes:fn,indexOf:fn,join:fn,keys:fn,lastIndexOf:fn,map:fn,pop:fn,push:fn,reduce:fn,reduceRight:fn,reverse:fn,shift:fn,slice:fn,some:fn,sort:fn,splice:fn,toLocaleString:fn,toString:fn,unshift:fn,values:fn,"@@iterator":fn,"@@unscopables":{"[[Proto]]":null,copyWithin:"boolean",entries:"boolean",fill:"boolean",find:"boolean",findIndex:"boolean",flat:"boolean",flatMap:"boolean",includes:"boolean",keys:"boolean",values:"boolean",at:!1,findLast:"boolean",findLastIndex:"boolean"},findLast:fn,findLastIndex:fn},"%ArrayIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},"%TypedArray%":{"[[Proto]]":"%FunctionPrototype%",from:fn,of:fn,prototype:"%TypedArrayPrototype%","@@species":getter},"%TypedArrayPrototype%":{at:fn,buffer:getter,byteLength:getter,byteOffset:getter,constructor:"%TypedArray%",copyWithin:fn,entries:fn,every:fn,fill:fn,filter:fn,find:fn,findIndex:fn,forEach:fn,includes:fn,indexOf:fn,join:fn,keys:fn,lastIndexOf:fn,length:getter,map:fn,reduce:fn,reduceRight:fn,reverse:fn,set:fn,slice:fn,some:fn,sort:fn,subarray:fn,toLocaleString:fn,toString:fn,values:fn,"@@iterator":fn,"@@toStringTag":getter,findLast:fn,findLastIndex:fn},BigInt64Array:TypedArray("%BigInt64ArrayPrototype%"),BigUint64Array:TypedArray("%BigUint64ArrayPrototype%"),Float32Array:TypedArray("%Float32ArrayPrototype%"),Float64Array:TypedArray("%Float64ArrayPrototype%"),Int16Array:TypedArray("%Int16ArrayPrototype%"),Int32Array:TypedArray("%Int32ArrayPrototype%"),Int8Array:TypedArray("%Int8ArrayPrototype%"),Uint16Array:TypedArray("%Uint16ArrayPrototype%"),Uint32Array:TypedArray("%Uint32ArrayPrototype%"),Uint8Array:TypedArray("%Uint8ArrayPrototype%"),Uint8ClampedArray:TypedArray("%Uint8ClampedArrayPrototype%"),"%BigInt64ArrayPrototype%":TypedArrayPrototype("BigInt64Array"),"%BigUint64ArrayPrototype%":TypedArrayPrototype("BigUint64Array"),"%Float32ArrayPrototype%":TypedArrayPrototype("Float32Array"),"%Float64ArrayPrototype%":TypedArrayPrototype("Float64Array"),"%Int16ArrayPrototype%":TypedArrayPrototype("Int16Array"),"%Int32ArrayPrototype%":TypedArrayPrototype("Int32Array"),"%Int8ArrayPrototype%":TypedArrayPrototype("Int8Array"),"%Uint16ArrayPrototype%":TypedArrayPrototype("Uint16Array"),"%Uint32ArrayPrototype%":TypedArrayPrototype("Uint32Array"),"%Uint8ArrayPrototype%":TypedArrayPrototype("Uint8Array"),"%Uint8ClampedArrayPrototype%":TypedArrayPrototype("Uint8ClampedArray"),Map:{"[[Proto]]":"%FunctionPrototype%","@@species":getter,prototype:"%MapPrototype%"},"%MapPrototype%":{clear:fn,constructor:"Map",delete:fn,entries:fn,forEach:fn,get:fn,has:fn,keys:fn,set:fn,size:getter,values:fn,"@@iterator":fn,"@@toStringTag":"string"},"%MapIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},Set:{"[[Proto]]":"%FunctionPrototype%",prototype:"%SetPrototype%","@@species":getter},"%SetPrototype%":{add:fn,clear:fn,constructor:"Set",delete:fn,entries:fn,forEach:fn,has:fn,keys:fn,size:getter,values:fn,"@@iterator":fn,"@@toStringTag":"string"},"%SetIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},WeakMap:{"[[Proto]]":"%FunctionPrototype%",prototype:"%WeakMapPrototype%"},"%WeakMapPrototype%":{constructor:"WeakMap",delete:fn,get:fn,has:fn,set:fn,"@@toStringTag":"string"},WeakSet:{"[[Proto]]":"%FunctionPrototype%",prototype:"%WeakSetPrototype%"},"%WeakSetPrototype%":{add:fn,constructor:"WeakSet",delete:fn,has:fn,"@@toStringTag":"string"},ArrayBuffer:{"[[Proto]]":"%FunctionPrototype%",isView:fn,prototype:"%ArrayBufferPrototype%","@@species":getter,fromString:!1,fromBigInt:!1},"%ArrayBufferPrototype%":{byteLength:getter,constructor:"ArrayBuffer",slice:fn,"@@toStringTag":"string",concat:!1,transfer:fn,resize:fn,resizable:getter,maxByteLength:getter},SharedArrayBuffer:!1,"%SharedArrayBufferPrototype%":!1,DataView:{"[[Proto]]":"%FunctionPrototype%",BYTES_PER_ELEMENT:"number",prototype:"%DataViewPrototype%"},"%DataViewPrototype%":{buffer:getter,byteLength:getter,byteOffset:getter,constructor:"DataView",getBigInt64:fn,getBigUint64:fn,getFloat32:fn,getFloat64:fn,getInt8:fn,getInt16:fn,getInt32:fn,getUint8:fn,getUint16:fn,getUint32:fn,setBigInt64:fn,setBigUint64:fn,setFloat32:fn,setFloat64:fn,setInt8:fn,setInt16:fn,setInt32:fn,setUint8:fn,setUint16:fn,setUint32:fn,"@@toStringTag":"string"},Atomics:!1,JSON:{parse:fn,stringify:fn,"@@toStringTag":"string"},"%IteratorPrototype%":{"@@iterator":fn},"%AsyncIteratorPrototype%":{"@@asyncIterator":fn},"%InertGeneratorFunction%":{"[[Proto]]":"%InertFunction%",prototype:"%Generator%"},"%Generator%":{"[[Proto]]":"%FunctionPrototype%",constructor:"%InertGeneratorFunction%",prototype:"%GeneratorPrototype%","@@toStringTag":"string"},"%InertAsyncGeneratorFunction%":{"[[Proto]]":"%InertFunction%",prototype:"%AsyncGenerator%"},"%AsyncGenerator%":{"[[Proto]]":"%FunctionPrototype%",constructor:"%InertAsyncGeneratorFunction%",prototype:"%AsyncGeneratorPrototype%",length:"number","@@toStringTag":"string"},"%GeneratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",constructor:"%Generator%",next:fn,return:fn,throw:fn,"@@toStringTag":"string"},"%AsyncGeneratorPrototype%":{"[[Proto]]":"%AsyncIteratorPrototype%",constructor:"%AsyncGenerator%",next:fn,return:fn,throw:fn,"@@toStringTag":"string"},HandledPromise:{"[[Proto]]":"Promise",applyFunction:fn,applyFunctionSendOnly:fn,applyMethod:fn,applyMethodSendOnly:fn,get:fn,getSendOnly:fn,prototype:"%PromisePrototype%",resolve:fn},Promise:{"[[Proto]]":"%FunctionPrototype%",all:fn,allSettled:fn,any:!1,prototype:"%PromisePrototype%",race:fn,reject:fn,resolve:fn,"@@species":getter},"%PromisePrototype%":{catch:fn,constructor:"Promise",finally:fn,then:fn,"@@toStringTag":"string","UniqueSymbol(async_id_symbol)":accessor,"UniqueSymbol(trigger_async_id_symbol)":accessor,"UniqueSymbol(destroyed)":accessor},"%InertAsyncFunction%":{"[[Proto]]":"%InertFunction%",prototype:"%AsyncFunctionPrototype%"},"%AsyncFunctionPrototype%":{"[[Proto]]":"%FunctionPrototype%",constructor:"%InertAsyncFunction%",length:"number","@@toStringTag":"string"},Reflect:{apply:fn,construct:fn,defineProperty:fn,deleteProperty:fn,get:fn,getOwnPropertyDescriptor:fn,getPrototypeOf:fn,has:fn,isExtensible:fn,ownKeys:fn,preventExtensions:fn,set:fn,setPrototypeOf:fn,"@@toStringTag":"string"},Proxy:{"[[Proto]]":"%FunctionPrototype%",revocable:fn},escape:fn,unescape:fn,"%UniqueCompartment%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%CompartmentPrototype%",toString:fn},"%InertCompartment%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%CompartmentPrototype%",toString:fn},"%CompartmentPrototype%":{constructor:"%InertCompartment%",evaluate:fn,globalThis:getter,name:getter,toString:fn,import:asyncFn,load:asyncFn,importNow:fn,module:fn},lockdown:fn,harden:{...fn,isFake:"boolean"},"%InitialGetStackString%":fn};$h‍_once.whitelist(whitelist)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,assign,create,defineProperty,entries,freeze,objectHasOwnProperty,unscopablesSymbol,makeEvalFunction,makeFunctionConstructor,constantProperties,universalPropertyNames;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["unscopablesSymbol",[$h‍_a=>unscopablesSymbol=$h‍_a]]]],["./make-eval-function.js",[["makeEvalFunction",[$h‍_a=>makeEvalFunction=$h‍_a]]]],["./make-function-constructor.js",[["makeFunctionConstructor",[$h‍_a=>makeFunctionConstructor=$h‍_a]]]],["./whitelist.js",[["constantProperties",[$h‍_a=>constantProperties=$h‍_a]],["universalPropertyNames",[$h‍_a=>universalPropertyNames=$h‍_a]]]]]);$h‍_once.setGlobalObjectSymbolUnscopables((globalObject=>{defineProperty(globalObject,unscopablesSymbol,freeze(assign(create(null),{set:freeze((()=>{throw new TypeError("Cannot set Symbol.unscopables of a Compartment's globalThis")})),enumerable:!1,configurable:!1})))}));$h‍_once.setGlobalObjectConstantProperties((globalObject=>{for(const[name,constant]of entries(constantProperties))defineProperty(globalObject,name,{value:constant,writable:!1,enumerable:!1,configurable:!1})}));$h‍_once.setGlobalObjectMutableProperties(((globalObject,{intrinsics:intrinsics,newGlobalPropertyNames:newGlobalPropertyNames,makeCompartmentConstructor:makeCompartmentConstructor,markVirtualizedNativeFunction:markVirtualizedNativeFunction})=>{for(const[name,intrinsicName]of entries(universalPropertyNames))objectHasOwnProperty(intrinsics,intrinsicName)&&defineProperty(globalObject,name,{value:intrinsics[intrinsicName],writable:!0,enumerable:!1,configurable:!0});for(const[name,intrinsicName]of entries(newGlobalPropertyNames))objectHasOwnProperty(intrinsics,intrinsicName)&&defineProperty(globalObject,name,{value:intrinsics[intrinsicName],writable:!0,enumerable:!1,configurable:!0});const perCompartmentGlobals={globalThis:globalObject};perCompartmentGlobals.Compartment=makeCompartmentConstructor(makeCompartmentConstructor,intrinsics,markVirtualizedNativeFunction);for(const[name,value]of entries(perCompartmentGlobals))defineProperty(globalObject,name,{value:value,writable:!0,enumerable:!1,configurable:!0}),"function"==typeof value&&markVirtualizedNativeFunction(value)}));$h‍_once.setGlobalObjectEvaluators(((globalObject,evaluator,markVirtualizedNativeFunction)=>{{const f=makeEvalFunction(evaluator);markVirtualizedNativeFunction(f),defineProperty(globalObject,"eval",{value:f,writable:!0,enumerable:!1,configurable:!0})}{const f=makeFunctionConstructor(evaluator);markVirtualizedNativeFunction(f),defineProperty(globalObject,"Function",{value:f,writable:!0,enumerable:!1,configurable:!0})}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let ReferenceError,TypeError,Map,Set,arrayJoin,arrayMap,arrayPush,create,freeze,mapGet,mapHas,mapSet,setAdd,promiseCatch,promiseThen,values,weakmapGet,assert;$h‍_imports([["./commons.js",[["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["Map",[$h‍_a=>Map=$h‍_a]],["Set",[$h‍_a=>Set=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["setAdd",[$h‍_a=>setAdd=$h‍_a]],["promiseCatch",[$h‍_a=>promiseCatch=$h‍_a]],["promiseThen",[$h‍_a=>promiseThen=$h‍_a]],["values",[$h‍_a=>values=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,details:d,quote:q}=assert,noop=()=>{};$h‍_once.makeAlias(((compartment,specifier)=>freeze({compartment:compartment,specifier:specifier})));const loadRecord=(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,staticModuleRecord,pendingJobs,moduleLoads,errors,importMeta)=>{const{resolveHook:resolveHook,moduleRecords:moduleRecords}=weakmapGet(compartmentPrivateFields,compartment),resolvedImports=((imports,resolveHook,fullReferrerSpecifier)=>{const resolvedImports=create(null);for(const importSpecifier of imports){const fullSpecifier=resolveHook(importSpecifier,fullReferrerSpecifier);resolvedImports[importSpecifier]=fullSpecifier}return freeze(resolvedImports)})(staticModuleRecord.imports,resolveHook,moduleSpecifier),moduleRecord=freeze({compartment:compartment,staticModuleRecord:staticModuleRecord,moduleSpecifier:moduleSpecifier,resolvedImports:resolvedImports,importMeta:importMeta});for(const fullSpecifier of values(resolvedImports)){const dependencyLoaded=memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,compartment,fullSpecifier,pendingJobs,moduleLoads,errors);setAdd(pendingJobs,promiseThen(dependencyLoaded,noop,(error=>{arrayPush(errors,error)})))}return mapSet(moduleRecords,moduleSpecifier,moduleRecord),moduleRecord},memoizedLoadWithErrorAnnotation=async(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors)=>{const{name:compartmentName}=weakmapGet(compartmentPrivateFields,compartment);let compartmentLoading=mapGet(moduleLoads,compartment);void 0===compartmentLoading&&(compartmentLoading=new Map,mapSet(moduleLoads,compartment,compartmentLoading));let moduleLoading=mapGet(compartmentLoading,moduleSpecifier);return void 0!==moduleLoading||(moduleLoading=promiseCatch((async(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors)=>{const{importHook:importHook,moduleMap:moduleMap,moduleMapHook:moduleMapHook,moduleRecords:moduleRecords}=weakmapGet(compartmentPrivateFields,compartment);let aliasNamespace=moduleMap[moduleSpecifier];if(void 0===aliasNamespace&&void 0!==moduleMapHook&&(aliasNamespace=moduleMapHook(moduleSpecifier)),"string"==typeof aliasNamespace)assert.fail(d`Cannot map module ${q(moduleSpecifier)} to ${q(aliasNamespace)} in parent compartment, not yet implemented`,TypeError);else if(void 0!==aliasNamespace){const alias=weakmapGet(moduleAliases,aliasNamespace);void 0===alias&&assert.fail(d`Cannot map module ${q(moduleSpecifier)} because the value is not a module exports namespace, or is from another realm`,ReferenceError);const aliasRecord=await memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,alias.compartment,alias.specifier,pendingJobs,moduleLoads,errors);return mapSet(moduleRecords,moduleSpecifier,aliasRecord),aliasRecord}if(mapHas(moduleRecords,moduleSpecifier))return mapGet(moduleRecords,moduleSpecifier);const staticModuleRecord=await importHook(moduleSpecifier);if(null!==staticModuleRecord&&"object"==typeof staticModuleRecord||Fail`importHook must return a promise for an object, for module ${q(moduleSpecifier)} in compartment ${q(compartment.name)}`,void 0!==staticModuleRecord.specifier){if(void 0!==staticModuleRecord.record){if(void 0!==staticModuleRecord.compartment)throw new TypeError("Cannot redirect to an explicit record with a specified compartment");const{compartment:aliasCompartment=compartment,specifier:aliasSpecifier=moduleSpecifier,record:aliasModuleRecord,importMeta:importMeta}=staticModuleRecord,aliasRecord=loadRecord(compartmentPrivateFields,moduleAliases,aliasCompartment,aliasSpecifier,aliasModuleRecord,pendingJobs,moduleLoads,errors,importMeta);return mapSet(moduleRecords,moduleSpecifier,aliasRecord),aliasRecord}if(void 0!==staticModuleRecord.compartment){if(void 0!==staticModuleRecord.importMeta)throw new TypeError("Cannot redirect to an implicit record with a specified importMeta");const aliasRecord=await memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,staticModuleRecord.compartment,staticModuleRecord.specifier,pendingJobs,moduleLoads,errors);return mapSet(moduleRecords,moduleSpecifier,aliasRecord),aliasRecord}throw new TypeError("Unnexpected RedirectStaticModuleInterface record shape")}return loadRecord(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,staticModuleRecord,pendingJobs,moduleLoads,errors)})(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors),(error=>{throw assert.note(error,d`${error.message}, loading ${q(moduleSpecifier)} in compartment ${q(compartmentName)}`),error})),mapSet(compartmentLoading,moduleSpecifier,moduleLoading)),moduleLoading};$h‍_once.load((async(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier)=>{const{name:compartmentName}=weakmapGet(compartmentPrivateFields,compartment),pendingJobs=new Set,moduleLoads=new Map,errors=[],dependencyLoaded=memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors);setAdd(pendingJobs,promiseThen(dependencyLoaded,noop,(error=>{arrayPush(errors,error)})));for(const job of pendingJobs)await job;if(errors.length>0)throw new TypeError(`Failed to load module ${q(moduleSpecifier)} in package ${q(compartmentName)} (${errors.length} underlying failures: ${arrayJoin(arrayMap(errors,(error=>error.message)),", ")}`)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let makeAlias,Proxy,TypeError,create,freeze,mapGet,mapHas,mapSet,ownKeys,reflectGet,reflectGetOwnPropertyDescriptor,reflectHas,reflectIsExtensible,reflectPreventExtensions,weakmapSet,assert;$h‍_imports([["./module-load.js",[["makeAlias",[$h‍_a=>makeAlias=$h‍_a]]]],["./commons.js",[["Proxy",[$h‍_a=>Proxy=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["reflectGet",[$h‍_a=>reflectGet=$h‍_a]],["reflectGetOwnPropertyDescriptor",[$h‍_a=>reflectGetOwnPropertyDescriptor=$h‍_a]],["reflectHas",[$h‍_a=>reflectHas=$h‍_a]],["reflectIsExtensible",[$h‍_a=>reflectIsExtensible=$h‍_a]],["reflectPreventExtensions",[$h‍_a=>reflectPreventExtensions=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{quote:q}=assert,deferExports=()=>{let active=!1;const proxiedExports=create(null);return freeze({activate(){active=!0},proxiedExports:proxiedExports,exportsProxy:new Proxy(proxiedExports,{get(_target,name,receiver){if(!active)throw new TypeError(`Cannot get property ${q(name)} of module exports namespace, the module has not yet begun to execute`);return reflectGet(proxiedExports,name,receiver)},set(_target,name,_value){throw new TypeError(`Cannot set property ${q(name)} of module exports namespace`)},has(_target,name){if(!active)throw new TypeError(`Cannot check property ${q(name)}, the module has not yet begun to execute`);return reflectHas(proxiedExports,name)},deleteProperty(_target,name){throw new TypeError(`Cannot delete property ${q(name)}s of module exports namespace`)},ownKeys(_target){if(!active)throw new TypeError("Cannot enumerate keys, the module has not yet begun to execute");return ownKeys(proxiedExports)},getOwnPropertyDescriptor(_target,name){if(!active)throw new TypeError(`Cannot get own property descriptor ${q(name)}, the module has not yet begun to execute`);return reflectGetOwnPropertyDescriptor(proxiedExports,name)},preventExtensions(_target){if(!active)throw new TypeError("Cannot prevent extensions of module exports namespace, the module has not yet begun to execute");return reflectPreventExtensions(proxiedExports)},isExtensible(){if(!active)throw new TypeError("Cannot check extensibility of module exports namespace, the module has not yet begun to execute");return reflectIsExtensible(proxiedExports)},getPrototypeOf:_target=>null,setPrototypeOf(_target,_proto){throw new TypeError("Cannot set prototype of module exports namespace")},defineProperty(_target,name,_descriptor){throw new TypeError(`Cannot define property ${q(name)} of module exports namespace`)},apply(_target,_thisArg,_args){throw new TypeError("Cannot call module exports namespace, it is not a function")},construct(_target,_args){throw new TypeError("Cannot construct module exports namespace, it is not a constructor")}})})};$h‍_once.deferExports(deferExports);$h‍_once.getDeferredExports(((compartment,compartmentPrivateFields,moduleAliases,specifier)=>{const{deferredExports:deferredExports}=compartmentPrivateFields;if(!mapHas(deferredExports,specifier)){const deferred=deferExports();weakmapSet(moduleAliases,deferred.exportsProxy,makeAlias(compartment,specifier)),mapSet(deferredExports,specifier,deferred)}return mapGet(deferredExports,specifier)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let assert,getDeferredExports,ReferenceError,SyntaxError,TypeError,arrayForEach,arrayIncludes,arrayPush,arraySome,arraySort,create,defineProperty,entries,freeze,isArray,keys,mapGet,weakmapGet,reflectHas,assign,compartmentEvaluate;$h‍_imports([["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]],["./module-proxy.js",[["getDeferredExports",[$h‍_a=>getDeferredExports=$h‍_a]]]],["./commons.js",[["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["SyntaxError",[$h‍_a=>SyntaxError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayForEach",[$h‍_a=>arrayForEach=$h‍_a]],["arrayIncludes",[$h‍_a=>arrayIncludes=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["arraySome",[$h‍_a=>arraySome=$h‍_a]],["arraySort",[$h‍_a=>arraySort=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["isArray",[$h‍_a=>isArray=$h‍_a]],["keys",[$h‍_a=>keys=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["reflectHas",[$h‍_a=>reflectHas=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]]]],["./compartment-evaluate.js",[["compartmentEvaluate",[$h‍_a=>compartmentEvaluate=$h‍_a]]]]]);const{quote:q}=assert;$h‍_once.makeThirdPartyModuleInstance(((compartmentPrivateFields,staticModuleRecord,compartment,moduleAliases,moduleSpecifier,resolvedImports)=>{const{exportsProxy:exportsProxy,proxiedExports:proxiedExports,activate:activate}=getDeferredExports(compartment,weakmapGet(compartmentPrivateFields,compartment),moduleAliases,moduleSpecifier),notifiers=create(null);if(staticModuleRecord.exports){if(!isArray(staticModuleRecord.exports)||arraySome(staticModuleRecord.exports,(name=>"string"!=typeof name)))throw new TypeError(`SES third-party static module record "exports" property must be an array of strings for module ${moduleSpecifier}`);arrayForEach(staticModuleRecord.exports,(name=>{let value=proxiedExports[name];const updaters=[];defineProperty(proxiedExports,name,{get:()=>value,set:newValue=>{value=newValue;for(const updater of updaters)updater(newValue)},enumerable:!0,configurable:!1}),notifiers[name]=update=>{arrayPush(updaters,update),update(value)}})),notifiers["*"]=update=>{update(proxiedExports)}}const localState={activated:!1};return freeze({notifiers:notifiers,exportsProxy:exportsProxy,execute(){if(reflectHas(localState,"errorFromExecute"))throw localState.errorFromExecute;if(!localState.activated){activate(),localState.activated=!0;try{staticModuleRecord.execute(proxiedExports,compartment,resolvedImports)}catch(err){throw localState.errorFromExecute=err,err}}}})}));$h‍_once.makeModuleInstance(((privateFields,moduleAliases,moduleRecord,importedInstances)=>{const{compartment:compartment,moduleSpecifier:moduleSpecifier,staticModuleRecord:staticModuleRecord,importMeta:moduleRecordMeta}=moduleRecord,{reexports:exportAlls=[],__syncModuleProgram__:functorSource,__fixedExportMap__:fixedExportMap={},__liveExportMap__:liveExportMap={},__reexportMap__:reexportMap={},__needsImportMeta__:needsImportMeta=!1,__syncModuleFunctor__:__syncModuleFunctor__}=staticModuleRecord,compartmentFields=weakmapGet(privateFields,compartment),{__shimTransforms__:__shimTransforms__,importMetaHook:importMetaHook}=compartmentFields,{exportsProxy:exportsProxy,proxiedExports:proxiedExports,activate:activate}=getDeferredExports(compartment,compartmentFields,moduleAliases,moduleSpecifier),exportsProps=create(null),moduleLexicals=create(null),onceVar=create(null),liveVar=create(null),importMeta=create(null);moduleRecordMeta&&assign(importMeta,moduleRecordMeta),needsImportMeta&&importMetaHook&&importMetaHook(moduleSpecifier,importMeta);const localGetNotify=create(null),notifiers=create(null);arrayForEach(entries(fixedExportMap),(([fixedExportName,[localName]])=>{let fixedGetNotify=localGetNotify[localName];if(!fixedGetNotify){let value,tdz=!0,optUpdaters=[];const get=()=>{if(tdz)throw new ReferenceError(`binding ${q(localName)} not yet initialized`);return value},init=freeze((initValue=>{if(!tdz)throw new TypeError(`Internal: binding ${q(localName)} already initialized`);value=initValue;const updaters=optUpdaters;optUpdaters=null,tdz=!1;for(const updater of updaters||[])updater(initValue);return initValue}));fixedGetNotify={get:get,notify:updater=>{updater!==init&&(tdz?arrayPush(optUpdaters||[],updater):updater(value))}},localGetNotify[localName]=fixedGetNotify,onceVar[localName]=init}exportsProps[fixedExportName]={get:fixedGetNotify.get,set:void 0,enumerable:!0,configurable:!1},notifiers[fixedExportName]=fixedGetNotify.notify})),arrayForEach(entries(liveExportMap),(([liveExportName,[localName,setProxyTrap]])=>{let liveGetNotify=localGetNotify[localName];if(!liveGetNotify){let value,tdz=!0;const updaters=[],get=()=>{if(tdz)throw new ReferenceError(`binding ${q(liveExportName)} not yet initialized`);return value},update=freeze((newValue=>{value=newValue,tdz=!1;for(const updater of updaters)updater(newValue)})),set=newValue=>{if(tdz)throw new ReferenceError(`binding ${q(localName)} not yet initialized`);value=newValue;for(const updater of updaters)updater(newValue)};liveGetNotify={get:get,notify:updater=>{updater!==update&&(arrayPush(updaters,updater),tdz||updater(value))}},localGetNotify[localName]=liveGetNotify,setProxyTrap&&defineProperty(moduleLexicals,localName,{get:get,set:set,enumerable:!0,configurable:!1}),liveVar[localName]=update}exportsProps[liveExportName]={get:liveGetNotify.get,set:void 0,enumerable:!0,configurable:!1},notifiers[liveExportName]=liveGetNotify.notify}));function imports(updateRecord){const candidateAll=create(null);candidateAll.default=!1;for(const[specifier,importUpdaters]of updateRecord){const instance=mapGet(importedInstances,specifier);instance.execute();const{notifiers:importNotifiers}=instance;for(const[importName,updaters]of importUpdaters){const importNotify=importNotifiers[importName];if(!importNotify)throw SyntaxError(`The requested module '${specifier}' does not provide an export named '${importName}'`);for(const updater of updaters)importNotify(updater)}if(arrayIncludes(exportAlls,specifier))for(const[importAndExportName,importNotify]of entries(importNotifiers))void 0===candidateAll[importAndExportName]?candidateAll[importAndExportName]=importNotify:candidateAll[importAndExportName]=!1;if(reexportMap[specifier])for(const[localName,exportedName]of reexportMap[specifier])candidateAll[exportedName]=importNotifiers[localName]}for(const[exportName,notify]of entries(candidateAll))if(!notifiers[exportName]&&!1!==notify){let value;notifiers[exportName]=notify;notify((newValue=>value=newValue)),exportsProps[exportName]={get:()=>value,set:void 0,enumerable:!0,configurable:!1}}arrayForEach(arraySort(keys(exportsProps)),(k=>defineProperty(proxiedExports,k,exportsProps[k]))),freeze(proxiedExports),activate()}let optFunctor;notifiers["*"]=update=>{update(proxiedExports)},optFunctor=void 0!==__syncModuleFunctor__?__syncModuleFunctor__:compartmentEvaluate(compartmentFields,functorSource,{globalObject:compartment.globalThis,transforms:__shimTransforms__,__moduleShimLexicals__:moduleLexicals});let thrownError,didThrow=!1;return freeze({notifiers:notifiers,exportsProxy:exportsProxy,execute:function(){if(optFunctor){const functor=optFunctor;optFunctor=null;try{functor(freeze({imports:freeze(imports),onceVar:freeze(onceVar),liveVar:freeze(liveVar),importMeta:importMeta}))}catch(e){didThrow=!0,thrownError=e}}if(didThrow)throw thrownError}})}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let assert,makeModuleInstance,makeThirdPartyModuleInstance,Map,ReferenceError,TypeError,entries,isArray,isObject,mapGet,mapHas,mapSet,weakmapGet;$h‍_imports([["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]],["./module-instance.js",[["makeModuleInstance",[$h‍_a=>makeModuleInstance=$h‍_a]],["makeThirdPartyModuleInstance",[$h‍_a=>makeThirdPartyModuleInstance=$h‍_a]]]],["./commons.js",[["Map",[$h‍_a=>Map=$h‍_a]],["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["isArray",[$h‍_a=>isArray=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,link=(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier)=>{const{name:compartmentName,moduleRecords:moduleRecords}=weakmapGet(compartmentPrivateFields,compartment),moduleRecord=mapGet(moduleRecords,moduleSpecifier);if(void 0===moduleRecord)throw new ReferenceError(`Missing link to module ${q(moduleSpecifier)} from compartment ${q(compartmentName)}`);return instantiate(compartmentPrivateFields,moduleAliases,moduleRecord)};$h‍_once.link(link);const instantiate=(compartmentPrivateFields,moduleAliases,moduleRecord)=>{const{compartment:compartment,moduleSpecifier:moduleSpecifier,resolvedImports:resolvedImports,staticModuleRecord:staticModuleRecord}=moduleRecord,{instances:instances}=weakmapGet(compartmentPrivateFields,compartment);if(mapHas(instances,moduleSpecifier))return mapGet(instances,moduleSpecifier);!function(staticModuleRecord,moduleSpecifier){isObject(staticModuleRecord)||Fail`Static module records must be of type object, got ${q(staticModuleRecord)}, for module ${q(moduleSpecifier)}`;const{imports:imports,exports:exports,reexports:reexports=[]}=staticModuleRecord;isArray(imports)||Fail`Property 'imports' of a static module record must be an array, got ${q(imports)}, for module ${q(moduleSpecifier)}`,isArray(exports)||Fail`Property 'exports' of a precompiled module record must be an array, got ${q(exports)}, for module ${q(moduleSpecifier)}`,isArray(reexports)||Fail`Property 'reexports' of a precompiled module record must be an array if present, got ${q(reexports)}, for module ${q(moduleSpecifier)}`}(staticModuleRecord,moduleSpecifier);const importedInstances=new Map;let moduleInstance;if(function(staticModuleRecord){return"string"==typeof staticModuleRecord.__syncModuleProgram__}(staticModuleRecord))!function(staticModuleRecord,moduleSpecifier){const{__fixedExportMap__:__fixedExportMap__,__liveExportMap__:__liveExportMap__}=staticModuleRecord;isObject(__fixedExportMap__)||Fail`Property '__fixedExportMap__' of a precompiled module record must be an object, got ${q(__fixedExportMap__)}, for module ${q(moduleSpecifier)}`,isObject(__liveExportMap__)||Fail`Property '__liveExportMap__' of a precompiled module record must be an object, got ${q(__liveExportMap__)}, for module ${q(moduleSpecifier)}`}(staticModuleRecord,moduleSpecifier),moduleInstance=makeModuleInstance(compartmentPrivateFields,moduleAliases,moduleRecord,importedInstances);else{if(!function(staticModuleRecord){return"function"==typeof staticModuleRecord.execute}(staticModuleRecord))throw new TypeError(`importHook must return a static module record, got ${q(staticModuleRecord)}`);!function(staticModuleRecord,moduleSpecifier){const{exports:exports}=staticModuleRecord;isArray(exports)||Fail`Property 'exports' of a third-party static module record must be an array, got ${q(exports)}, for module ${q(moduleSpecifier)}`}(staticModuleRecord,moduleSpecifier),moduleInstance=makeThirdPartyModuleInstance(compartmentPrivateFields,staticModuleRecord,compartment,moduleAliases,moduleSpecifier,resolvedImports)}mapSet(instances,moduleSpecifier,moduleInstance);for(const[importSpecifier,resolvedSpecifier]of entries(resolvedImports)){const importedInstance=link(compartmentPrivateFields,moduleAliases,compartment,resolvedSpecifier);mapSet(importedInstances,importSpecifier,importedInstance)}return moduleInstance};$h‍_once.instantiate(instantiate)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Map,ReferenceError,TypeError,WeakMap,assign,defineProperties,entries,promiseThen,weakmapGet,weakmapSet,setGlobalObjectSymbolUnscopables,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,sharedGlobalPropertyNames,load,link,getDeferredExports,assert,compartmentEvaluate,makeSafeEvaluator;$h‍_imports([["./commons.js",[["Map",[$h‍_a=>Map=$h‍_a]],["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["promiseThen",[$h‍_a=>promiseThen=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]]]],["./global-object.js",[["setGlobalObjectSymbolUnscopables",[$h‍_a=>setGlobalObjectSymbolUnscopables=$h‍_a]],["setGlobalObjectConstantProperties",[$h‍_a=>setGlobalObjectConstantProperties=$h‍_a]],["setGlobalObjectMutableProperties",[$h‍_a=>setGlobalObjectMutableProperties=$h‍_a]],["setGlobalObjectEvaluators",[$h‍_a=>setGlobalObjectEvaluators=$h‍_a]]]],["./whitelist.js",[["sharedGlobalPropertyNames",[$h‍_a=>sharedGlobalPropertyNames=$h‍_a]]]],["./module-load.js",[["load",[$h‍_a=>load=$h‍_a]]]],["./module-link.js",[["link",[$h‍_a=>link=$h‍_a]]]],["./module-proxy.js",[["getDeferredExports",[$h‍_a=>getDeferredExports=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]],["./compartment-evaluate.js",[["compartmentEvaluate",[$h‍_a=>compartmentEvaluate=$h‍_a]]]],["./make-safe-evaluator.js",[["makeSafeEvaluator",[$h‍_a=>makeSafeEvaluator=$h‍_a]]]]]);const{quote:q}=assert,moduleAliases=new WeakMap,privateFields=new WeakMap,assertModuleHooks=compartment=>{const{importHook:importHook,resolveHook:resolveHook}=weakmapGet(privateFields,compartment);if("function"!=typeof importHook||"function"!=typeof resolveHook)throw new TypeError("Compartment must be constructed with an importHook and a resolveHook for it to be able to load modules")},InertCompartment=function(_endowments={},_modules={},_options={}){throw new TypeError("Compartment.prototype.constructor is not a valid constructor.")};$h‍_once.InertCompartment(InertCompartment);const compartmentImportNow=(compartment,specifier)=>{const{execute:execute,exportsProxy:exportsProxy}=link(privateFields,moduleAliases,compartment,specifier);return execute(),exportsProxy},CompartmentPrototype={constructor:InertCompartment,get globalThis(){return weakmapGet(privateFields,this).globalObject},get name(){return weakmapGet(privateFields,this).name},evaluate(source,options={}){const compartmentFields=weakmapGet(privateFields,this);return compartmentEvaluate(compartmentFields,source,options)},toString:()=>"[object Compartment]",module(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of module() must be a string");assertModuleHooks(this);const{exportsProxy:exportsProxy}=getDeferredExports(this,weakmapGet(privateFields,this),moduleAliases,specifier);return exportsProxy},async import(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of import() must be a string");return assertModuleHooks(this),promiseThen(load(privateFields,moduleAliases,this,specifier),(()=>({namespace:compartmentImportNow(this,specifier)})))},async load(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of load() must be a string");return assertModuleHooks(this),load(privateFields,moduleAliases,this,specifier)},importNow(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of importNow() must be a string");return assertModuleHooks(this),compartmentImportNow(this,specifier)}};$h‍_once.CompartmentPrototype(CompartmentPrototype),defineProperties(InertCompartment,{prototype:{value:CompartmentPrototype}});$h‍_once.makeCompartmentConstructor(((targetMakeCompartmentConstructor,intrinsics,markVirtualizedNativeFunction)=>{function Compartment(endowments={},moduleMap={},options={}){if(void 0===new.target)throw new TypeError("Class constructor Compartment cannot be invoked without 'new'");const{name:name="",transforms:transforms=[],__shimTransforms__:__shimTransforms__=[],resolveHook:resolveHook,importHook:importHook,moduleMapHook:moduleMapHook,importMetaHook:importMetaHook}=options,globalTransforms=[...transforms,...__shimTransforms__],moduleRecords=new Map,instances=new Map,deferredExports=new Map;for(const[specifier,aliasNamespace]of entries(moduleMap||{})){if("string"==typeof aliasNamespace)throw new TypeError(`Cannot map module ${q(specifier)} to ${q(aliasNamespace)} in parent compartment`);if(void 0===weakmapGet(moduleAliases,aliasNamespace))throw ReferenceError(`Cannot map module ${q(specifier)} because it has no known compartment in this realm`)}const globalObject={};setGlobalObjectSymbolUnscopables(globalObject),setGlobalObjectConstantProperties(globalObject);const{safeEvaluate:safeEvaluate}=makeSafeEvaluator({globalObject:globalObject,globalTransforms:globalTransforms,sloppyGlobalsMode:!1});setGlobalObjectMutableProperties(globalObject,{intrinsics:intrinsics,newGlobalPropertyNames:sharedGlobalPropertyNames,makeCompartmentConstructor:targetMakeCompartmentConstructor,markVirtualizedNativeFunction:markVirtualizedNativeFunction}),setGlobalObjectEvaluators(globalObject,safeEvaluate,markVirtualizedNativeFunction),assign(globalObject,endowments),weakmapSet(privateFields,this,{name:`${name}`,globalTransforms:globalTransforms,globalObject:globalObject,safeEvaluate:safeEvaluate,resolveHook:resolveHook,importHook:importHook,moduleMap:moduleMap,moduleMapHook:moduleMapHook,importMetaHook:importMetaHook,moduleRecords:moduleRecords,__shimTransforms__:__shimTransforms__,deferredExports:deferredExports,instances:instances})}return Compartment.prototype=CompartmentPrototype,Compartment}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,WeakSet,arrayFilter,create,defineProperty,entries,freeze,getOwnPropertyDescriptor,getOwnPropertyDescriptors,globalThis,is,isObject,objectHasOwnProperty,values,weaksetHas,constantProperties,sharedGlobalPropertyNames,universalPropertyNames,whitelist;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["values",[$h‍_a=>values=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]],["./whitelist.js",[["constantProperties",[$h‍_a=>constantProperties=$h‍_a]],["sharedGlobalPropertyNames",[$h‍_a=>sharedGlobalPropertyNames=$h‍_a]],["universalPropertyNames",[$h‍_a=>universalPropertyNames=$h‍_a]],["whitelist",[$h‍_a=>whitelist=$h‍_a]]]]]);const isFunction=obj=>"function"==typeof obj;function initProperty(obj,name,desc){if(objectHasOwnProperty(obj,name)){const preDesc=getOwnPropertyDescriptor(obj,name);if(!preDesc||!is(preDesc.value,desc.value)||preDesc.get!==desc.get||preDesc.set!==desc.set||preDesc.writable!==desc.writable||preDesc.enumerable!==desc.enumerable||preDesc.configurable!==desc.configurable)throw new TypeError(`Conflicting definitions of ${name}`)}defineProperty(obj,name,desc)}function sampleGlobals(globalObject,newPropertyNames){const newIntrinsics={__proto__:null};for(const[globalName,intrinsicName]of entries(newPropertyNames))objectHasOwnProperty(globalObject,globalName)&&(newIntrinsics[intrinsicName]=globalObject[globalName]);return newIntrinsics}const makeIntrinsicsCollector=()=>{const intrinsics=create(null);let pseudoNatives;const addIntrinsics=newIntrinsics=>{!function(obj,descs){for(const[name,desc]of entries(descs))initProperty(obj,name,desc)}(intrinsics,getOwnPropertyDescriptors(newIntrinsics))};freeze(addIntrinsics);const completePrototypes=()=>{for(const[name,intrinsic]of entries(intrinsics)){if(!isObject(intrinsic))continue;if(!objectHasOwnProperty(intrinsic,"prototype"))continue;const permit=whitelist[name];if("object"!=typeof permit)throw new TypeError(`Expected permit object at whitelist.${name}`);const namePrototype=permit.prototype;if(!namePrototype)throw new TypeError(`${name}.prototype property not whitelisted`);if("string"!=typeof namePrototype||!objectHasOwnProperty(whitelist,namePrototype))throw new TypeError(`Unrecognized ${name}.prototype whitelist entry`);const intrinsicPrototype=intrinsic.prototype;if(objectHasOwnProperty(intrinsics,namePrototype)){if(intrinsics[namePrototype]!==intrinsicPrototype)throw new TypeError(`Conflicting bindings of ${namePrototype}`)}else intrinsics[namePrototype]=intrinsicPrototype}};freeze(completePrototypes);const finalIntrinsics=()=>(freeze(intrinsics),pseudoNatives=new WeakSet(arrayFilter(values(intrinsics),isFunction)),intrinsics);freeze(finalIntrinsics);const isPseudoNative=obj=>{if(!pseudoNatives)throw new TypeError("isPseudoNative can only be called after finalIntrinsics");return weaksetHas(pseudoNatives,obj)};freeze(isPseudoNative);const intrinsicsCollector={addIntrinsics:addIntrinsics,completePrototypes:completePrototypes,finalIntrinsics:finalIntrinsics,isPseudoNative:isPseudoNative};return freeze(intrinsicsCollector),addIntrinsics(constantProperties),addIntrinsics(sampleGlobals(globalThis,universalPropertyNames)),intrinsicsCollector};$h‍_once.makeIntrinsicsCollector(makeIntrinsicsCollector);$h‍_once.getGlobalIntrinsics((globalObject=>{const{addIntrinsics:addIntrinsics,finalIntrinsics:finalIntrinsics}=makeIntrinsicsCollector();return addIntrinsics(sampleGlobals(globalObject,sharedGlobalPropertyNames)),finalIntrinsics()}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);$h‍_once.minEnablements({"%ObjectPrototype%":{toString:!0},"%FunctionPrototype%":{toString:!0},"%ErrorPrototype%":{name:!0}});const moderateEnablements={"%ObjectPrototype%":{toString:!0,valueOf:!0},"%ArrayPrototype%":{toString:!0,push:!0},"%FunctionPrototype%":{constructor:!0,bind:!0,toString:!0},"%ErrorPrototype%":{constructor:!0,message:!0,name:!0,toString:!0},"%TypeErrorPrototype%":{constructor:!0,message:!0,name:!0},"%SyntaxErrorPrototype%":{message:!0,name:!0},"%RangeErrorPrototype%":{message:!0,name:!0},"%URIErrorPrototype%":{message:!0,name:!0},"%EvalErrorPrototype%":{message:!0,name:!0},"%ReferenceErrorPrototype%":{message:!0,name:!0},"%PromisePrototype%":{constructor:!0},"%TypedArrayPrototype%":"*","%Generator%":{constructor:!0,name:!0,toString:!0},"%IteratorPrototype%":{toString:!0}};$h‍_once.moderateEnablements(moderateEnablements);const severeEnablements={...moderateEnablements,"%ObjectPrototype%":"*","%TypedArrayPrototype%":"*","%MapPrototype%":"*","%SetPrototype%":"*"};$h‍_once.severeEnablements(severeEnablements)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Set,String,TypeError,arrayForEach,defineProperty,getOwnPropertyDescriptor,getOwnPropertyDescriptors,getOwnPropertyNames,isObject,objectHasOwnProperty,ownKeys,setHas,minEnablements,moderateEnablements,severeEnablements;$h‍_imports([["./commons.js",[["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayForEach",[$h‍_a=>arrayForEach=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["getOwnPropertyNames",[$h‍_a=>getOwnPropertyNames=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["setHas",[$h‍_a=>setHas=$h‍_a]]]],["./enablements.js",[["minEnablements",[$h‍_a=>minEnablements=$h‍_a]],["moderateEnablements",[$h‍_a=>moderateEnablements=$h‍_a]],["severeEnablements",[$h‍_a=>severeEnablements=$h‍_a]]]]]),$h‍_once.default((function(intrinsics,overrideTaming,overrideDebug=[]){const debugProperties=new Set(overrideDebug);function enable(path,obj,prop,desc){if("value"in desc&&desc.configurable){const{value:value}=desc;function getter(){return value}defineProperty(getter,"originalValue",{value:value,writable:!1,enumerable:!1,configurable:!1});const isDebug=setHas(debugProperties,prop);function setter(newValue){if(obj===this)throw new TypeError(`Cannot assign to read only property '${String(prop)}' of '${path}'`);objectHasOwnProperty(this,prop)?this[prop]=newValue:(isDebug&&console.error(new TypeError(`Override property ${prop}`)),defineProperty(this,prop,{value:newValue,writable:!0,enumerable:!0,configurable:!0}))}defineProperty(obj,prop,{get:getter,set:setter,enumerable:desc.enumerable,configurable:desc.configurable})}}function enableProperty(path,obj,prop){const desc=getOwnPropertyDescriptor(obj,prop);desc&&enable(path,obj,prop,desc)}function enableAllProperties(path,obj){const descs=getOwnPropertyDescriptors(obj);descs&&arrayForEach(ownKeys(descs),(prop=>enable(path,obj,prop,descs[prop])))}let plan;switch(overrideTaming){case"min":plan=minEnablements;break;case"moderate":plan=moderateEnablements;break;case"severe":plan=severeEnablements;break;default:throw new TypeError(`unrecognized overrideTaming ${overrideTaming}`)}!function enableProperties(path,obj,plan){for(const prop of getOwnPropertyNames(plan)){const desc=getOwnPropertyDescriptor(obj,prop);if(!desc||desc.get||desc.set)continue;const subPath=`${path}.${String(prop)}`,subPlan=plan[prop];if(!0===subPlan)enableProperty(subPath,obj,prop);else if("*"===subPlan)enableAllProperties(subPath,desc.value);else{if(!isObject(subPlan))throw new TypeError(`Unexpected override enablement plan ${subPath}`);enableProperties(subPath,desc.value,subPlan)}}}("root",intrinsics,plan)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let arrayPush,freeze,assert;$h‍_imports([["./commons.js",[["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,makeEnvironmentCaptor=aGlobal=>{const capturedEnvironmentOptionNames=[],getEnvironmentOption=(optionName,defaultSetting)=>{"string"==typeof optionName||Fail`Environment option name ${q(optionName)} must be a string.`,"string"==typeof defaultSetting||Fail`Environment option default setting ${q(defaultSetting)} must be a string.`;let setting=defaultSetting;const globalProcess=aGlobal.process;if(globalProcess&&"object"==typeof globalProcess){const globalEnv=globalProcess.env;if(globalEnv&&"object"==typeof globalEnv&&optionName in globalEnv){arrayPush(capturedEnvironmentOptionNames,optionName);const optionValue=globalEnv[optionName];"string"==typeof optionValue||Fail`Environment option named ${q(optionName)}, if present, must have a corresponding string value, got ${q(optionValue)}`,setting=optionValue}}return void 0===setting||"string"==typeof setting||Fail`Environment option value ${q(setting)}, if present, must be a string.`,setting};freeze(getEnvironmentOption);const getCapturedEnvironmentOptionNames=()=>freeze([...capturedEnvironmentOptionNames]);return freeze(getCapturedEnvironmentOptionNames),freeze({getEnvironmentOption:getEnvironmentOption,getCapturedEnvironmentOptionNames:getCapturedEnvironmentOptionNames})};$h‍_once.makeEnvironmentCaptor(makeEnvironmentCaptor),freeze(makeEnvironmentCaptor)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let WeakSet,arrayFilter,arrayMap,arrayPush,defineProperty,freeze,fromEntries,isError,stringEndsWith,weaksetAdd,weaksetHas;$h‍_imports([["../commons.js",[["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["fromEntries",[$h‍_a=>fromEntries=$h‍_a]],["isError",[$h‍_a=>isError=$h‍_a]],["stringEndsWith",[$h‍_a=>stringEndsWith=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]],["./types.js",[]],["./internal-types.js",[]]]);const consoleLevelMethods=freeze([["debug","debug"],["log","log"],["info","info"],["warn","warn"],["error","error"],["trace","log"],["dirxml","log"],["group","log"],["groupCollapsed","log"]]),consoleOtherMethods=freeze([["assert","error"],["timeLog","log"],["clear",void 0],["count","info"],["countReset",void 0],["dir","log"],["groupEnd","log"],["table","log"],["time","info"],["timeEnd","info"],["profile",void 0],["profileEnd",void 0],["timeStamp",void 0]]),consoleWhitelist=freeze([...consoleLevelMethods,...consoleOtherMethods]);$h‍_once.consoleWhitelist(consoleWhitelist);const makeLoggingConsoleKit=(loggedErrorHandler,{shouldResetForDebugging:shouldResetForDebugging=!1}={})=>{shouldResetForDebugging&&loggedErrorHandler.resetErrorTagNum();let logArray=[];const loggingConsole=fromEntries(arrayMap(consoleWhitelist,(([name,_])=>{const method=(...args)=>{arrayPush(logArray,[name,...args])};return defineProperty(method,"name",{value:name}),[name,freeze(method)]})));freeze(loggingConsole);const takeLog=()=>{const result=freeze(logArray);return logArray=[],result};freeze(takeLog);return freeze({loggingConsole:loggingConsole,takeLog:takeLog})};$h‍_once.makeLoggingConsoleKit(makeLoggingConsoleKit),freeze(makeLoggingConsoleKit);const ErrorInfo={NOTE:"ERROR_NOTE:",MESSAGE:"ERROR_MESSAGE:"};freeze(ErrorInfo);const makeCausalConsole=(baseConsole,loggedErrorHandler)=>{const{getStackString:getStackString,tagError:tagError,takeMessageLogArgs:takeMessageLogArgs,takeNoteLogArgsArray:takeNoteLogArgsArray}=loggedErrorHandler,extractErrorArgs=(logArgs,subErrorsSink)=>arrayMap(logArgs,(arg=>isError(arg)?(arrayPush(subErrorsSink,arg),`(${tagError(arg)})`):arg)),logErrorInfo=(severity,error,kind,logArgs,subErrorsSink)=>{const errorTag=tagError(error),errorName=kind===ErrorInfo.MESSAGE?`${errorTag}:`:`${errorTag} ${kind}`,argTags=extractErrorArgs(logArgs,subErrorsSink);baseConsole[severity](errorName,...argTags)},logSubErrors=(severity,subErrors,optTag=undefined)=>{if(0===subErrors.length)return;if(1===subErrors.length&&void 0===optTag)return void logError(severity,subErrors[0]);let label;label=1===subErrors.length?"Nested error":`Nested ${subErrors.length} errors`,void 0!==optTag&&(label=`${label} under ${optTag}`),baseConsole.group(label);try{for(const subError of subErrors)logError(severity,subError)}finally{baseConsole.groupEnd()}},errorsLogged=new WeakSet,logError=(severity,error)=>{if(weaksetHas(errorsLogged,error))return;const errorTag=tagError(error);weaksetAdd(errorsLogged,error);const subErrors=[],messageLogArgs=takeMessageLogArgs(error),noteLogArgsArray=takeNoteLogArgsArray(error,(severity=>(error,noteLogArgs)=>{const subErrors=[];logErrorInfo(severity,error,ErrorInfo.NOTE,noteLogArgs,subErrors),logSubErrors(severity,subErrors,tagError(error))})(severity));void 0===messageLogArgs?baseConsole[severity](`${errorTag}:`,error.message):logErrorInfo(severity,error,ErrorInfo.MESSAGE,messageLogArgs,subErrors);let stackString=getStackString(error);"string"==typeof stackString&&stackString.length>=1&&!stringEndsWith(stackString,"\n")&&(stackString+="\n"),baseConsole[severity](stackString);for(const noteLogArgs of noteLogArgsArray)logErrorInfo(severity,error,ErrorInfo.NOTE,noteLogArgs,subErrors);logSubErrors(severity,subErrors,errorTag)},levelMethods=arrayMap(consoleLevelMethods,(([level,_])=>{const levelMethod=(...logArgs)=>{const subErrors=[],argTags=extractErrorArgs(logArgs,subErrors);baseConsole[level](...argTags),logSubErrors(level,subErrors)};return defineProperty(levelMethod,"name",{value:level}),[level,freeze(levelMethod)]})),otherMethodNames=arrayFilter(consoleOtherMethods,(([name,_])=>name in baseConsole)),otherMethods=arrayMap(otherMethodNames,(([name,_])=>{const otherMethod=(...args)=>{baseConsole[name](...args)};return defineProperty(otherMethod,"name",{value:name}),[name,freeze(otherMethod)]})),causalConsole=fromEntries([...levelMethods,...otherMethods]);return freeze(causalConsole)};$h‍_once.makeCausalConsole(makeCausalConsole),freeze(makeCausalConsole);const filterConsole=(baseConsole,filter,_topic=undefined)=>{const whitelist=arrayFilter(consoleWhitelist,(([name,_])=>name in baseConsole)),methods=arrayMap(whitelist,(([name,severity])=>[name,freeze(((...args)=>{(void 0===severity||filter.canLog(severity))&&baseConsole[name](...args)}))])),filteringConsole=fromEntries(methods);return freeze(filteringConsole)};$h‍_once.filterConsole(filterConsole),freeze(filterConsole)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FinalizationRegistry,Map,mapGet,mapDelete,WeakMap,mapSet,finalizationRegistryRegister,weakmapSet,weakmapGet,mapEntries,mapHas;$h‍_imports([["../commons.js",[["FinalizationRegistry",[$h‍_a=>FinalizationRegistry=$h‍_a]],["Map",[$h‍_a=>Map=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapDelete",[$h‍_a=>mapDelete=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["finalizationRegistryRegister",[$h‍_a=>finalizationRegistryRegister=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["mapEntries",[$h‍_a=>mapEntries=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]]]]]);$h‍_once.makeRejectionHandlers((reportReason=>{if(void 0===FinalizationRegistry)return;let lastReasonId=0;const idToReason=new Map;let cancelChecking;const removeReasonId=reasonId=>{mapDelete(idToReason,reasonId),cancelChecking&&0===idToReason.size&&(cancelChecking(),cancelChecking=void 0)},promiseToReasonId=new WeakMap,promiseToReason=new FinalizationRegistry((heldReasonId=>{if(mapHas(idToReason,heldReasonId)){const reason=mapGet(idToReason,heldReasonId);removeReasonId(heldReasonId),reportReason(reason)}}));return{rejectionHandledHandler:pr=>{const reasonId=weakmapGet(promiseToReasonId,pr);removeReasonId(reasonId)},unhandledRejectionHandler:(reason,pr)=>{lastReasonId+=1;const reasonId=lastReasonId;mapSet(idToReason,reasonId,reason),weakmapSet(promiseToReasonId,pr,reasonId),finalizationRegistryRegister(promiseToReason,pr,reasonId,pr)},processTerminationHandler:()=>{for(const[reasonId,reason]of mapEntries(idToReason))removeReasonId(reasonId),reportReason(reason)}}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,globalThis,defaultHandler,makeCausalConsole,makeRejectionHandlers;$h‍_imports([["../commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]]]],["./assert.js",[["loggedErrorHandler",[$h‍_a=>defaultHandler=$h‍_a]]]],["./console.js",[["makeCausalConsole",[$h‍_a=>makeCausalConsole=$h‍_a]]]],["./unhandled-rejection.js",[["makeRejectionHandlers",[$h‍_a=>makeRejectionHandlers=$h‍_a]]]],["./types.js",[]],["./internal-types.js",[]]]);const originalConsole=console;$h‍_once.tameConsole(((consoleTaming="safe",errorTrapping="platform",unhandledRejectionTrapping="report",optGetStackString=undefined)=>{if("safe"!==consoleTaming&&"unsafe"!==consoleTaming)throw new TypeError(`unrecognized consoleTaming ${consoleTaming}`);let loggedErrorHandler;loggedErrorHandler=void 0===optGetStackString?defaultHandler:{...defaultHandler,getStackString:optGetStackString};const ourConsole="unsafe"===consoleTaming?originalConsole:makeCausalConsole(originalConsole,loggedErrorHandler);if("none"!==errorTrapping&&void 0!==globalThis.process&&globalThis.process.on("uncaughtException",(error=>{ourConsole.error(error),"platform"===errorTrapping||"exit"===errorTrapping?globalThis.process.exit(globalThis.process.exitCode||-1):"abort"===errorTrapping&&globalThis.process.abort()})),"none"!==unhandledRejectionTrapping&&void 0!==globalThis.process){const h=makeRejectionHandlers((reason=>{ourConsole.error("SES_UNHANDLED_REJECTION:",reason)}));h&&(globalThis.process.on("unhandledRejection",h.unhandledRejectionHandler),globalThis.process.on("rejectionHandled",h.rejectionHandledHandler),globalThis.process.on("exit",h.processTerminationHandler))}if("none"!==errorTrapping&&void 0!==globalThis.window&&void 0!==globalThis.window.addEventListener&&globalThis.window.addEventListener("error",(event=>{event.preventDefault(),ourConsole.error(event.error),"exit"!==errorTrapping&&"abort"!==errorTrapping||(globalThis.window.location.href="about:blank")})),"none"!==unhandledRejectionTrapping&&void 0!==globalThis.window&&void 0!==globalThis.window.addEventListener){const h=makeRejectionHandlers((reason=>{ourConsole.error("SES_UNHANDLED_REJECTION:",reason)}));h&&(globalThis.window.addEventListener("unhandledrejection",(event=>{event.preventDefault(),h.unhandledRejectionHandler(event.reason,event.promise)})),globalThis.window.addEventListener("rejectionhandled",(event=>{event.preventDefault(),h.rejectionHandledHandler(event.promise)})),globalThis.window.addEventListener("beforeunload",(_event=>{h.processTerminationHandler()})))}return{console:ourConsole}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let WeakMap,WeakSet,apply,arrayFilter,arrayJoin,arrayMap,arraySlice,create,defineProperties,fromEntries,reflectSet,regexpExec,regexpTest,weakmapGet,weakmapSet,weaksetAdd,weaksetHas;$h‍_imports([["../commons.js",[["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arraySlice",[$h‍_a=>arraySlice=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["fromEntries",[$h‍_a=>fromEntries=$h‍_a]],["reflectSet",[$h‍_a=>reflectSet=$h‍_a]],["regexpExec",[$h‍_a=>regexpExec=$h‍_a]],["regexpTest",[$h‍_a=>regexpTest=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]]]);const safeV8CallSiteMethodNames=["getTypeName","getFunctionName","getMethodName","getFileName","getLineNumber","getColumnNumber","getEvalOrigin","isToplevel","isEval","isNative","isConstructor","isAsync","getPosition","getScriptNameOrSourceURL","toString"],safeV8CallSiteFacet=callSite=>{const o=fromEntries(arrayMap(safeV8CallSiteMethodNames,(name=>{const method=callSite[name];return[name,()=>apply(method,callSite,[])]})));return create(o,{})},FILENAME_CENSORS=[/\/node_modules\//,/^(?:node:)?internal\//,/\/packages\/ses\/src\/error\/assert.js$/,/\/packages\/eventual-send\/src\//],filterFileName=fileName=>{if(!fileName)return!0;for(const filter of FILENAME_CENSORS)if(regexpTest(filter,fileName))return!1;return!0};$h‍_once.filterFileName(filterFileName);const CALLSITE_PATTERNS=[/^((?:.*[( ])?)[:/\w_-]*\/\.\.\.\/(.+)$/,/^((?:.*[( ])?)[:/\w_-]*\/(packages\/.+)$/],shortenCallSiteString=callSiteString=>{for(const filter of CALLSITE_PATTERNS){const match=regexpExec(filter,callSiteString);if(match)return arrayJoin(arraySlice(match,1),"")}return callSiteString};$h‍_once.shortenCallSiteString(shortenCallSiteString);$h‍_once.tameV8ErrorConstructor(((OriginalError,InitialError,errorTaming,stackFiltering)=>{const originalCaptureStackTrace=OriginalError.captureStackTrace,callSiteFilter=callSite=>"verbose"===stackFiltering||filterFileName(callSite.getFileName()),callSiteStringifier=callSite=>{let callSiteString=`${callSite}`;return"concise"===stackFiltering&&(callSiteString=shortenCallSiteString(callSiteString)),`\n at ${callSiteString}`},stackStringFromSST=(_error,sst)=>arrayJoin(arrayMap(arrayFilter(sst,callSiteFilter),callSiteStringifier),""),stackInfos=new WeakMap,tamedMethods={captureStackTrace(error,optFn=tamedMethods.captureStackTrace){"function"!=typeof originalCaptureStackTrace?reflectSet(error,"stack",""):apply(originalCaptureStackTrace,OriginalError,[error,optFn])},getStackString(error){let stackInfo=weakmapGet(stackInfos,error);if(void 0===stackInfo&&(error.stack,stackInfo=weakmapGet(stackInfos,error),stackInfo||(stackInfo={stackString:""},weakmapSet(stackInfos,error,stackInfo))),void 0!==stackInfo.stackString)return stackInfo.stackString;const stackString=stackStringFromSST(0,stackInfo.callSites);return weakmapSet(stackInfos,error,{stackString:stackString}),stackString},prepareStackTrace(error,sst){if("unsafe"===errorTaming){const stackString=stackStringFromSST(0,sst);return weakmapSet(stackInfos,error,{stackString:stackString}),`${error}${stackString}`}return weakmapSet(stackInfos,error,{callSites:sst}),""}},defaultPrepareFn=tamedMethods.prepareStackTrace;OriginalError.prepareStackTrace=defaultPrepareFn;const systemPrepareFnSet=new WeakSet([defaultPrepareFn]),systemPrepareFnFor=inputPrepareFn=>{if(weaksetHas(systemPrepareFnSet,inputPrepareFn))return inputPrepareFn;const systemMethods={prepareStackTrace:(error,sst)=>(weakmapSet(stackInfos,error,{callSites:sst}),inputPrepareFn(error,(sst=>arrayMap(sst,safeV8CallSiteFacet))(sst)))};return weaksetAdd(systemPrepareFnSet,systemMethods.prepareStackTrace),systemMethods.prepareStackTrace};return defineProperties(InitialError,{captureStackTrace:{value:tamedMethods.captureStackTrace,writable:!0,enumerable:!1,configurable:!0},prepareStackTrace:{get:()=>OriginalError.prepareStackTrace,set(inputPrepareStackTraceFn){if("function"==typeof inputPrepareStackTraceFn){const systemPrepareFn=systemPrepareFnFor(inputPrepareStackTraceFn);OriginalError.prepareStackTrace=systemPrepareFn}else OriginalError.prepareStackTrace=defaultPrepareFn},enumerable:!1,configurable:!0}}),tamedMethods.getStackString}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_ERROR,TypeError,apply,construct,defineProperties,setPrototypeOf,getOwnPropertyDescriptor,defineProperty,NativeErrors,tameV8ErrorConstructor;$h‍_imports([["../commons.js",[["FERAL_ERROR",[$h‍_a=>FERAL_ERROR=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["construct",[$h‍_a=>construct=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["setPrototypeOf",[$h‍_a=>setPrototypeOf=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]]]],["../whitelist.js",[["NativeErrors",[$h‍_a=>NativeErrors=$h‍_a]]]],["./tame-v8-error-constructor.js",[["tameV8ErrorConstructor",[$h‍_a=>tameV8ErrorConstructor=$h‍_a]]]]]);const stackDesc=getOwnPropertyDescriptor(FERAL_ERROR.prototype,"stack"),stackGetter=stackDesc&&stackDesc.get,tamedMethods={getStackString:error=>"function"==typeof stackGetter?apply(stackGetter,error,[]):"stack"in error?`${error.stack}`:""};$h‍_once.default((function(errorTaming="safe",stackFiltering="concise"){if("safe"!==errorTaming&&"unsafe"!==errorTaming)throw new TypeError(`unrecognized errorTaming ${errorTaming}`);if("concise"!==stackFiltering&&"verbose"!==stackFiltering)throw new TypeError(`unrecognized stackFiltering ${stackFiltering}`);const ErrorPrototype=FERAL_ERROR.prototype,platform="function"==typeof FERAL_ERROR.captureStackTrace?"v8":"unknown",{captureStackTrace:originalCaptureStackTrace}=FERAL_ERROR,makeErrorConstructor=(_={})=>{const ResultError=function(...rest){let error;return error=void 0===new.target?apply(FERAL_ERROR,this,rest):construct(FERAL_ERROR,rest,new.target),"v8"===platform&&apply(originalCaptureStackTrace,FERAL_ERROR,[error,ResultError]),error};return defineProperties(ResultError,{length:{value:1},prototype:{value:ErrorPrototype,writable:!1,enumerable:!1,configurable:!1}}),ResultError},InitialError=makeErrorConstructor({powers:"original"}),SharedError=makeErrorConstructor({powers:"none"});defineProperties(ErrorPrototype,{constructor:{value:SharedError}});for(const NativeError of NativeErrors)setPrototypeOf(NativeError,SharedError);defineProperties(InitialError,{stackTraceLimit:{get(){if("number"==typeof FERAL_ERROR.stackTraceLimit)return FERAL_ERROR.stackTraceLimit},set(newLimit){"number"==typeof newLimit&&("number"!=typeof FERAL_ERROR.stackTraceLimit||(FERAL_ERROR.stackTraceLimit=newLimit))},enumerable:!1,configurable:!0}}),defineProperties(SharedError,{stackTraceLimit:{get(){},set(_newLimit){},enumerable:!1,configurable:!0}}),"v8"===platform&&defineProperties(SharedError,{prepareStackTrace:{get:()=>()=>"",set(_prepareFn){},enumerable:!1,configurable:!0},captureStackTrace:{value:(errorish,_constructorOpt)=>{defineProperty(errorish,"stack",{value:""})},writable:!1,enumerable:!1,configurable:!0}});let initialGetStackString=tamedMethods.getStackString;return"v8"===platform?initialGetStackString=tameV8ErrorConstructor(FERAL_ERROR,InitialError,errorTaming,stackFiltering):defineProperties(ErrorPrototype,"unsafe"===errorTaming?{stack:{get(){return initialGetStackString(this)},set(newValue){defineProperties(this,{stack:{value:newValue,writable:!0,enumerable:!0,configurable:!0}})}}}:{stack:{get(){return`${this}`},set(newValue){defineProperties(this,{stack:{value:newValue,writable:!0,enumerable:!0,configurable:!0}})}}}),{"%InitialGetStackString%":initialGetStackString,"%InitialError%":InitialError,"%SharedError%":SharedError}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,Float32Array,Map,Set,String,getOwnPropertyDescriptor,getPrototypeOf,iterateArray,iterateMap,iterateSet,iterateString,matchAllRegExp,matchAllSymbol,regexpPrototype,InertCompartment;function getConstructorOf(obj){return getPrototypeOf(obj).constructor}$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["Float32Array",[$h‍_a=>Float32Array=$h‍_a]],["Map",[$h‍_a=>Map=$h‍_a]],["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["iterateArray",[$h‍_a=>iterateArray=$h‍_a]],["iterateMap",[$h‍_a=>iterateMap=$h‍_a]],["iterateSet",[$h‍_a=>iterateSet=$h‍_a]],["iterateString",[$h‍_a=>iterateString=$h‍_a]],["matchAllRegExp",[$h‍_a=>matchAllRegExp=$h‍_a]],["matchAllSymbol",[$h‍_a=>matchAllSymbol=$h‍_a]],["regexpPrototype",[$h‍_a=>regexpPrototype=$h‍_a]]]],["./compartment-shim.js",[["InertCompartment",[$h‍_a=>InertCompartment=$h‍_a]]]]]);$h‍_once.getAnonymousIntrinsics((()=>{const InertFunction=FERAL_FUNCTION.prototype.constructor,argsCalleeDesc=getOwnPropertyDescriptor(function(){return arguments}(),"callee"),ThrowTypeError=argsCalleeDesc&&argsCalleeDesc.get,StringIteratorObject=iterateString(new String),StringIteratorPrototype=getPrototypeOf(StringIteratorObject),RegExpStringIterator=regexpPrototype[matchAllSymbol]&&matchAllRegExp(/./),RegExpStringIteratorPrototype=RegExpStringIterator&&getPrototypeOf(RegExpStringIterator),ArrayIteratorObject=iterateArray([]),ArrayIteratorPrototype=getPrototypeOf(ArrayIteratorObject),TypedArray=getPrototypeOf(Float32Array),MapIteratorObject=iterateMap(new Map),MapIteratorPrototype=getPrototypeOf(MapIteratorObject),SetIteratorObject=iterateSet(new Set),SetIteratorPrototype=getPrototypeOf(SetIteratorObject),IteratorPrototype=getPrototypeOf(ArrayIteratorPrototype);const GeneratorFunction=getConstructorOf((function*(){})),Generator=GeneratorFunction.prototype;const AsyncGeneratorFunction=getConstructorOf((async function*(){})),AsyncGenerator=AsyncGeneratorFunction.prototype,AsyncGeneratorPrototype=AsyncGenerator.prototype,AsyncIteratorPrototype=getPrototypeOf(AsyncGeneratorPrototype);return{"%InertFunction%":InertFunction,"%ArrayIteratorPrototype%":ArrayIteratorPrototype,"%InertAsyncFunction%":getConstructorOf((async function(){})),"%AsyncGenerator%":AsyncGenerator,"%InertAsyncGeneratorFunction%":AsyncGeneratorFunction,"%AsyncGeneratorPrototype%":AsyncGeneratorPrototype,"%AsyncIteratorPrototype%":AsyncIteratorPrototype,"%Generator%":Generator,"%InertGeneratorFunction%":GeneratorFunction,"%IteratorPrototype%":IteratorPrototype,"%MapIteratorPrototype%":MapIteratorPrototype,"%RegExpStringIteratorPrototype%":RegExpStringIteratorPrototype,"%SetIteratorPrototype%":SetIteratorPrototype,"%StringIteratorPrototype%":StringIteratorPrototype,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%InertCompartment%":InertCompartment}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Set,String,TypeError,WeakMap,WeakSet,globalThis,apply,arrayForEach,defineProperty,freeze,getOwnPropertyDescriptor,getOwnPropertyDescriptors,getPrototypeOf,isInteger,isObject,objectHasOwnProperty,ownKeys,preventExtensions,setAdd,setForEach,setHas,toStringTagSymbol,typedArrayPrototype,weakmapGet,weakmapSet,weaksetAdd,weaksetHas,assert;$h‍_imports([["./commons.js",[["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["arrayForEach",[$h‍_a=>arrayForEach=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["isInteger",[$h‍_a=>isInteger=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["preventExtensions",[$h‍_a=>preventExtensions=$h‍_a]],["setAdd",[$h‍_a=>setAdd=$h‍_a]],["setForEach",[$h‍_a=>setForEach=$h‍_a]],["setHas",[$h‍_a=>setHas=$h‍_a]],["toStringTagSymbol",[$h‍_a=>toStringTagSymbol=$h‍_a]],["typedArrayPrototype",[$h‍_a=>typedArrayPrototype=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const typedArrayToStringTag=getOwnPropertyDescriptor(typedArrayPrototype,toStringTagSymbol);assert(typedArrayToStringTag);const getTypedArrayToStringTag=typedArrayToStringTag.get;assert(getTypedArrayToStringTag);const isTypedArray=object=>void 0!==apply(getTypedArrayToStringTag,object,[]);$h‍_once.isTypedArray(isTypedArray);const freezeTypedArray=array=>{preventExtensions(array),arrayForEach(ownKeys(array),(name=>{const desc=getOwnPropertyDescriptor(array,name);assert(desc),(propertyKey=>{const n=+String(propertyKey);return isInteger(n)&&String(n)===propertyKey})(name)||defineProperty(array,name,{...desc,writable:!1,configurable:!1})}))};$h‍_once.makeHardener((()=>{if("function"==typeof globalThis.harden){return globalThis.harden}const hardened=new WeakSet,{harden:harden}={harden(root){const toFreeze=new Set,paths=new WeakMap;function enqueue(val,path=undefined){if(!isObject(val))return;const type=typeof val;if("object"!==type&&"function"!==type)throw new TypeError(`Unexpected typeof: ${type}`);weaksetHas(hardened,val)||setHas(toFreeze,val)||(setAdd(toFreeze,val),weakmapSet(paths,val,path))}function freezeAndTraverse(obj){isTypedArray(obj)?freezeTypedArray(obj):freeze(obj);const path=weakmapGet(paths,obj)||"unknown",descs=getOwnPropertyDescriptors(obj);enqueue(getPrototypeOf(obj),`${path}.__proto__`),arrayForEach(ownKeys(descs),(name=>{const pathname=`${path}.${String(name)}`,desc=descs[name];objectHasOwnProperty(desc,"value")?enqueue(desc.value,`${pathname}`):(enqueue(desc.get,`${pathname}(get)`),enqueue(desc.set,`${pathname}(set)`))}))}function markHardened(value){weaksetAdd(hardened,value)}return enqueue(root),setForEach(toFreeze,freezeAndTraverse),setForEach(toFreeze,markHardened),root}};return harden}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Date,TypeError,apply,construct,defineProperties;$h‍_imports([["./commons.js",[["Date",[$h‍_a=>Date=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["construct",[$h‍_a=>construct=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]]]]]),$h‍_once.default((function(dateTaming="safe"){if("safe"!==dateTaming&&"unsafe"!==dateTaming)throw new TypeError(`unrecognized dateTaming ${dateTaming}`);const OriginalDate=Date,DatePrototype=OriginalDate.prototype,tamedMethods={now:()=>NaN},makeDateConstructor=({powers:powers="none"}={})=>{let ResultDate;return ResultDate="original"===powers?function(...rest){return void 0===new.target?apply(OriginalDate,void 0,rest):construct(OriginalDate,rest,new.target)}:function(...rest){return void 0===new.target?"Invalid Date":(0===rest.length&&(rest=[NaN]),construct(OriginalDate,rest,new.target))},defineProperties(ResultDate,{length:{value:7},prototype:{value:DatePrototype,writable:!1,enumerable:!1,configurable:!1},parse:{value:Date.parse,writable:!0,enumerable:!1,configurable:!0},UTC:{value:Date.UTC,writable:!0,enumerable:!1,configurable:!0}}),ResultDate},InitialDate=makeDateConstructor({powers:"original"}),SharedDate=makeDateConstructor({powers:"none"});return defineProperties(InitialDate,{now:{value:Date.now,writable:!0,enumerable:!1,configurable:!0}}),defineProperties(SharedDate,{now:{value:tamedMethods.now,writable:!0,enumerable:!1,configurable:!0}}),defineProperties(DatePrototype,{constructor:{value:SharedDate}}),{"%InitialDate%":InitialDate,"%SharedDate%":SharedDate}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,globalThis,getOwnPropertyDescriptor,defineProperty;function tameDomains(domainTaming="safe"){if("safe"!==domainTaming&&"unsafe"!==domainTaming)throw new TypeError(`unrecognized domainTaming ${domainTaming}`);if("unsafe"!==domainTaming&&"object"==typeof globalThis.process&&null!==globalThis.process){const domainDescriptor=getOwnPropertyDescriptor(globalThis.process,"domain");if(void 0!==domainDescriptor&&void 0!==domainDescriptor.get)throw new TypeError("SES failed to lockdown, Node.js domains have been initialized (SES_NO_DOMAINS)");defineProperty(globalThis.process,"domain",{value:null,configurable:!1,writable:!1,enumerable:!1})}}$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]]]]]),Object.defineProperty(tameDomains,"name",{value:"tameDomains"}),$h‍_once.tameDomains(tameDomains)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,SyntaxError,TypeError,defineProperties,getPrototypeOf,setPrototypeOf,freeze;$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["SyntaxError",[$h‍_a=>SyntaxError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["setPrototypeOf",[$h‍_a=>setPrototypeOf=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]]]),$h‍_once.default((function(){try{FERAL_FUNCTION.prototype.constructor("return 1")}catch(ignore){return freeze({})}const newIntrinsics={};function repairFunction(name,intrinsicName,declaration){let FunctionInstance;try{FunctionInstance=(0,eval)(declaration)}catch(e){if(e instanceof SyntaxError)return;throw e}const FunctionPrototype=getPrototypeOf(FunctionInstance),InertConstructor=function(){throw new TypeError("Function.prototype.constructor is not a valid constructor.")};defineProperties(InertConstructor,{prototype:{value:FunctionPrototype},name:{value:name,writable:!1,enumerable:!1,configurable:!0}}),defineProperties(FunctionPrototype,{constructor:{value:InertConstructor}}),InertConstructor!==FERAL_FUNCTION.prototype.constructor&&setPrototypeOf(InertConstructor,FERAL_FUNCTION.prototype.constructor),newIntrinsics[intrinsicName]=InertConstructor}return repairFunction("Function","%InertFunction%","(function(){})"),repairFunction("GeneratorFunction","%InertGeneratorFunction%","(function*(){})"),repairFunction("AsyncFunction","%InertAsyncFunction%","(async function(){})"),repairFunction("AsyncGeneratorFunction","%InertAsyncGeneratorFunction%","(async function*(){})"),newIntrinsics}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let WeakSet,defineProperty,freeze,functionPrototype,functionToString,stringEndsWith,weaksetAdd,weaksetHas;$h‍_imports([["./commons.js",[["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["functionPrototype",[$h‍_a=>functionPrototype=$h‍_a]],["functionToString",[$h‍_a=>functionToString=$h‍_a]],["stringEndsWith",[$h‍_a=>stringEndsWith=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]]]);let markVirtualizedNativeFunction;$h‍_once.tameFunctionToString((()=>{if(void 0===markVirtualizedNativeFunction){const virtualizedNativeFunctions=new WeakSet;defineProperty(functionPrototype,"toString",{value:{toString(){const str=functionToString(this);return stringEndsWith(str,") { [native code] }")||!weaksetHas(virtualizedNativeFunctions,this)?str:`function ${this.name}() { [native code] }`}}.toString}),markVirtualizedNativeFunction=freeze((func=>weaksetAdd(virtualizedNativeFunctions,func)))}return markVirtualizedNativeFunction}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,freeze;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]]]);const tameHarden=(safeHarden,hardenTaming)=>{if("safe"!==hardenTaming&&"unsafe"!==hardenTaming)throw new TypeError(`unrecognized fakeHardenOption ${hardenTaming}`);if("safe"===hardenTaming)return safeHarden;if(Object.isExtensible=()=>!1,Object.isFrozen=()=>!0,Object.isSealed=()=>!0,Reflect.isExtensible=()=>!1,safeHarden.isFake)return safeHarden;const fakeHarden=arg=>arg;return fakeHarden.isFake=!0,freeze(fakeHarden)};$h‍_once.tameHarden(tameHarden),freeze(tameHarden)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Number,String,TypeError,defineProperty,getOwnPropertyNames,isObject,regexpExec,assert;$h‍_imports([["./commons.js",[["Number",[$h‍_a=>Number=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["getOwnPropertyNames",[$h‍_a=>getOwnPropertyNames=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["regexpExec",[$h‍_a=>regexpExec=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,localePattern=/^(\w*[a-z])Locale([A-Z]\w*)$/,tamedMethods={localeCompare(arg){if(null==this)throw new TypeError('Cannot localeCompare with null or undefined "this" value');const s=`${this}`,that=`${arg}`;return sthat?1:(s===that||Fail`expected ${q(s)} and ${q(that)} to compare`,0)},toString(){return`${this}`}},nonLocaleCompare=tamedMethods.localeCompare,numberToString=tamedMethods.toString;$h‍_once.default((function(intrinsics,localeTaming="safe"){if("safe"!==localeTaming&&"unsafe"!==localeTaming)throw new TypeError(`unrecognized localeTaming ${localeTaming}`);if("unsafe"!==localeTaming){defineProperty(String.prototype,"localeCompare",{value:nonLocaleCompare});for(const intrinsicName of getOwnPropertyNames(intrinsics)){const intrinsic=intrinsics[intrinsicName];if(isObject(intrinsic))for(const methodName of getOwnPropertyNames(intrinsic)){const match=regexpExec(localePattern,methodName);if(match){"function"==typeof intrinsic[methodName]||Fail`expected ${q(methodName)} to be a function`;const nonLocaleMethodName=`${match[1]}${match[2]}`,method=intrinsic[nonLocaleMethodName];"function"==typeof method||Fail`function ${q(nonLocaleMethodName)} not found`,defineProperty(intrinsic,methodName,{value:method})}}}defineProperty(Number.prototype,"toLocaleString",{value:numberToString})}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Math,TypeError,create,getOwnPropertyDescriptors,objectPrototype;$h‍_imports([["./commons.js",[["Math",[$h‍_a=>Math=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["objectPrototype",[$h‍_a=>objectPrototype=$h‍_a]]]]]),$h‍_once.default((function(mathTaming="safe"){if("safe"!==mathTaming&&"unsafe"!==mathTaming)throw new TypeError(`unrecognized mathTaming ${mathTaming}`);const originalMath=Math,initialMath=originalMath,{random:_,...otherDescriptors}=getOwnPropertyDescriptors(originalMath);return{"%InitialMath%":initialMath,"%SharedMath%":create(objectPrototype,otherDescriptors)}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_REG_EXP,TypeError,construct,defineProperties,getOwnPropertyDescriptor,speciesSymbol;$h‍_imports([["./commons.js",[["FERAL_REG_EXP",[$h‍_a=>FERAL_REG_EXP=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["construct",[$h‍_a=>construct=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["speciesSymbol",[$h‍_a=>speciesSymbol=$h‍_a]]]]]),$h‍_once.default((function(regExpTaming="safe"){if("safe"!==regExpTaming&&"unsafe"!==regExpTaming)throw new TypeError(`unrecognized regExpTaming ${regExpTaming}`);const RegExpPrototype=FERAL_REG_EXP.prototype,makeRegExpConstructor=(_={})=>{const ResultRegExp=function(...rest){return void 0===new.target?FERAL_REG_EXP(...rest):construct(FERAL_REG_EXP,rest,new.target)},speciesDesc=getOwnPropertyDescriptor(FERAL_REG_EXP,speciesSymbol);if(!speciesDesc)throw new TypeError("no RegExp[Symbol.species] descriptor");return defineProperties(ResultRegExp,{length:{value:2},prototype:{value:RegExpPrototype,writable:!1,enumerable:!1,configurable:!1},[speciesSymbol]:speciesDesc}),ResultRegExp},InitialRegExp=makeRegExpConstructor(),SharedRegExp=makeRegExpConstructor();return"unsafe"!==regExpTaming&&delete RegExpPrototype.compile,defineProperties(RegExpPrototype,{constructor:{value:SharedRegExp}}),{"%InitialRegExp%":InitialRegExp,"%SharedRegExp%":SharedRegExp}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let whitelist,FunctionInstance,isAccessorPermit,Map,String,TypeError,arrayFilter,arrayIncludes,arrayMap,entries,getOwnPropertyDescriptor,getPrototypeOf,isObject,mapGet,objectHasOwnProperty,ownKeys,symbolKeyFor;$h‍_imports([["./whitelist.js",[["whitelist",[$h‍_a=>whitelist=$h‍_a]],["FunctionInstance",[$h‍_a=>FunctionInstance=$h‍_a]],["isAccessorPermit",[$h‍_a=>isAccessorPermit=$h‍_a]]]],["./commons.js",[["Map",[$h‍_a=>Map=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayIncludes",[$h‍_a=>arrayIncludes=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["symbolKeyFor",[$h‍_a=>symbolKeyFor=$h‍_a]]]]]),$h‍_once.default((function(intrinsics,markVirtualizedNativeFunction){const primitives=["undefined","boolean","number","string","symbol"],wellKnownSymbolNames=new Map(intrinsics.Symbol?arrayMap(arrayFilter(entries(whitelist.Symbol),(([name,permit])=>"symbol"===permit&&"symbol"==typeof intrinsics.Symbol[name])),(([name])=>[intrinsics.Symbol[name],`@@${name}`])):[]);function asStringPropertyName(path,prop){if("string"==typeof prop)return prop;const wellKnownSymbol=mapGet(wellKnownSymbolNames,prop);if("symbol"==typeof prop){if(wellKnownSymbol)return wellKnownSymbol;{const registeredKey=symbolKeyFor(prop);return void 0!==registeredKey?`RegisteredSymbol(${registeredKey})`:`Unique${String(prop)}`}}throw new TypeError(`Unexpected property name type ${path} ${prop}`)}function isAllowedPropertyValue(path,value,prop,permit){if("object"==typeof permit)return visitProperties(path,value,permit),!0;if(!1===permit)return!1;if("string"==typeof permit)if("prototype"===prop||"constructor"===prop){if(objectHasOwnProperty(intrinsics,permit)){if(value!==intrinsics[permit])throw new TypeError(`Does not match whitelist ${path}`);return!0}}else if(arrayIncludes(primitives,permit)){if(typeof value!==permit)throw new TypeError(`At ${path} expected ${permit} not ${typeof value}`);return!0}throw new TypeError(`Unexpected whitelist permit ${permit} at ${path}`)}function isAllowedProperty(path,obj,prop,permit){const desc=getOwnPropertyDescriptor(obj,prop);if(!desc)throw new TypeError(`Property ${prop} not found at ${path}`);if(objectHasOwnProperty(desc,"value")){if(isAccessorPermit(permit))throw new TypeError(`Accessor expected at ${path}`);return isAllowedPropertyValue(path,desc.value,prop,permit)}if(!isAccessorPermit(permit))throw new TypeError(`Accessor not expected at ${path}`);return isAllowedPropertyValue(`${path}`,desc.get,prop,permit.get)&&isAllowedPropertyValue(`${path}`,desc.set,prop,permit.set)}function getSubPermit(obj,permit,prop){const permitProp="__proto__"===prop?"--proto--":prop;return objectHasOwnProperty(permit,permitProp)?permit[permitProp]:"function"==typeof obj&&(markVirtualizedNativeFunction(obj),objectHasOwnProperty(FunctionInstance,permitProp))?FunctionInstance[permitProp]:void 0}function visitProperties(path,obj,permit){if(void 0===obj)return;!function(path,obj,protoName){if(!isObject(obj))throw new TypeError(`Object expected: ${path}, ${obj}, ${protoName}`);const proto=getPrototypeOf(obj);if(null!==proto||null!==protoName){if(void 0!==protoName&&"string"!=typeof protoName)throw new TypeError(`Malformed whitelist permit ${path}.__proto__`);if(proto!==intrinsics[protoName||"%ObjectPrototype%"])throw new TypeError(`Unexpected intrinsic ${path}.__proto__ at ${protoName}`)}}(path,obj,permit["[[Proto]]"]);for(const prop of ownKeys(obj)){const propString=asStringPropertyName(path,prop),subPath=`${path}.${propString}`,subPermit=getSubPermit(obj,permit,propString);if(!subPermit||!isAllowedProperty(subPath,obj,prop,subPermit)){!1!==subPermit&&console.warn(`Removing ${subPath}`);try{delete obj[prop]}catch(err){if(prop in obj){if("function"==typeof obj&&"prototype"===prop&&(obj.prototype=void 0,void 0===obj.prototype)){console.warn(`Tolerating undeletable ${subPath} === undefined`);continue}console.error(`failed to delete ${subPath}`,err)}else console.error(`deleting ${subPath} threw`,err);throw err}}}}visitProperties("intrinsics",intrinsics,whitelist)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden;$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["FERAL_EVAL",[$h‍_a=>FERAL_EVAL=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["stringSplit",[$h‍_a=>stringSplit=$h‍_a]],["noEvalEvaluate",[$h‍_a=>noEvalEvaluate=$h‍_a]]]],["./error/stringify-utils.js",[["enJoin",[$h‍_a=>enJoin=$h‍_a]]]],["./make-hardener.js",[["makeHardener",[$h‍_a=>makeHardener=$h‍_a]]]],["./intrinsics.js",[["makeIntrinsicsCollector",[$h‍_a=>makeIntrinsicsCollector=$h‍_a]]]],["./whitelist-intrinsics.js",[["default",[$h‍_a=>whitelistIntrinsics=$h‍_a]]]],["./tame-function-constructors.js",[["default",[$h‍_a=>tameFunctionConstructors=$h‍_a]]]],["./tame-date-constructor.js",[["default",[$h‍_a=>tameDateConstructor=$h‍_a]]]],["./tame-math-object.js",[["default",[$h‍_a=>tameMathObject=$h‍_a]]]],["./tame-regexp-constructor.js",[["default",[$h‍_a=>tameRegExpConstructor=$h‍_a]]]],["./enable-property-overrides.js",[["default",[$h‍_a=>enablePropertyOverrides=$h‍_a]]]],["./tame-locale-methods.js",[["default",[$h‍_a=>tameLocaleMethods=$h‍_a]]]],["./global-object.js",[["setGlobalObjectConstantProperties",[$h‍_a=>setGlobalObjectConstantProperties=$h‍_a]],["setGlobalObjectMutableProperties",[$h‍_a=>setGlobalObjectMutableProperties=$h‍_a]],["setGlobalObjectEvaluators",[$h‍_a=>setGlobalObjectEvaluators=$h‍_a]]]],["./make-safe-evaluator.js",[["makeSafeEvaluator",[$h‍_a=>makeSafeEvaluator=$h‍_a]]]],["./whitelist.js",[["initialGlobalPropertyNames",[$h‍_a=>initialGlobalPropertyNames=$h‍_a]]]],["./tame-function-tostring.js",[["tameFunctionToString",[$h‍_a=>tameFunctionToString=$h‍_a]]]],["./tame-domains.js",[["tameDomains",[$h‍_a=>tameDomains=$h‍_a]]]],["./error/tame-console.js",[["tameConsole",[$h‍_a=>tameConsole=$h‍_a]]]],["./error/tame-error-constructor.js",[["default",[$h‍_a=>tameErrorConstructor=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]],["makeAssert",[$h‍_a=>makeAssert=$h‍_a]]]],["./environment-options.js",[["makeEnvironmentCaptor",[$h‍_a=>makeEnvironmentCaptor=$h‍_a]]]],["./get-anonymous-intrinsics.js",[["getAnonymousIntrinsics",[$h‍_a=>getAnonymousIntrinsics=$h‍_a]]]],["./compartment-shim.js",[["makeCompartmentConstructor",[$h‍_a=>makeCompartmentConstructor=$h‍_a]]]],["./tame-harden.js",[["tameHarden",[$h‍_a=>tameHarden=$h‍_a]]]]]);const{Fail:Fail,details:d,quote:q}=assert;let priorLockdown;const safeHarden=makeHardener(),repairIntrinsics=(options={})=>{const{getEnvironmentOption:getenv,getCapturedEnvironmentOptionNames:getCapturedEnvironmentOptionNames}=makeEnvironmentCaptor(globalThis),{errorTaming:errorTaming=getenv("LOCKDOWN_ERROR_TAMING","safe"),errorTrapping:errorTrapping=getenv("LOCKDOWN_ERROR_TRAPPING","platform"),unhandledRejectionTrapping:unhandledRejectionTrapping=getenv("LOCKDOWN_UNHANDLED_REJECTION_TRAPPING","report"),regExpTaming:regExpTaming=getenv("LOCKDOWN_REGEXP_TAMING","safe"),localeTaming:localeTaming=getenv("LOCKDOWN_LOCALE_TAMING","safe"),consoleTaming:consoleTaming=getenv("LOCKDOWN_CONSOLE_TAMING","safe"),overrideTaming:overrideTaming=getenv("LOCKDOWN_OVERRIDE_TAMING","moderate"),stackFiltering:stackFiltering=getenv("LOCKDOWN_STACK_FILTERING","concise"),domainTaming:domainTaming=getenv("LOCKDOWN_DOMAIN_TAMING","safe"),evalTaming:evalTaming=getenv("LOCKDOWN_EVAL_TAMING","safeEval"),overrideDebug:overrideDebug=arrayFilter(stringSplit(getenv("LOCKDOWN_OVERRIDE_DEBUG",""),","),(debugName=>""!==debugName)),__hardenTaming__:__hardenTaming__=getenv("LOCKDOWN_HARDEN_TAMING","safe"),dateTaming:dateTaming="safe",mathTaming:mathTaming="safe",...extraOptions}=options,capturedEnvironmentOptionNames=getCapturedEnvironmentOptionNames();capturedEnvironmentOptionNames.length>0&&console.warn(`SES Lockdown using options from environment variables ${enJoin(arrayMap(capturedEnvironmentOptionNames,q),"and")}`),"unsafeEval"===evalTaming||"safeEval"===evalTaming||"noEval"===evalTaming||Fail`lockdown(): non supported option evalTaming: ${q(evalTaming)}`;const extraOptionsNames=ownKeys(extraOptions);0===extraOptionsNames.length||Fail`lockdown(): non supported option ${q(extraOptionsNames)}`,void 0===priorLockdown||assert.fail(d`Already locked down at ${priorLockdown} (SES_ALREADY_LOCKED_DOWN)`,TypeError),priorLockdown=new TypeError("Prior lockdown (SES_ALREADY_LOCKED_DOWN)"),priorLockdown.stack,(()=>{let allowed=!1;try{allowed=FERAL_FUNCTION("eval","SES_changed",' eval("SES_changed = true");\n return SES_changed;\n ')(FERAL_EVAL,!1),allowed||delete globalThis.SES_changed}catch(_error){allowed=!0}if(!allowed)throw new TypeError("SES cannot initialize unless 'eval' is the original intrinsic 'eval', suitable for direct-eval (dynamically scoped eval) (SES_DIRECT_EVAL)")})();if(globalThis.Function.prototype.constructor!==globalThis.Function&&"function"==typeof globalThis.harden&&"function"==typeof globalThis.lockdown&&globalThis.Date.prototype.constructor!==globalThis.Date&&"function"==typeof globalThis.Date.now&&is(globalThis.Date.prototype.constructor.now(),NaN))throw new TypeError("Already locked down but not by this SES instance (SES_MULTIPLE_INSTANCES)");tameDomains(domainTaming);const{addIntrinsics:addIntrinsics,completePrototypes:completePrototypes,finalIntrinsics:finalIntrinsics}=makeIntrinsicsCollector(),tamedHarden=tameHarden(safeHarden,__hardenTaming__);addIntrinsics({harden:tamedHarden}),addIntrinsics(tameFunctionConstructors()),addIntrinsics(tameDateConstructor(dateTaming)),addIntrinsics(tameErrorConstructor(errorTaming,stackFiltering)),addIntrinsics(tameMathObject(mathTaming)),addIntrinsics(tameRegExpConstructor(regExpTaming)),addIntrinsics(getAnonymousIntrinsics()),completePrototypes();const intrinsics=finalIntrinsics();let optGetStackString;"unsafe"!==errorTaming&&(optGetStackString=intrinsics["%InitialGetStackString%"]);const consoleRecord=tameConsole(consoleTaming,errorTrapping,unhandledRejectionTrapping,optGetStackString);globalThis.console=consoleRecord.console,"unsafe"===errorTaming&&globalThis.assert===assert&&(globalThis.assert=makeAssert(void 0,!0)),tameLocaleMethods(intrinsics,localeTaming);const markVirtualizedNativeFunction=tameFunctionToString();if(whitelistIntrinsics(intrinsics,markVirtualizedNativeFunction),setGlobalObjectConstantProperties(globalThis),setGlobalObjectMutableProperties(globalThis,{intrinsics:intrinsics,newGlobalPropertyNames:initialGlobalPropertyNames,makeCompartmentConstructor:makeCompartmentConstructor,markVirtualizedNativeFunction:markVirtualizedNativeFunction}),"noEval"===evalTaming)setGlobalObjectEvaluators(globalThis,noEvalEvaluate,markVirtualizedNativeFunction);else if("safeEval"===evalTaming){const{safeEvaluate:safeEvaluate}=makeSafeEvaluator({globalObject:globalThis});setGlobalObjectEvaluators(globalThis,safeEvaluate,markVirtualizedNativeFunction)}return function(){return enablePropertyOverrides(intrinsics,overrideTaming,overrideDebug),tamedHarden(intrinsics),globalThis.harden=tamedHarden,!0}};$h‍_once.repairIntrinsics(repairIntrinsics);$h‍_once.lockdown(((options={})=>{repairIntrinsics(options)()}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let globalThis,TypeError,assign,tameFunctionToString,getGlobalIntrinsics,lockdown,makeCompartmentConstructor,assert;if($h‍_imports([["./src/commons.js",[["globalThis",[$h‍_a=>globalThis=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]]]],["./src/tame-function-tostring.js",[["tameFunctionToString",[$h‍_a=>tameFunctionToString=$h‍_a]]]],["./src/intrinsics.js",[["getGlobalIntrinsics",[$h‍_a=>getGlobalIntrinsics=$h‍_a]]]],["./src/lockdown-shim.js",[["lockdown",[$h‍_a=>lockdown=$h‍_a]]]],["./src/compartment-shim.js",[["makeCompartmentConstructor",[$h‍_a=>makeCompartmentConstructor=$h‍_a]]]],["./src/error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]),function(){return this}())throw new TypeError("SES failed to initialize, sloppy mode (SES_NO_SLOPPY)");const markVirtualizedNativeFunction=tameFunctionToString(),Compartment=makeCompartmentConstructor(makeCompartmentConstructor,getGlobalIntrinsics(globalThis),markVirtualizedNativeFunction);assign(globalThis,{lockdown:lockdown,Compartment:Compartment,assert:assert})}],cell=(name,value=undefined)=>{const observers=[];return Object.freeze({get:Object.freeze((()=>value)),set:Object.freeze((newValue=>{value=newValue;for(const observe of observers)observe(value)})),observe:Object.freeze((observe=>{observers.push(observe),observe(value)})),enumerable:!0})},cells=[{globalThis:cell(),Array:cell(),Date:cell(),FinalizationRegistry:cell(),Float32Array:cell(),JSON:cell(),Map:cell(),Math:cell(),Number:cell(),Object:cell(),Promise:cell(),Proxy:cell(),Reflect:cell(),FERAL_REG_EXP:cell(),Set:cell(),String:cell(),WeakMap:cell(),WeakSet:cell(),FERAL_ERROR:cell(),RangeError:cell(),ReferenceError:cell(),SyntaxError:cell(),TypeError:cell(),assign:cell(),create:cell(),defineProperties:cell(),entries:cell(),freeze:cell(),getOwnPropertyDescriptor:cell(),getOwnPropertyDescriptors:cell(),getOwnPropertyNames:cell(),getPrototypeOf:cell(),is:cell(),isFrozen:cell(),isSealed:cell(),isExtensible:cell(),keys:cell(),objectPrototype:cell(),seal:cell(),preventExtensions:cell(),setPrototypeOf:cell(),values:cell(),fromEntries:cell(),speciesSymbol:cell(),toStringTagSymbol:cell(),iteratorSymbol:cell(),matchAllSymbol:cell(),unscopablesSymbol:cell(),symbolKeyFor:cell(),symbolFor:cell(),isInteger:cell(),stringifyJson:cell(),defineProperty:cell(),apply:cell(),construct:cell(),reflectGet:cell(),reflectGetOwnPropertyDescriptor:cell(),reflectHas:cell(),reflectIsExtensible:cell(),ownKeys:cell(),reflectPreventExtensions:cell(),reflectSet:cell(),isArray:cell(),arrayPrototype:cell(),mapPrototype:cell(),proxyRevocable:cell(),regexpPrototype:cell(),setPrototype:cell(),stringPrototype:cell(),weakmapPrototype:cell(),weaksetPrototype:cell(),functionPrototype:cell(),promisePrototype:cell(),typedArrayPrototype:cell(),uncurryThis:cell(),objectHasOwnProperty:cell(),arrayFilter:cell(),arrayForEach:cell(),arrayIncludes:cell(),arrayJoin:cell(),arrayMap:cell(),arrayPop:cell(),arrayPush:cell(),arraySlice:cell(),arraySome:cell(),arraySort:cell(),iterateArray:cell(),mapSet:cell(),mapGet:cell(),mapHas:cell(),mapDelete:cell(),mapEntries:cell(),iterateMap:cell(),setAdd:cell(),setDelete:cell(),setForEach:cell(),setHas:cell(),iterateSet:cell(),regexpTest:cell(),regexpExec:cell(),matchAllRegExp:cell(),stringEndsWith:cell(),stringIncludes:cell(),stringIndexOf:cell(),stringMatch:cell(),stringReplace:cell(),stringSearch:cell(),stringSlice:cell(),stringSplit:cell(),stringStartsWith:cell(),iterateString:cell(),weakmapDelete:cell(),weakmapGet:cell(),weakmapHas:cell(),weakmapSet:cell(),weaksetAdd:cell(),weaksetHas:cell(),functionToString:cell(),promiseAll:cell(),promiseCatch:cell(),promiseThen:cell(),finalizationRegistryRegister:cell(),finalizationRegistryUnregister:cell(),getConstructorOf:cell(),immutableObject:cell(),isObject:cell(),isError:cell(),FERAL_EVAL:cell(),FERAL_FUNCTION:cell(),noEvalEvaluate:cell()},{},{makeLRUCacheMap:cell(),makeNoteLogArgsArrayKit:cell()},{an:cell(),bestEffortStringify:cell(),enJoin:cell()},{},{unredactedDetails:cell(),loggedErrorHandler:cell(),makeAssert:cell(),assert:cell()},{makeEvalScopeKit:cell()},{isValidIdentifierName:cell(),getScopeConstants:cell()},{makeEvaluate:cell()},{alwaysThrowHandler:cell(),strictScopeTerminatorHandler:cell(),strictScopeTerminator:cell()},{createSloppyGlobalsScopeTerminator:cell()},{getSourceURL:cell()},{rejectHtmlComments:cell(),evadeHtmlCommentTest:cell(),rejectImportExpressions:cell(),evadeImportExpressionTest:cell(),rejectSomeDirectEvalExpressions:cell(),mandatoryTransforms:cell(),applyTransforms:cell(),transforms:cell()},{makeSafeEvaluator:cell()},{provideCompartmentEvaluator:cell(),compartmentEvaluate:cell()},{makeEvalFunction:cell()},{makeFunctionConstructor:cell()},{constantProperties:cell(),universalPropertyNames:cell(),initialGlobalPropertyNames:cell(),sharedGlobalPropertyNames:cell(),uniqueGlobalPropertyNames:cell(),NativeErrors:cell(),FunctionInstance:cell(),isAccessorPermit:cell(),whitelist:cell()},{setGlobalObjectSymbolUnscopables:cell(),setGlobalObjectConstantProperties:cell(),setGlobalObjectMutableProperties:cell(),setGlobalObjectEvaluators:cell()},{makeAlias:cell(),load:cell()},{deferExports:cell(),getDeferredExports:cell()},{makeThirdPartyModuleInstance:cell(),makeModuleInstance:cell()},{link:cell(),instantiate:cell()},{InertCompartment:cell(),CompartmentPrototype:cell(),makeCompartmentConstructor:cell()},{makeIntrinsicsCollector:cell(),getGlobalIntrinsics:cell()},{minEnablements:cell(),moderateEnablements:cell(),severeEnablements:cell()},{default:cell()},{makeEnvironmentCaptor:cell()},{makeLoggingConsoleKit:cell(),makeCausalConsole:cell(),filterConsole:cell(),consoleWhitelist:cell()},{makeRejectionHandlers:cell()},{tameConsole:cell()},{filterFileName:cell(),shortenCallSiteString:cell(),tameV8ErrorConstructor:cell()},{default:cell()},{getAnonymousIntrinsics:cell()},{isTypedArray:cell(),makeHardener:cell()},{default:cell()},{tameDomains:cell()},{default:cell()},{tameFunctionToString:cell()},{tameHarden:cell()},{default:cell()},{default:cell()},{default:cell()},{default:cell()},{repairIntrinsics:cell(),lockdown:cell()},{}],namespaces=cells.map((cells=>Object.freeze(Object.create(null,cells))));for(let index=0;index{const functors=[({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);const universalThis=globalThis;$h‍_once.universalThis(universalThis);const{Array:Array,Date:Date,FinalizationRegistry:FinalizationRegistry,Float32Array:Float32Array,JSON:JSON,Map:Map,Math:Math,Number:Number,Object:Object,Promise:Promise,Proxy:Proxy,Reflect:Reflect,RegExp:FERAL_REG_EXP,Set:Set,String:String,Symbol:Symbol,WeakMap:WeakMap,WeakSet:WeakSet}=globalThis;$h‍_once.Array(Array),$h‍_once.Date(Date),$h‍_once.FinalizationRegistry(FinalizationRegistry),$h‍_once.Float32Array(Float32Array),$h‍_once.JSON(JSON),$h‍_once.Map(Map),$h‍_once.Math(Math),$h‍_once.Number(Number),$h‍_once.Object(Object),$h‍_once.Promise(Promise),$h‍_once.Proxy(Proxy),$h‍_once.Reflect(Reflect),$h‍_once.FERAL_REG_EXP(FERAL_REG_EXP),$h‍_once.Set(Set),$h‍_once.String(String),$h‍_once.Symbol(Symbol),$h‍_once.WeakMap(WeakMap),$h‍_once.WeakSet(WeakSet);const{Error:FERAL_ERROR,RangeError:RangeError,ReferenceError:ReferenceError,SyntaxError:SyntaxError,TypeError:TypeError}=globalThis;$h‍_once.FERAL_ERROR(FERAL_ERROR),$h‍_once.RangeError(RangeError),$h‍_once.ReferenceError(ReferenceError),$h‍_once.SyntaxError(SyntaxError),$h‍_once.TypeError(TypeError);const{assign:assign,create:create,defineProperties:defineProperties,entries:entries,freeze:freeze,getOwnPropertyDescriptor:getOwnPropertyDescriptor,getOwnPropertyDescriptors:getOwnPropertyDescriptors,getOwnPropertyNames:getOwnPropertyNames,getPrototypeOf:getPrototypeOf,is:is,isFrozen:isFrozen,isSealed:isSealed,isExtensible:isExtensible,keys:keys,prototype:objectPrototype,seal:seal,preventExtensions:preventExtensions,setPrototypeOf:setPrototypeOf,values:values,fromEntries:fromEntries}=Object;$h‍_once.assign(assign),$h‍_once.create(create),$h‍_once.defineProperties(defineProperties),$h‍_once.entries(entries),$h‍_once.freeze(freeze),$h‍_once.getOwnPropertyDescriptor(getOwnPropertyDescriptor),$h‍_once.getOwnPropertyDescriptors(getOwnPropertyDescriptors),$h‍_once.getOwnPropertyNames(getOwnPropertyNames),$h‍_once.getPrototypeOf(getPrototypeOf),$h‍_once.is(is),$h‍_once.isFrozen(isFrozen),$h‍_once.isSealed(isSealed),$h‍_once.isExtensible(isExtensible),$h‍_once.keys(keys),$h‍_once.objectPrototype(objectPrototype),$h‍_once.seal(seal),$h‍_once.preventExtensions(preventExtensions),$h‍_once.setPrototypeOf(setPrototypeOf),$h‍_once.values(values),$h‍_once.fromEntries(fromEntries);const{species:speciesSymbol,toStringTag:toStringTagSymbol,iterator:iteratorSymbol,matchAll:matchAllSymbol,unscopables:unscopablesSymbol,keyFor:symbolKeyFor,for:symbolFor}=Symbol;$h‍_once.speciesSymbol(speciesSymbol),$h‍_once.toStringTagSymbol(toStringTagSymbol),$h‍_once.iteratorSymbol(iteratorSymbol),$h‍_once.matchAllSymbol(matchAllSymbol),$h‍_once.unscopablesSymbol(unscopablesSymbol),$h‍_once.symbolKeyFor(symbolKeyFor),$h‍_once.symbolFor(symbolFor);const{isInteger:isInteger}=Number;$h‍_once.isInteger(isInteger);const{stringify:stringifyJson}=JSON;$h‍_once.stringifyJson(stringifyJson);const{defineProperty:originalDefineProperty}=Object;$h‍_once.defineProperty(((object,prop,descriptor)=>{const result=originalDefineProperty(object,prop,descriptor);if(result!==object)throw TypeError(`Please report that the original defineProperty silently failed to set ${stringifyJson(String(prop))}. (SES_DEFINE_PROPERTY_FAILED_SILENTLY)`);return result}));const{apply:apply,construct:construct,get:reflectGet,getOwnPropertyDescriptor:reflectGetOwnPropertyDescriptor,has:reflectHas,isExtensible:reflectIsExtensible,ownKeys:ownKeys,preventExtensions:reflectPreventExtensions,set:reflectSet}=Reflect;$h‍_once.apply(apply),$h‍_once.construct(construct),$h‍_once.reflectGet(reflectGet),$h‍_once.reflectGetOwnPropertyDescriptor(reflectGetOwnPropertyDescriptor),$h‍_once.reflectHas(reflectHas),$h‍_once.reflectIsExtensible(reflectIsExtensible),$h‍_once.ownKeys(ownKeys),$h‍_once.reflectPreventExtensions(reflectPreventExtensions),$h‍_once.reflectSet(reflectSet);const{isArray:isArray,prototype:arrayPrototype}=Array;$h‍_once.isArray(isArray),$h‍_once.arrayPrototype(arrayPrototype);const{prototype:mapPrototype}=Map;$h‍_once.mapPrototype(mapPrototype);const{revocable:proxyRevocable}=Proxy;$h‍_once.proxyRevocable(proxyRevocable);const{prototype:regexpPrototype}=RegExp;$h‍_once.regexpPrototype(regexpPrototype);const{prototype:setPrototype}=Set;$h‍_once.setPrototype(setPrototype);const{prototype:stringPrototype}=String;$h‍_once.stringPrototype(stringPrototype);const{prototype:weakmapPrototype}=WeakMap;$h‍_once.weakmapPrototype(weakmapPrototype);const{prototype:weaksetPrototype}=WeakSet;$h‍_once.weaksetPrototype(weaksetPrototype);const{prototype:functionPrototype}=Function;$h‍_once.functionPrototype(functionPrototype);const{prototype:promisePrototype}=Promise;$h‍_once.promisePrototype(promisePrototype);const typedArrayPrototype=getPrototypeOf(Uint8Array.prototype);$h‍_once.typedArrayPrototype(typedArrayPrototype);const{bind:bind}=functionPrototype,uncurryThis=bind.bind(bind.call);$h‍_once.uncurryThis(uncurryThis);const objectHasOwnProperty=uncurryThis(objectPrototype.hasOwnProperty);$h‍_once.objectHasOwnProperty(objectHasOwnProperty);const arrayFilter=uncurryThis(arrayPrototype.filter);$h‍_once.arrayFilter(arrayFilter);const arrayForEach=uncurryThis(arrayPrototype.forEach);$h‍_once.arrayForEach(arrayForEach);const arrayIncludes=uncurryThis(arrayPrototype.includes);$h‍_once.arrayIncludes(arrayIncludes);const arrayJoin=uncurryThis(arrayPrototype.join);$h‍_once.arrayJoin(arrayJoin);const arrayMap=uncurryThis(arrayPrototype.map);$h‍_once.arrayMap(arrayMap);const arrayPop=uncurryThis(arrayPrototype.pop);$h‍_once.arrayPop(arrayPop);const arrayPush=uncurryThis(arrayPrototype.push);$h‍_once.arrayPush(arrayPush);const arraySlice=uncurryThis(arrayPrototype.slice);$h‍_once.arraySlice(arraySlice);const arraySome=uncurryThis(arrayPrototype.some);$h‍_once.arraySome(arraySome);const arraySort=uncurryThis(arrayPrototype.sort);$h‍_once.arraySort(arraySort);const iterateArray=uncurryThis(arrayPrototype[iteratorSymbol]);$h‍_once.iterateArray(iterateArray);const mapSet=uncurryThis(mapPrototype.set);$h‍_once.mapSet(mapSet);const mapGet=uncurryThis(mapPrototype.get);$h‍_once.mapGet(mapGet);const mapHas=uncurryThis(mapPrototype.has);$h‍_once.mapHas(mapHas);const mapDelete=uncurryThis(mapPrototype.delete);$h‍_once.mapDelete(mapDelete);const mapEntries=uncurryThis(mapPrototype.entries);$h‍_once.mapEntries(mapEntries);const iterateMap=uncurryThis(mapPrototype[iteratorSymbol]);$h‍_once.iterateMap(iterateMap);const setAdd=uncurryThis(setPrototype.add);$h‍_once.setAdd(setAdd);const setDelete=uncurryThis(setPrototype.delete);$h‍_once.setDelete(setDelete);const setForEach=uncurryThis(setPrototype.forEach);$h‍_once.setForEach(setForEach);const setHas=uncurryThis(setPrototype.has);$h‍_once.setHas(setHas);const iterateSet=uncurryThis(setPrototype[iteratorSymbol]);$h‍_once.iterateSet(iterateSet);const regexpTest=uncurryThis(regexpPrototype.test);$h‍_once.regexpTest(regexpTest);const regexpExec=uncurryThis(regexpPrototype.exec);$h‍_once.regexpExec(regexpExec);const matchAllRegExp=uncurryThis(regexpPrototype[matchAllSymbol]);$h‍_once.matchAllRegExp(matchAllRegExp);const stringEndsWith=uncurryThis(stringPrototype.endsWith);$h‍_once.stringEndsWith(stringEndsWith);const stringIncludes=uncurryThis(stringPrototype.includes);$h‍_once.stringIncludes(stringIncludes);const stringIndexOf=uncurryThis(stringPrototype.indexOf);$h‍_once.stringIndexOf(stringIndexOf);const stringMatch=uncurryThis(stringPrototype.match);$h‍_once.stringMatch(stringMatch);const stringReplace=uncurryThis(stringPrototype.replace);$h‍_once.stringReplace(stringReplace);const stringSearch=uncurryThis(stringPrototype.search);$h‍_once.stringSearch(stringSearch);const stringSlice=uncurryThis(stringPrototype.slice);$h‍_once.stringSlice(stringSlice);const stringSplit=uncurryThis(stringPrototype.split);$h‍_once.stringSplit(stringSplit);const stringStartsWith=uncurryThis(stringPrototype.startsWith);$h‍_once.stringStartsWith(stringStartsWith);const iterateString=uncurryThis(stringPrototype[iteratorSymbol]);$h‍_once.iterateString(iterateString);const weakmapDelete=uncurryThis(weakmapPrototype.delete);$h‍_once.weakmapDelete(weakmapDelete);const weakmapGet=uncurryThis(weakmapPrototype.get);$h‍_once.weakmapGet(weakmapGet);const weakmapHas=uncurryThis(weakmapPrototype.has);$h‍_once.weakmapHas(weakmapHas);const weakmapSet=uncurryThis(weakmapPrototype.set);$h‍_once.weakmapSet(weakmapSet);const weaksetAdd=uncurryThis(weaksetPrototype.add);$h‍_once.weaksetAdd(weaksetAdd);const weaksetHas=uncurryThis(weaksetPrototype.has);$h‍_once.weaksetHas(weaksetHas);const functionToString=uncurryThis(functionPrototype.toString);$h‍_once.functionToString(functionToString);const{all:all}=Promise;$h‍_once.promiseAll((promises=>apply(all,Promise,[promises])));const promiseCatch=uncurryThis(promisePrototype.catch);$h‍_once.promiseCatch(promiseCatch);const promiseThen=uncurryThis(promisePrototype.then);$h‍_once.promiseThen(promiseThen);const finalizationRegistryRegister=FinalizationRegistry&&uncurryThis(FinalizationRegistry.prototype.register);$h‍_once.finalizationRegistryRegister(finalizationRegistryRegister);const finalizationRegistryUnregister=FinalizationRegistry&&uncurryThis(FinalizationRegistry.prototype.unregister);$h‍_once.finalizationRegistryUnregister(finalizationRegistryUnregister);$h‍_once.getConstructorOf((fn=>reflectGet(getPrototypeOf(fn),"constructor")));const immutableObject=freeze(create(null));$h‍_once.immutableObject(immutableObject);$h‍_once.isObject((value=>Object(value)===value));$h‍_once.isError((value=>value instanceof FERAL_ERROR));const FERAL_EVAL=eval;$h‍_once.FERAL_EVAL(FERAL_EVAL);const FERAL_FUNCTION=Function;$h‍_once.FERAL_FUNCTION(FERAL_FUNCTION);$h‍_once.noEvalEvaluate((()=>{throw new TypeError('Cannot eval with evalTaming set to "noEval" (SES_NO_EVAL)')}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([])},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([["./internal-types.js",[]]]);const{freeze:freeze}=Object,{isSafeInteger:isSafeInteger}=Number,makeSelfCell=data=>{const selfCell={next:void 0,prev:void 0,data:data};return selfCell.next=selfCell,selfCell.prev=selfCell,selfCell},spliceAfter=(prev,selfCell)=>{if(prev===selfCell)throw TypeError("Cannot splice a cell into itself");if(selfCell.next!==selfCell||selfCell.prev!==selfCell)throw TypeError("Expected self-linked cell");const cell=selfCell,next=prev.next;return cell.prev=prev,cell.next=next,prev.next=cell,next.prev=cell,cell},spliceOut=cell=>{const{prev:prev,next:next}=cell;prev.next=next,next.prev=prev,cell.prev=cell,cell.next=cell},makeLRUCacheMap=keysBudget=>{if(!isSafeInteger(keysBudget)||keysBudget<0)throw new TypeError("keysBudget must be a safe non-negative integer number");const keyToCell=new WeakMap;let size=0;const head=makeSelfCell(void 0),touchCell=key=>{const cell=keyToCell.get(key);if(void 0!==cell&&void 0!==cell.data)return spliceOut(cell),spliceAfter(head,cell),cell},has=key=>void 0!==touchCell(key);freeze(has);const get=key=>{const cell=touchCell(key);return cell&&cell.data&&cell.data.get(key)};freeze(get);const set=(key,value)=>{if(keysBudget<1)return lruCacheMap;let cell=touchCell(key);if(void 0===cell&&(cell=makeSelfCell(void 0),spliceAfter(head,cell)),!cell.data)for(size+=1,cell.data=new WeakMap,keyToCell.set(key,cell);size>keysBudget;){const condemned=head.prev;spliceOut(condemned),condemned.data=void 0,size-=1}return cell.data.set(key,value),lruCacheMap};freeze(set);const deleteIt=key=>{const cell=keyToCell.get(key);return void 0!==cell&&(spliceOut(cell),keyToCell.delete(key),void 0!==cell.data&&(cell.data=void 0,size-=1,!0))};freeze(deleteIt);const lruCacheMap=freeze({has:has,get:get,set:set,delete:deleteIt,[Symbol.toStringTag]:"LRUCacheMap"});return lruCacheMap};$h‍_once.makeLRUCacheMap(makeLRUCacheMap),freeze(makeLRUCacheMap);const makeNoteLogArgsArrayKit=(errorsBudget=1e3,argsPerErrorBudget=100)=>{if(!isSafeInteger(argsPerErrorBudget)||argsPerErrorBudget<1)throw new TypeError("argsPerErrorBudget must be a safe positive integer number");const noteLogArgsArrayMap=makeLRUCacheMap(errorsBudget),addLogArgs=(error,logArgs)=>{const logArgsArray=noteLogArgsArrayMap.get(error);void 0!==logArgsArray?(logArgsArray.length>=argsPerErrorBudget&&logArgsArray.shift(),logArgsArray.push(logArgs)):noteLogArgsArrayMap.set(error,[logArgs])};freeze(addLogArgs);const takeLogArgsArray=error=>{const result=noteLogArgsArrayMap.get(error);return noteLogArgsArrayMap.delete(error),result};return freeze(takeLogArgsArray),freeze({addLogArgs:addLogArgs,takeLogArgsArray:takeLogArgsArray})};$h‍_once.makeNoteLogArgsArrayKit(makeNoteLogArgsArrayKit),freeze(makeNoteLogArgsArrayKit)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Set,String,arrayJoin,arraySlice,freeze,is,isError,setAdd,setHas,stringIncludes,stringStartsWith,stringifyJson,toStringTagSymbol;$h‍_imports([["../commons.js",[["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arraySlice",[$h‍_a=>arraySlice=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["isError",[$h‍_a=>isError=$h‍_a]],["setAdd",[$h‍_a=>setAdd=$h‍_a]],["setHas",[$h‍_a=>setHas=$h‍_a]],["stringIncludes",[$h‍_a=>stringIncludes=$h‍_a]],["stringStartsWith",[$h‍_a=>stringStartsWith=$h‍_a]],["stringifyJson",[$h‍_a=>stringifyJson=$h‍_a]],["toStringTagSymbol",[$h‍_a=>toStringTagSymbol=$h‍_a]]]]]);$h‍_once.enJoin(((terms,conjunction)=>{if(0===terms.length)return"(none)";if(1===terms.length)return terms[0];if(2===terms.length){const[first,second]=terms;return`${first} ${conjunction} ${second}`}return`${arrayJoin(arraySlice(terms,0,-1),", ")}, ${conjunction} ${terms[terms.length-1]}`}));const an=str=>(str=`${str}`).length>=1&&stringIncludes("aeiouAEIOU",str[0])?`an ${str}`:`a ${str}`;$h‍_once.an(an),freeze(an);const bestEffortStringify=(payload,spaces=undefined)=>{const seenSet=new Set,replacer=(_,val)=>{switch(typeof val){case"object":return null===val?null:setHas(seenSet,val)?"[Seen]":(setAdd(seenSet,val),isError(val)?`[${val.name}: ${val.message}]`:toStringTagSymbol in val?`[${val[toStringTagSymbol]}]`:val);case"function":return`[Function ${val.name||""}]`;case"string":return stringStartsWith(val,"[")?`[${val}]`:val;case"undefined":case"symbol":return`[${String(val)}]`;case"bigint":return`[${val}n]`;case"number":return is(val,NaN)?"[NaN]":val===1/0?"[Infinity]":val===-1/0?"[-Infinity]":val;default:return val}};try{return stringifyJson(payload,replacer,spaces)}catch(_err){return"[Something that failed to stringify]"}};$h‍_once.bestEffortStringify(bestEffortStringify),freeze(bestEffortStringify)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([])},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let RangeError,TypeError,WeakMap,arrayJoin,arrayMap,arrayPop,arrayPush,assign,freeze,globalThis,is,isError,stringIndexOf,stringReplace,stringSlice,stringStartsWith,weakmapDelete,weakmapGet,weakmapHas,weakmapSet,an,bestEffortStringify,makeNoteLogArgsArrayKit;$h‍_imports([["../commons.js",[["RangeError",[$h‍_a=>RangeError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arrayPop",[$h‍_a=>arrayPop=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["isError",[$h‍_a=>isError=$h‍_a]],["stringIndexOf",[$h‍_a=>stringIndexOf=$h‍_a]],["stringReplace",[$h‍_a=>stringReplace=$h‍_a]],["stringSlice",[$h‍_a=>stringSlice=$h‍_a]],["stringStartsWith",[$h‍_a=>stringStartsWith=$h‍_a]],["weakmapDelete",[$h‍_a=>weakmapDelete=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapHas",[$h‍_a=>weakmapHas=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]]]],["./stringify-utils.js",[["an",[$h‍_a=>an=$h‍_a]],["bestEffortStringify",[$h‍_a=>bestEffortStringify=$h‍_a]]]],["./types.js",[]],["./internal-types.js",[]],["./note-log-args.js",[["makeNoteLogArgsArrayKit",[$h‍_a=>makeNoteLogArgsArrayKit=$h‍_a]]]]]);const declassifiers=new WeakMap,quote=(payload,spaces=undefined)=>{const result=freeze({toString:freeze((()=>bestEffortStringify(payload,spaces)))});return weakmapSet(declassifiers,result,payload),result};freeze(quote);const hiddenDetailsMap=new WeakMap,getMessageString=({template:template,args:args})=>{const parts=[template[0]];for(let i=0;i{const detailsToken=freeze({__proto__:DetailsTokenProto});return weakmapSet(hiddenDetailsMap,detailsToken,{template:template,args:args}),detailsToken};freeze(redactedDetails);const unredactedDetails=(template,...args)=>(args=arrayMap(args,(arg=>weakmapHas(declassifiers,arg)?arg:quote(arg))),redactedDetails(template,...args));$h‍_once.unredactedDetails(unredactedDetails),freeze(unredactedDetails);const getLogArgs=({template:template,args:args})=>{const logArgs=[template[0]];for(let i=0;i{let errorTag=weakmapGet(errorTags,err);return void 0!==errorTag||(errorTagNum+=1,errorTag=`${optErrorName}#${errorTagNum}`,weakmapSet(errorTags,err,errorTag)),errorTag},makeError=(optDetails=redactedDetails`Assert failed`,ErrorConstructor=globalThis.Error,{errorName:errorName}={})=>{"string"==typeof optDetails&&(optDetails=redactedDetails([optDetails]));const hiddenDetails=weakmapGet(hiddenDetailsMap,optDetails);if(void 0===hiddenDetails)throw new TypeError(`unrecognized details ${quote(optDetails)}`);const error=new ErrorConstructor(getMessageString(hiddenDetails));return weakmapSet(hiddenMessageLogArgs,error,getLogArgs(hiddenDetails)),void 0!==errorName&&tagError(error,errorName),error};freeze(makeError);const{addLogArgs:addLogArgs,takeLogArgsArray:takeLogArgsArray}=makeNoteLogArgsArrayKit(),hiddenNoteCallbackArrays=new WeakMap,note=(error,detailsNote)=>{"string"==typeof detailsNote&&(detailsNote=redactedDetails([detailsNote]));const hiddenDetails=weakmapGet(hiddenDetailsMap,detailsNote);if(void 0===hiddenDetails)throw new TypeError(`unrecognized details ${quote(detailsNote)}`);const logArgs=getLogArgs(hiddenDetails),callbacks=weakmapGet(hiddenNoteCallbackArrays,error);if(void 0!==callbacks)for(const callback of callbacks)callback(error,logArgs);else addLogArgs(error,logArgs)};freeze(note);const loggedErrorHandler={getStackString:globalThis.getStackString||(error=>{if(!("stack"in error))return"";const stackString=`${error.stack}`,pos=stringIndexOf(stackString,"\n");return stringStartsWith(stackString," ")||-1===pos?stackString:stringSlice(stackString,pos+1)}),tagError:error=>tagError(error),resetErrorTagNum:()=>{errorTagNum=0},getMessageLogArgs:error=>weakmapGet(hiddenMessageLogArgs,error),takeMessageLogArgs:error=>{const result=weakmapGet(hiddenMessageLogArgs,error);return weakmapDelete(hiddenMessageLogArgs,error),result},takeNoteLogArgsArray:(error,callback)=>{const result=takeLogArgsArray(error);if(void 0!==callback){const callbacks=weakmapGet(hiddenNoteCallbackArrays,error);callbacks?arrayPush(callbacks,callback):weakmapSet(hiddenNoteCallbackArrays,error,[callback])}return result||[]}};$h‍_once.loggedErrorHandler(loggedErrorHandler),freeze(loggedErrorHandler);const makeAssert=(optRaise=undefined,unredacted=!1)=>{const details=unredacted?unredactedDetails:redactedDetails,assertFailedDetails=details`Check failed`,fail=(optDetails=assertFailedDetails,ErrorConstructor=globalThis.Error)=>{const reason=makeError(optDetails,ErrorConstructor);throw void 0!==optRaise&&optRaise(reason),reason};freeze(fail);const Fail=(template,...args)=>fail(details(template,...args));const equal=(actual,expected,optDetails=undefined,ErrorConstructor=undefined)=>{is(actual,expected)||fail(optDetails||details`Expected ${actual} is same as ${expected}`,ErrorConstructor||RangeError)};freeze(equal);const assertTypeof=(specimen,typename,optDetails)=>{typeof specimen!==typename&&("string"==typeof typename||Fail`${quote(typename)} must be a string`,void 0===optDetails&&(optDetails=details(["",` must be ${an(typename)}`],specimen)),fail(optDetails,TypeError))};freeze(assertTypeof);const assert=assign((function(flag,optDetails=undefined,ErrorConstructor=undefined){flag||fail(optDetails,ErrorConstructor)}),{error:makeError,fail:fail,equal:equal,typeof:assertTypeof,string:(specimen,optDetails=undefined)=>assertTypeof(specimen,"string",optDetails),note:note,details:details,Fail:Fail,quote:quote,makeAssert:makeAssert});return freeze(assert)};$h‍_once.makeAssert(makeAssert),freeze(makeAssert);const assert=makeAssert();$h‍_once.assert(assert)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_EVAL,create,defineProperties,freeze,assert;$h‍_imports([["./commons.js",[["FERAL_EVAL",[$h‍_a=>FERAL_EVAL=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail}=assert;$h‍_once.makeEvalScopeKit((()=>{const evalScope=create(null),oneTimeEvalProperties=freeze({eval:{get:()=>(delete evalScope.eval,FERAL_EVAL),enumerable:!1,configurable:!0}}),evalScopeKit={evalScope:evalScope,allowNextEvalToBeUnsafe(){const{revoked:revoked}=evalScopeKit;null!==revoked&&Fail`a handler did not reset allowNextEvalToBeUnsafe ${revoked.err}`,defineProperties(evalScope,oneTimeEvalProperties)},revoked:null};return evalScopeKit}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let arrayFilter,arrayIncludes,getOwnPropertyDescriptor,getOwnPropertyNames,objectHasOwnProperty,regexpTest;$h‍_imports([["./commons.js",[["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayIncludes",[$h‍_a=>arrayIncludes=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyNames",[$h‍_a=>getOwnPropertyNames=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["regexpTest",[$h‍_a=>regexpTest=$h‍_a]]]]]);const keywords=["await","break","case","catch","class","const","continue","debugger","default","delete","do","else","export","extends","finally","for","function","if","import","in","instanceof","new","return","super","switch","this","throw","try","typeof","var","void","while","with","yield","let","static","enum","implements","package","protected","interface","private","public","await","null","true","false","this","arguments"],identifierPattern=/^[a-zA-Z_$][\w$]*$/,isValidIdentifierName=name=>"eval"!==name&&!arrayIncludes(keywords,name)&®expTest(identifierPattern,name);function isImmutableDataProperty(obj,name){const desc=getOwnPropertyDescriptor(obj,name);return desc&&!1===desc.configurable&&!1===desc.writable&&objectHasOwnProperty(desc,"value")}$h‍_once.isValidIdentifierName(isValidIdentifierName);$h‍_once.getScopeConstants(((globalObject,moduleLexicals={})=>{const globalObjectNames=getOwnPropertyNames(globalObject),moduleLexicalNames=getOwnPropertyNames(moduleLexicals),moduleLexicalConstants=arrayFilter(moduleLexicalNames,(name=>isValidIdentifierName(name)&&isImmutableDataProperty(moduleLexicals,name)));return{globalObjectConstants:arrayFilter(globalObjectNames,(name=>!arrayIncludes(moduleLexicalNames,name)&&isValidIdentifierName(name)&&isImmutableDataProperty(globalObject,name))),moduleLexicalConstants:moduleLexicalConstants}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,arrayJoin,apply,getScopeConstants;function buildOptimizer(constants,name){return 0===constants.length?"":`const {${arrayJoin(constants,",")}} = this.${name};`}$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]]]],["./scope-constants.js",[["getScopeConstants",[$h‍_a=>getScopeConstants=$h‍_a]]]]]);$h‍_once.makeEvaluate((context=>{const{globalObjectConstants:globalObjectConstants,moduleLexicalConstants:moduleLexicalConstants}=getScopeConstants(context.globalObject,context.moduleLexicals),globalObjectOptimizer=buildOptimizer(globalObjectConstants,"globalObject"),moduleLexicalOptimizer=buildOptimizer(moduleLexicalConstants,"moduleLexicals"),evaluateFactory=FERAL_FUNCTION(`\n with (this.scopeTerminator) {\n with (this.globalObject) {\n with (this.moduleLexicals) {\n with (this.evalScope) {\n ${globalObjectOptimizer}\n ${moduleLexicalOptimizer}\n return function() {\n 'use strict';\n return eval(arguments[0]);\n };\n }\n }\n }\n }\n `);return apply(evaluateFactory,context,[])}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Proxy,String,TypeError,ReferenceError,create,freeze,getOwnPropertyDescriptors,globalThis,immutableObject,assert;$h‍_imports([["./commons.js",[["Proxy",[$h‍_a=>Proxy=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["immutableObject",[$h‍_a=>immutableObject=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,alwaysThrowHandler=new Proxy(immutableObject,freeze({get(_shadow,prop){Fail`Please report unexpected scope handler trap: ${q(String(prop))}`}}));$h‍_once.alwaysThrowHandler(alwaysThrowHandler);const strictScopeTerminatorHandler=freeze(create(alwaysThrowHandler,getOwnPropertyDescriptors({get(_shadow,_prop){},set(_shadow,prop,_value){throw new ReferenceError(`${String(prop)} is not defined`)},has:(_shadow,prop)=>prop in globalThis,getPrototypeOf:()=>null,getOwnPropertyDescriptor(_target,prop){const quotedProp=q(String(prop));console.warn(`getOwnPropertyDescriptor trap on scopeTerminatorHandler for ${quotedProp}`,(new TypeError).stack)}})));$h‍_once.strictScopeTerminatorHandler(strictScopeTerminatorHandler);const strictScopeTerminator=new Proxy(immutableObject,strictScopeTerminatorHandler);$h‍_once.strictScopeTerminator(strictScopeTerminator)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Proxy,create,freeze,getOwnPropertyDescriptors,immutableObject,reflectSet,strictScopeTerminatorHandler,alwaysThrowHandler;$h‍_imports([["./commons.js",[["Proxy",[$h‍_a=>Proxy=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["immutableObject",[$h‍_a=>immutableObject=$h‍_a]],["reflectSet",[$h‍_a=>reflectSet=$h‍_a]]]],["./strict-scope-terminator.js",[["strictScopeTerminatorHandler",[$h‍_a=>strictScopeTerminatorHandler=$h‍_a]],["alwaysThrowHandler",[$h‍_a=>alwaysThrowHandler=$h‍_a]]]]]);const createSloppyGlobalsScopeTerminator=globalObject=>{const scopeProxyHandlerProperties={...strictScopeTerminatorHandler,set:(_shadow,prop,value)=>reflectSet(globalObject,prop,value),has:(_shadow,_prop)=>!0},sloppyGlobalsScopeTerminatorHandler=freeze(create(alwaysThrowHandler,getOwnPropertyDescriptors(scopeProxyHandlerProperties)));return new Proxy(immutableObject,sloppyGlobalsScopeTerminatorHandler)};$h‍_once.createSloppyGlobalsScopeTerminator(createSloppyGlobalsScopeTerminator),freeze(createSloppyGlobalsScopeTerminator)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_REG_EXP,regexpExec,stringSlice;$h‍_imports([["./commons.js",[["FERAL_REG_EXP",[$h‍_a=>FERAL_REG_EXP=$h‍_a]],["regexpExec",[$h‍_a=>regexpExec=$h‍_a]],["stringSlice",[$h‍_a=>stringSlice=$h‍_a]]]]]);const sourceMetaEntriesRegExp=new FERAL_REG_EXP("(?:\\s*//\\s*[@#]\\s*([a-zA-Z][a-zA-Z0-9]*)\\s*=\\s*([^\\s\\*]*)|/\\*\\s*[@#]\\s*([a-zA-Z][a-zA-Z0-9]*)\\s*=\\s*([^\\s\\*]*)\\s*\\*/)\\s*$");$h‍_once.getSourceURL((src=>{let sourceURL="";for(;src.length>0;){const match=regexpExec(sourceMetaEntriesRegExp,src);if(null===match)break;src=stringSlice(src,0,src.length-match[0].length),"sourceURL"===match[3]?sourceURL=match[4]:"sourceURL"===match[1]&&(sourceURL=match[2])}return sourceURL}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_REG_EXP,SyntaxError,stringReplace,stringSearch,stringSlice,stringSplit,freeze,getSourceURL;function getLineNumber(src,pattern){const index=stringSearch(src,pattern);if(index<0)return-1;const adjustment="\n"===src[index]?1:0;return stringSplit(stringSlice(src,0,index),"\n").length+adjustment}$h‍_imports([["./commons.js",[["FERAL_REG_EXP",[$h‍_a=>FERAL_REG_EXP=$h‍_a]],["SyntaxError",[$h‍_a=>SyntaxError=$h‍_a]],["stringReplace",[$h‍_a=>stringReplace=$h‍_a]],["stringSearch",[$h‍_a=>stringSearch=$h‍_a]],["stringSlice",[$h‍_a=>stringSlice=$h‍_a]],["stringSplit",[$h‍_a=>stringSplit=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./get-source-url.js",[["getSourceURL",[$h‍_a=>getSourceURL=$h‍_a]]]]]);const htmlCommentPattern=new FERAL_REG_EXP("(?:\x3c!--|--\x3e)","g"),rejectHtmlComments=src=>{const lineNumber=getLineNumber(src,htmlCommentPattern);if(lineNumber<0)return src;const name=getSourceURL(src);throw new SyntaxError(`Possible HTML comment rejected at ${name}:${lineNumber}. (SES_HTML_COMMENT_REJECTED)`)};$h‍_once.rejectHtmlComments(rejectHtmlComments);const evadeHtmlCommentTest=src=>stringReplace(src,htmlCommentPattern,(match=>"<"===match[0]?"< ! --":"-- >"));$h‍_once.evadeHtmlCommentTest(evadeHtmlCommentTest);const importPattern=new FERAL_REG_EXP("(^|[^.])\\bimport(\\s*(?:\\(|/[/*]))","g"),rejectImportExpressions=src=>{const lineNumber=getLineNumber(src,importPattern);if(lineNumber<0)return src;const name=getSourceURL(src);throw new SyntaxError(`Possible import expression rejected at ${name}:${lineNumber}. (SES_IMPORT_REJECTED)`)};$h‍_once.rejectImportExpressions(rejectImportExpressions);const evadeImportExpressionTest=src=>stringReplace(src,importPattern,((_,p1,p2)=>`${p1}__import__${p2}`));$h‍_once.evadeImportExpressionTest(evadeImportExpressionTest);const someDirectEvalPattern=new FERAL_REG_EXP("(^|[^.])\\beval(\\s*\\()","g"),rejectSomeDirectEvalExpressions=src=>{const lineNumber=getLineNumber(src,someDirectEvalPattern);if(lineNumber<0)return src;const name=getSourceURL(src);throw new SyntaxError(`Possible direct eval expression rejected at ${name}:${lineNumber}. (SES_EVAL_REJECTED)`)};$h‍_once.rejectSomeDirectEvalExpressions(rejectSomeDirectEvalExpressions);const mandatoryTransforms=source=>(source=rejectHtmlComments(source),source=rejectImportExpressions(source));$h‍_once.mandatoryTransforms(mandatoryTransforms);const applyTransforms=(source,transforms)=>{for(const transform of transforms)source=transform(source);return source};$h‍_once.applyTransforms(applyTransforms);const transforms=freeze({rejectHtmlComments:freeze(rejectHtmlComments),evadeHtmlCommentTest:freeze(evadeHtmlCommentTest),rejectImportExpressions:freeze(rejectImportExpressions),evadeImportExpressionTest:freeze(evadeImportExpressionTest),rejectSomeDirectEvalExpressions:freeze(rejectSomeDirectEvalExpressions),mandatoryTransforms:freeze(mandatoryTransforms),applyTransforms:freeze(applyTransforms)});$h‍_once.transforms(transforms)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let apply,freeze,strictScopeTerminator,createSloppyGlobalsScopeTerminator,makeEvalScopeKit,applyTransforms,mandatoryTransforms,makeEvaluate,assert;$h‍_imports([["./commons.js",[["apply",[$h‍_a=>apply=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./strict-scope-terminator.js",[["strictScopeTerminator",[$h‍_a=>strictScopeTerminator=$h‍_a]]]],["./sloppy-globals-scope-terminator.js",[["createSloppyGlobalsScopeTerminator",[$h‍_a=>createSloppyGlobalsScopeTerminator=$h‍_a]]]],["./eval-scope.js",[["makeEvalScopeKit",[$h‍_a=>makeEvalScopeKit=$h‍_a]]]],["./transforms.js",[["applyTransforms",[$h‍_a=>applyTransforms=$h‍_a]],["mandatoryTransforms",[$h‍_a=>mandatoryTransforms=$h‍_a]]]],["./make-evaluate.js",[["makeEvaluate",[$h‍_a=>makeEvaluate=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail}=assert;$h‍_once.makeSafeEvaluator((({globalObject:globalObject,moduleLexicals:moduleLexicals={},globalTransforms:globalTransforms=[],sloppyGlobalsMode:sloppyGlobalsMode=!1})=>{const scopeTerminator=sloppyGlobalsMode?createSloppyGlobalsScopeTerminator(globalObject):strictScopeTerminator,evalScopeKit=makeEvalScopeKit(),{evalScope:evalScope}=evalScopeKit,evaluateContext=freeze({evalScope:evalScope,moduleLexicals:moduleLexicals,globalObject:globalObject,scopeTerminator:scopeTerminator});let evaluate;return{safeEvaluate:(source,options)=>{const{localTransforms:localTransforms=[]}=options||{};let err;evaluate||(evaluate=makeEvaluate(evaluateContext)),source=applyTransforms(source,[...localTransforms,...globalTransforms,mandatoryTransforms]);try{return evalScopeKit.allowNextEvalToBeUnsafe(),apply(evaluate,globalObject,[source])}catch(e){throw err=e,e}finally{const unsafeEvalWasStillExposed="eval"in evalScope;delete evalScope.eval,unsafeEvalWasStillExposed&&(evalScopeKit.revoked={err:err},Fail`handler did not reset allowNextEvalToBeUnsafe ${err}`)}}}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,arrayPush,create,getOwnPropertyDescriptors,evadeHtmlCommentTest,evadeImportExpressionTest,rejectSomeDirectEvalExpressions,makeSafeEvaluator;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]]]],["./transforms.js",[["evadeHtmlCommentTest",[$h‍_a=>evadeHtmlCommentTest=$h‍_a]],["evadeImportExpressionTest",[$h‍_a=>evadeImportExpressionTest=$h‍_a]],["rejectSomeDirectEvalExpressions",[$h‍_a=>rejectSomeDirectEvalExpressions=$h‍_a]]]],["./make-safe-evaluator.js",[["makeSafeEvaluator",[$h‍_a=>makeSafeEvaluator=$h‍_a]]]]]);const provideCompartmentEvaluator=(compartmentFields,options)=>{const{sloppyGlobalsMode:sloppyGlobalsMode=!1,__moduleShimLexicals__:__moduleShimLexicals__}=options;let safeEvaluate;if(void 0!==__moduleShimLexicals__||sloppyGlobalsMode){let{globalTransforms:globalTransforms}=compartmentFields;const{globalObject:globalObject}=compartmentFields;let moduleLexicals;void 0!==__moduleShimLexicals__&&(globalTransforms=void 0,moduleLexicals=create(null,getOwnPropertyDescriptors(__moduleShimLexicals__))),({safeEvaluate:safeEvaluate}=makeSafeEvaluator({globalObject:globalObject,moduleLexicals:moduleLexicals,globalTransforms:globalTransforms,sloppyGlobalsMode:sloppyGlobalsMode}))}else({safeEvaluate:safeEvaluate}=compartmentFields);return{safeEvaluate:safeEvaluate}};$h‍_once.provideCompartmentEvaluator(provideCompartmentEvaluator);$h‍_once.compartmentEvaluate(((compartmentFields,source,options)=>{if("string"!=typeof source)throw new TypeError("first argument of evaluate() must be a string");const{transforms:transforms=[],__evadeHtmlCommentTest__:__evadeHtmlCommentTest__=!1,__evadeImportExpressionTest__:__evadeImportExpressionTest__=!1,__rejectSomeDirectEvalExpressions__:__rejectSomeDirectEvalExpressions__=!0}=options,localTransforms=[...transforms];!0===__evadeHtmlCommentTest__&&arrayPush(localTransforms,evadeHtmlCommentTest),!0===__evadeImportExpressionTest__&&arrayPush(localTransforms,evadeImportExpressionTest),!0===__rejectSomeDirectEvalExpressions__&&arrayPush(localTransforms,rejectSomeDirectEvalExpressions);const{safeEvaluate:safeEvaluate}=provideCompartmentEvaluator(compartmentFields,options);return safeEvaluate(source,{localTransforms:localTransforms})}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);$h‍_once.makeEvalFunction((safeEvaluate=>source=>"string"!=typeof source?source:safeEvaluate(source)))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,arrayJoin,arrayPop,defineProperties,getPrototypeOf,assert;$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayPop",[$h‍_a=>arrayPop=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail}=assert;$h‍_once.makeFunctionConstructor((safeEvaluate=>{const newFunction=function(_body){const bodyText=`${arrayPop(arguments)||""}`,parameters=`${arrayJoin(arguments,",")}`;new FERAL_FUNCTION(parameters,""),new FERAL_FUNCTION(bodyText);return safeEvaluate(`(function anonymous(${parameters}\n) {\n${bodyText}\n})`)};return defineProperties(newFunction,{prototype:{value:FERAL_FUNCTION.prototype,writable:!1,enumerable:!1,configurable:!1}}),getPrototypeOf(FERAL_FUNCTION)===FERAL_FUNCTION.prototype||Fail`Function prototype is the same accross compartments`,getPrototypeOf(newFunction)===FERAL_FUNCTION.prototype||Fail`Function constructor prototype is the same accross compartments`,newFunction}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);const constantProperties={Infinity:1/0,NaN:NaN,undefined:void 0};$h‍_once.constantProperties(constantProperties);$h‍_once.universalPropertyNames({isFinite:"isFinite",isNaN:"isNaN",parseFloat:"parseFloat",parseInt:"parseInt",decodeURI:"decodeURI",decodeURIComponent:"decodeURIComponent",encodeURI:"encodeURI",encodeURIComponent:"encodeURIComponent",Array:"Array",ArrayBuffer:"ArrayBuffer",BigInt:"BigInt",BigInt64Array:"BigInt64Array",BigUint64Array:"BigUint64Array",Boolean:"Boolean",DataView:"DataView",EvalError:"EvalError",Float32Array:"Float32Array",Float64Array:"Float64Array",Int8Array:"Int8Array",Int16Array:"Int16Array",Int32Array:"Int32Array",Map:"Map",Number:"Number",Object:"Object",Promise:"Promise",Proxy:"Proxy",RangeError:"RangeError",ReferenceError:"ReferenceError",Set:"Set",String:"String",Symbol:"Symbol",SyntaxError:"SyntaxError",TypeError:"TypeError",Uint8Array:"Uint8Array",Uint8ClampedArray:"Uint8ClampedArray",Uint16Array:"Uint16Array",Uint32Array:"Uint32Array",URIError:"URIError",WeakMap:"WeakMap",WeakSet:"WeakSet",JSON:"JSON",Reflect:"Reflect",escape:"escape",unescape:"unescape",lockdown:"lockdown",harden:"harden",HandledPromise:"HandledPromise"});$h‍_once.initialGlobalPropertyNames({Date:"%InitialDate%",Error:"%InitialError%",RegExp:"%InitialRegExp%",Math:"%InitialMath%",getStackString:"%InitialGetStackString%"});$h‍_once.sharedGlobalPropertyNames({Date:"%SharedDate%",Error:"%SharedError%",RegExp:"%SharedRegExp%",Math:"%SharedMath%"});$h‍_once.uniqueGlobalPropertyNames({globalThis:"%UniqueGlobalThis%",eval:"%UniqueEval%",Function:"%UniqueFunction%",Compartment:"%UniqueCompartment%"});const NativeErrors=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError];$h‍_once.NativeErrors(NativeErrors);const FunctionInstance={"[[Proto]]":"%FunctionPrototype%",length:"number",name:"string"};$h‍_once.FunctionInstance(FunctionInstance);const fn=FunctionInstance,asyncFn={"[[Proto]]":"%AsyncFunctionPrototype%"},getter={get:fn,set:"undefined"},accessor={get:fn,set:fn};function NativeError(prototype){return{"[[Proto]]":"%SharedError%",prototype:prototype}}function NativeErrorPrototype(constructor){return{"[[Proto]]":"%ErrorPrototype%",constructor:constructor,message:"string",name:"string",toString:!1,cause:!1}}function TypedArray(prototype){return{"[[Proto]]":"%TypedArray%",BYTES_PER_ELEMENT:"number",prototype:prototype}}function TypedArrayPrototype(constructor){return{"[[Proto]]":"%TypedArrayPrototype%",BYTES_PER_ELEMENT:"number",constructor:constructor}}$h‍_once.isAccessorPermit((permit=>permit===getter||permit===accessor));const SharedMath={E:"number",LN10:"number",LN2:"number",LOG10E:"number",LOG2E:"number",PI:"number",SQRT1_2:"number",SQRT2:"number","@@toStringTag":"string",abs:fn,acos:fn,acosh:fn,asin:fn,asinh:fn,atan:fn,atanh:fn,atan2:fn,cbrt:fn,ceil:fn,clz32:fn,cos:fn,cosh:fn,exp:fn,expm1:fn,floor:fn,fround:fn,hypot:fn,imul:fn,log:fn,log1p:fn,log10:fn,log2:fn,max:fn,min:fn,pow:fn,round:fn,sign:fn,sin:fn,sinh:fn,sqrt:fn,tan:fn,tanh:fn,trunc:fn,idiv:!1,idivmod:!1,imod:!1,imuldiv:!1,irem:!1,mod:!1},whitelist={"[[Proto]]":null,"%ThrowTypeError%":fn,Infinity:"number",NaN:"number",undefined:"undefined","%UniqueEval%":fn,isFinite:fn,isNaN:fn,parseFloat:fn,parseInt:fn,decodeURI:fn,decodeURIComponent:fn,encodeURI:fn,encodeURIComponent:fn,Object:{"[[Proto]]":"%FunctionPrototype%",assign:fn,create:fn,defineProperties:fn,defineProperty:fn,entries:fn,freeze:fn,fromEntries:fn,getOwnPropertyDescriptor:fn,getOwnPropertyDescriptors:fn,getOwnPropertyNames:fn,getOwnPropertySymbols:fn,getPrototypeOf:fn,hasOwn:fn,is:fn,isExtensible:fn,isFrozen:fn,isSealed:fn,keys:fn,preventExtensions:fn,prototype:"%ObjectPrototype%",seal:fn,setPrototypeOf:fn,values:fn},"%ObjectPrototype%":{"[[Proto]]":null,constructor:"Object",hasOwnProperty:fn,isPrototypeOf:fn,propertyIsEnumerable:fn,toLocaleString:fn,toString:fn,valueOf:fn,"--proto--":accessor,__defineGetter__:fn,__defineSetter__:fn,__lookupGetter__:fn,__lookupSetter__:fn},"%UniqueFunction%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%FunctionPrototype%"},"%InertFunction%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%FunctionPrototype%"},"%FunctionPrototype%":{apply:fn,bind:fn,call:fn,constructor:"%InertFunction%",toString:fn,"@@hasInstance":fn,caller:!1,arguments:!1},Boolean:{"[[Proto]]":"%FunctionPrototype%",prototype:"%BooleanPrototype%"},"%BooleanPrototype%":{constructor:"Boolean",toString:fn,valueOf:fn},Symbol:{"[[Proto]]":"%FunctionPrototype%",asyncIterator:"symbol",for:fn,hasInstance:"symbol",isConcatSpreadable:"symbol",iterator:"symbol",keyFor:fn,match:"symbol",matchAll:"symbol",prototype:"%SymbolPrototype%",replace:"symbol",search:"symbol",species:"symbol",split:"symbol",toPrimitive:"symbol",toStringTag:"symbol",unscopables:"symbol"},"%SymbolPrototype%":{constructor:"Symbol",description:getter,toString:fn,valueOf:fn,"@@toPrimitive":fn,"@@toStringTag":"string"},"%InitialError%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%ErrorPrototype%",captureStackTrace:fn,stackTraceLimit:accessor,prepareStackTrace:accessor},"%SharedError%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%ErrorPrototype%",captureStackTrace:fn,stackTraceLimit:accessor,prepareStackTrace:accessor},"%ErrorPrototype%":{constructor:"%SharedError%",message:"string",name:"string",toString:fn,at:!1,stack:accessor,cause:!1},EvalError:NativeError("%EvalErrorPrototype%"),RangeError:NativeError("%RangeErrorPrototype%"),ReferenceError:NativeError("%ReferenceErrorPrototype%"),SyntaxError:NativeError("%SyntaxErrorPrototype%"),TypeError:NativeError("%TypeErrorPrototype%"),URIError:NativeError("%URIErrorPrototype%"),"%EvalErrorPrototype%":NativeErrorPrototype("EvalError"),"%RangeErrorPrototype%":NativeErrorPrototype("RangeError"),"%ReferenceErrorPrototype%":NativeErrorPrototype("ReferenceError"),"%SyntaxErrorPrototype%":NativeErrorPrototype("SyntaxError"),"%TypeErrorPrototype%":NativeErrorPrototype("TypeError"),"%URIErrorPrototype%":NativeErrorPrototype("URIError"),Number:{"[[Proto]]":"%FunctionPrototype%",EPSILON:"number",isFinite:fn,isInteger:fn,isNaN:fn,isSafeInteger:fn,MAX_SAFE_INTEGER:"number",MAX_VALUE:"number",MIN_SAFE_INTEGER:"number",MIN_VALUE:"number",NaN:"number",NEGATIVE_INFINITY:"number",parseFloat:fn,parseInt:fn,POSITIVE_INFINITY:"number",prototype:"%NumberPrototype%"},"%NumberPrototype%":{constructor:"Number",toExponential:fn,toFixed:fn,toLocaleString:fn,toPrecision:fn,toString:fn,valueOf:fn},BigInt:{"[[Proto]]":"%FunctionPrototype%",asIntN:fn,asUintN:fn,prototype:"%BigIntPrototype%",bitLength:!1,fromArrayBuffer:!1},"%BigIntPrototype%":{constructor:"BigInt",toLocaleString:fn,toString:fn,valueOf:fn,"@@toStringTag":"string"},"%InitialMath%":{...SharedMath,random:fn},"%SharedMath%":SharedMath,"%InitialDate%":{"[[Proto]]":"%FunctionPrototype%",now:fn,parse:fn,prototype:"%DatePrototype%",UTC:fn},"%SharedDate%":{"[[Proto]]":"%FunctionPrototype%",now:fn,parse:fn,prototype:"%DatePrototype%",UTC:fn},"%DatePrototype%":{constructor:"%SharedDate%",getDate:fn,getDay:fn,getFullYear:fn,getHours:fn,getMilliseconds:fn,getMinutes:fn,getMonth:fn,getSeconds:fn,getTime:fn,getTimezoneOffset:fn,getUTCDate:fn,getUTCDay:fn,getUTCFullYear:fn,getUTCHours:fn,getUTCMilliseconds:fn,getUTCMinutes:fn,getUTCMonth:fn,getUTCSeconds:fn,setDate:fn,setFullYear:fn,setHours:fn,setMilliseconds:fn,setMinutes:fn,setMonth:fn,setSeconds:fn,setTime:fn,setUTCDate:fn,setUTCFullYear:fn,setUTCHours:fn,setUTCMilliseconds:fn,setUTCMinutes:fn,setUTCMonth:fn,setUTCSeconds:fn,toDateString:fn,toISOString:fn,toJSON:fn,toLocaleDateString:fn,toLocaleString:fn,toLocaleTimeString:fn,toString:fn,toTimeString:fn,toUTCString:fn,valueOf:fn,"@@toPrimitive":fn,getYear:fn,setYear:fn,toGMTString:fn},String:{"[[Proto]]":"%FunctionPrototype%",fromCharCode:fn,fromCodePoint:fn,prototype:"%StringPrototype%",raw:fn,fromArrayBuffer:!1},"%StringPrototype%":{length:"number",at:fn,charAt:fn,charCodeAt:fn,codePointAt:fn,concat:fn,constructor:"String",endsWith:fn,includes:fn,indexOf:fn,lastIndexOf:fn,localeCompare:fn,match:fn,matchAll:fn,normalize:fn,padEnd:fn,padStart:fn,repeat:fn,replace:fn,replaceAll:fn,search:fn,slice:fn,split:fn,startsWith:fn,substring:fn,toLocaleLowerCase:fn,toLocaleUpperCase:fn,toLowerCase:fn,toString:fn,toUpperCase:fn,trim:fn,trimEnd:fn,trimStart:fn,valueOf:fn,"@@iterator":fn,substr:fn,anchor:fn,big:fn,blink:fn,bold:fn,fixed:fn,fontcolor:fn,fontsize:fn,italics:fn,link:fn,small:fn,strike:fn,sub:fn,sup:fn,trimLeft:fn,trimRight:fn,compare:!1},"%StringIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},"%InitialRegExp%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%RegExpPrototype%","@@species":getter,input:!1,$_:!1,lastMatch:!1,"$&":!1,lastParen:!1,"$+":!1,leftContext:!1,"$`":!1,rightContext:!1,"$'":!1,$1:!1,$2:!1,$3:!1,$4:!1,$5:!1,$6:!1,$7:!1,$8:!1,$9:!1},"%SharedRegExp%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%RegExpPrototype%","@@species":getter},"%RegExpPrototype%":{constructor:"%SharedRegExp%",exec:fn,dotAll:getter,flags:getter,global:getter,ignoreCase:getter,"@@match":fn,"@@matchAll":fn,multiline:getter,"@@replace":fn,"@@search":fn,source:getter,"@@split":fn,sticky:getter,test:fn,toString:fn,unicode:getter,compile:!1,hasIndices:!1},"%RegExpStringIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},Array:{"[[Proto]]":"%FunctionPrototype%",from:fn,isArray:fn,of:fn,prototype:"%ArrayPrototype%","@@species":getter,at:fn},"%ArrayPrototype%":{at:fn,length:"number",concat:fn,constructor:"Array",copyWithin:fn,entries:fn,every:fn,fill:fn,filter:fn,find:fn,findIndex:fn,flat:fn,flatMap:fn,forEach:fn,includes:fn,indexOf:fn,join:fn,keys:fn,lastIndexOf:fn,map:fn,pop:fn,push:fn,reduce:fn,reduceRight:fn,reverse:fn,shift:fn,slice:fn,some:fn,sort:fn,splice:fn,toLocaleString:fn,toString:fn,unshift:fn,values:fn,"@@iterator":fn,"@@unscopables":{"[[Proto]]":null,copyWithin:"boolean",entries:"boolean",fill:"boolean",find:"boolean",findIndex:"boolean",flat:"boolean",flatMap:"boolean",includes:"boolean",keys:"boolean",values:"boolean",at:!1,findLast:"boolean",findLastIndex:"boolean"},findLast:fn,findLastIndex:fn},"%ArrayIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},"%TypedArray%":{"[[Proto]]":"%FunctionPrototype%",from:fn,of:fn,prototype:"%TypedArrayPrototype%","@@species":getter},"%TypedArrayPrototype%":{at:fn,buffer:getter,byteLength:getter,byteOffset:getter,constructor:"%TypedArray%",copyWithin:fn,entries:fn,every:fn,fill:fn,filter:fn,find:fn,findIndex:fn,forEach:fn,includes:fn,indexOf:fn,join:fn,keys:fn,lastIndexOf:fn,length:getter,map:fn,reduce:fn,reduceRight:fn,reverse:fn,set:fn,slice:fn,some:fn,sort:fn,subarray:fn,toLocaleString:fn,toString:fn,values:fn,"@@iterator":fn,"@@toStringTag":getter,findLast:fn,findLastIndex:fn},BigInt64Array:TypedArray("%BigInt64ArrayPrototype%"),BigUint64Array:TypedArray("%BigUint64ArrayPrototype%"),Float32Array:TypedArray("%Float32ArrayPrototype%"),Float64Array:TypedArray("%Float64ArrayPrototype%"),Int16Array:TypedArray("%Int16ArrayPrototype%"),Int32Array:TypedArray("%Int32ArrayPrototype%"),Int8Array:TypedArray("%Int8ArrayPrototype%"),Uint16Array:TypedArray("%Uint16ArrayPrototype%"),Uint32Array:TypedArray("%Uint32ArrayPrototype%"),Uint8Array:TypedArray("%Uint8ArrayPrototype%"),Uint8ClampedArray:TypedArray("%Uint8ClampedArrayPrototype%"),"%BigInt64ArrayPrototype%":TypedArrayPrototype("BigInt64Array"),"%BigUint64ArrayPrototype%":TypedArrayPrototype("BigUint64Array"),"%Float32ArrayPrototype%":TypedArrayPrototype("Float32Array"),"%Float64ArrayPrototype%":TypedArrayPrototype("Float64Array"),"%Int16ArrayPrototype%":TypedArrayPrototype("Int16Array"),"%Int32ArrayPrototype%":TypedArrayPrototype("Int32Array"),"%Int8ArrayPrototype%":TypedArrayPrototype("Int8Array"),"%Uint16ArrayPrototype%":TypedArrayPrototype("Uint16Array"),"%Uint32ArrayPrototype%":TypedArrayPrototype("Uint32Array"),"%Uint8ArrayPrototype%":TypedArrayPrototype("Uint8Array"),"%Uint8ClampedArrayPrototype%":TypedArrayPrototype("Uint8ClampedArray"),Map:{"[[Proto]]":"%FunctionPrototype%","@@species":getter,prototype:"%MapPrototype%"},"%MapPrototype%":{clear:fn,constructor:"Map",delete:fn,entries:fn,forEach:fn,get:fn,has:fn,keys:fn,set:fn,size:getter,values:fn,"@@iterator":fn,"@@toStringTag":"string"},"%MapIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},Set:{"[[Proto]]":"%FunctionPrototype%",prototype:"%SetPrototype%","@@species":getter},"%SetPrototype%":{add:fn,clear:fn,constructor:"Set",delete:fn,entries:fn,forEach:fn,has:fn,keys:fn,size:getter,values:fn,"@@iterator":fn,"@@toStringTag":"string"},"%SetIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},WeakMap:{"[[Proto]]":"%FunctionPrototype%",prototype:"%WeakMapPrototype%"},"%WeakMapPrototype%":{constructor:"WeakMap",delete:fn,get:fn,has:fn,set:fn,"@@toStringTag":"string"},WeakSet:{"[[Proto]]":"%FunctionPrototype%",prototype:"%WeakSetPrototype%"},"%WeakSetPrototype%":{add:fn,constructor:"WeakSet",delete:fn,has:fn,"@@toStringTag":"string"},ArrayBuffer:{"[[Proto]]":"%FunctionPrototype%",isView:fn,prototype:"%ArrayBufferPrototype%","@@species":getter,fromString:!1,fromBigInt:!1},"%ArrayBufferPrototype%":{byteLength:getter,constructor:"ArrayBuffer",slice:fn,"@@toStringTag":"string",concat:!1,transfer:fn,resize:fn,resizable:getter,maxByteLength:getter},SharedArrayBuffer:!1,"%SharedArrayBufferPrototype%":!1,DataView:{"[[Proto]]":"%FunctionPrototype%",BYTES_PER_ELEMENT:"number",prototype:"%DataViewPrototype%"},"%DataViewPrototype%":{buffer:getter,byteLength:getter,byteOffset:getter,constructor:"DataView",getBigInt64:fn,getBigUint64:fn,getFloat32:fn,getFloat64:fn,getInt8:fn,getInt16:fn,getInt32:fn,getUint8:fn,getUint16:fn,getUint32:fn,setBigInt64:fn,setBigUint64:fn,setFloat32:fn,setFloat64:fn,setInt8:fn,setInt16:fn,setInt32:fn,setUint8:fn,setUint16:fn,setUint32:fn,"@@toStringTag":"string"},Atomics:!1,JSON:{parse:fn,stringify:fn,"@@toStringTag":"string"},"%IteratorPrototype%":{"@@iterator":fn},"%AsyncIteratorPrototype%":{"@@asyncIterator":fn},"%InertGeneratorFunction%":{"[[Proto]]":"%InertFunction%",prototype:"%Generator%"},"%Generator%":{"[[Proto]]":"%FunctionPrototype%",constructor:"%InertGeneratorFunction%",prototype:"%GeneratorPrototype%","@@toStringTag":"string"},"%InertAsyncGeneratorFunction%":{"[[Proto]]":"%InertFunction%",prototype:"%AsyncGenerator%"},"%AsyncGenerator%":{"[[Proto]]":"%FunctionPrototype%",constructor:"%InertAsyncGeneratorFunction%",prototype:"%AsyncGeneratorPrototype%",length:"number","@@toStringTag":"string"},"%GeneratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",constructor:"%Generator%",next:fn,return:fn,throw:fn,"@@toStringTag":"string"},"%AsyncGeneratorPrototype%":{"[[Proto]]":"%AsyncIteratorPrototype%",constructor:"%AsyncGenerator%",next:fn,return:fn,throw:fn,"@@toStringTag":"string"},HandledPromise:{"[[Proto]]":"Promise",applyFunction:fn,applyFunctionSendOnly:fn,applyMethod:fn,applyMethodSendOnly:fn,get:fn,getSendOnly:fn,prototype:"%PromisePrototype%",resolve:fn},Promise:{"[[Proto]]":"%FunctionPrototype%",all:fn,allSettled:fn,any:!1,prototype:"%PromisePrototype%",race:fn,reject:fn,resolve:fn,"@@species":getter},"%PromisePrototype%":{catch:fn,constructor:"Promise",finally:fn,then:fn,"@@toStringTag":"string","UniqueSymbol(async_id_symbol)":accessor,"UniqueSymbol(trigger_async_id_symbol)":accessor,"UniqueSymbol(destroyed)":accessor},"%InertAsyncFunction%":{"[[Proto]]":"%InertFunction%",prototype:"%AsyncFunctionPrototype%"},"%AsyncFunctionPrototype%":{"[[Proto]]":"%FunctionPrototype%",constructor:"%InertAsyncFunction%",length:"number","@@toStringTag":"string"},Reflect:{apply:fn,construct:fn,defineProperty:fn,deleteProperty:fn,get:fn,getOwnPropertyDescriptor:fn,getPrototypeOf:fn,has:fn,isExtensible:fn,ownKeys:fn,preventExtensions:fn,set:fn,setPrototypeOf:fn,"@@toStringTag":"string"},Proxy:{"[[Proto]]":"%FunctionPrototype%",revocable:fn},escape:fn,unescape:fn,"%UniqueCompartment%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%CompartmentPrototype%",toString:fn},"%InertCompartment%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%CompartmentPrototype%",toString:fn},"%CompartmentPrototype%":{constructor:"%InertCompartment%",evaluate:fn,globalThis:getter,name:getter,toString:fn,import:asyncFn,load:asyncFn,importNow:fn,module:fn},lockdown:fn,harden:{...fn,isFake:"boolean"},"%InitialGetStackString%":fn};$h‍_once.whitelist(whitelist)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,assign,create,defineProperty,entries,freeze,objectHasOwnProperty,unscopablesSymbol,makeEvalFunction,makeFunctionConstructor,constantProperties,universalPropertyNames;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["unscopablesSymbol",[$h‍_a=>unscopablesSymbol=$h‍_a]]]],["./make-eval-function.js",[["makeEvalFunction",[$h‍_a=>makeEvalFunction=$h‍_a]]]],["./make-function-constructor.js",[["makeFunctionConstructor",[$h‍_a=>makeFunctionConstructor=$h‍_a]]]],["./whitelist.js",[["constantProperties",[$h‍_a=>constantProperties=$h‍_a]],["universalPropertyNames",[$h‍_a=>universalPropertyNames=$h‍_a]]]]]);$h‍_once.setGlobalObjectSymbolUnscopables((globalObject=>{defineProperty(globalObject,unscopablesSymbol,freeze(assign(create(null),{set:freeze((()=>{throw new TypeError("Cannot set Symbol.unscopables of a Compartment's globalThis")})),enumerable:!1,configurable:!1})))}));$h‍_once.setGlobalObjectConstantProperties((globalObject=>{for(const[name,constant]of entries(constantProperties))defineProperty(globalObject,name,{value:constant,writable:!1,enumerable:!1,configurable:!1})}));$h‍_once.setGlobalObjectMutableProperties(((globalObject,{intrinsics:intrinsics,newGlobalPropertyNames:newGlobalPropertyNames,makeCompartmentConstructor:makeCompartmentConstructor,markVirtualizedNativeFunction:markVirtualizedNativeFunction})=>{for(const[name,intrinsicName]of entries(universalPropertyNames))objectHasOwnProperty(intrinsics,intrinsicName)&&defineProperty(globalObject,name,{value:intrinsics[intrinsicName],writable:!0,enumerable:!1,configurable:!0});for(const[name,intrinsicName]of entries(newGlobalPropertyNames))objectHasOwnProperty(intrinsics,intrinsicName)&&defineProperty(globalObject,name,{value:intrinsics[intrinsicName],writable:!0,enumerable:!1,configurable:!0});const perCompartmentGlobals={globalThis:globalObject};perCompartmentGlobals.Compartment=makeCompartmentConstructor(makeCompartmentConstructor,intrinsics,markVirtualizedNativeFunction);for(const[name,value]of entries(perCompartmentGlobals))defineProperty(globalObject,name,{value:value,writable:!0,enumerable:!1,configurable:!0}),"function"==typeof value&&markVirtualizedNativeFunction(value)}));$h‍_once.setGlobalObjectEvaluators(((globalObject,evaluator,markVirtualizedNativeFunction)=>{{const f=makeEvalFunction(evaluator);markVirtualizedNativeFunction(f),defineProperty(globalObject,"eval",{value:f,writable:!0,enumerable:!1,configurable:!0})}{const f=makeFunctionConstructor(evaluator);markVirtualizedNativeFunction(f),defineProperty(globalObject,"Function",{value:f,writable:!0,enumerable:!1,configurable:!0})}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let ReferenceError,TypeError,Map,Set,arrayJoin,arrayMap,arrayPush,create,freeze,mapGet,mapHas,mapSet,setAdd,promiseCatch,promiseThen,values,weakmapGet,assert;$h‍_imports([["./commons.js",[["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["Map",[$h‍_a=>Map=$h‍_a]],["Set",[$h‍_a=>Set=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["setAdd",[$h‍_a=>setAdd=$h‍_a]],["promiseCatch",[$h‍_a=>promiseCatch=$h‍_a]],["promiseThen",[$h‍_a=>promiseThen=$h‍_a]],["values",[$h‍_a=>values=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,details:d,quote:q}=assert,noop=()=>{};$h‍_once.makeAlias(((compartment,specifier)=>freeze({compartment:compartment,specifier:specifier})));const loadRecord=(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,staticModuleRecord,pendingJobs,moduleLoads,errors,importMeta)=>{const{resolveHook:resolveHook,moduleRecords:moduleRecords}=weakmapGet(compartmentPrivateFields,compartment),resolvedImports=((imports,resolveHook,fullReferrerSpecifier)=>{const resolvedImports=create(null);for(const importSpecifier of imports){const fullSpecifier=resolveHook(importSpecifier,fullReferrerSpecifier);resolvedImports[importSpecifier]=fullSpecifier}return freeze(resolvedImports)})(staticModuleRecord.imports,resolveHook,moduleSpecifier),moduleRecord=freeze({compartment:compartment,staticModuleRecord:staticModuleRecord,moduleSpecifier:moduleSpecifier,resolvedImports:resolvedImports,importMeta:importMeta});for(const fullSpecifier of values(resolvedImports)){const dependencyLoaded=memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,compartment,fullSpecifier,pendingJobs,moduleLoads,errors);setAdd(pendingJobs,promiseThen(dependencyLoaded,noop,(error=>{arrayPush(errors,error)})))}return mapSet(moduleRecords,moduleSpecifier,moduleRecord),moduleRecord},memoizedLoadWithErrorAnnotation=async(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors)=>{const{name:compartmentName}=weakmapGet(compartmentPrivateFields,compartment);let compartmentLoading=mapGet(moduleLoads,compartment);void 0===compartmentLoading&&(compartmentLoading=new Map,mapSet(moduleLoads,compartment,compartmentLoading));let moduleLoading=mapGet(compartmentLoading,moduleSpecifier);return void 0!==moduleLoading||(moduleLoading=promiseCatch((async(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors)=>{const{importHook:importHook,moduleMap:moduleMap,moduleMapHook:moduleMapHook,moduleRecords:moduleRecords}=weakmapGet(compartmentPrivateFields,compartment);let aliasNamespace=moduleMap[moduleSpecifier];if(void 0===aliasNamespace&&void 0!==moduleMapHook&&(aliasNamespace=moduleMapHook(moduleSpecifier)),"string"==typeof aliasNamespace)assert.fail(d`Cannot map module ${q(moduleSpecifier)} to ${q(aliasNamespace)} in parent compartment, not yet implemented`,TypeError);else if(void 0!==aliasNamespace){const alias=weakmapGet(moduleAliases,aliasNamespace);void 0===alias&&assert.fail(d`Cannot map module ${q(moduleSpecifier)} because the value is not a module exports namespace, or is from another realm`,ReferenceError);const aliasRecord=await memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,alias.compartment,alias.specifier,pendingJobs,moduleLoads,errors);return mapSet(moduleRecords,moduleSpecifier,aliasRecord),aliasRecord}if(mapHas(moduleRecords,moduleSpecifier))return mapGet(moduleRecords,moduleSpecifier);const staticModuleRecord=await importHook(moduleSpecifier);if(null!==staticModuleRecord&&"object"==typeof staticModuleRecord||Fail`importHook must return a promise for an object, for module ${q(moduleSpecifier)} in compartment ${q(compartment.name)}`,void 0!==staticModuleRecord.specifier){if(void 0!==staticModuleRecord.record){if(void 0!==staticModuleRecord.compartment)throw new TypeError("Cannot redirect to an explicit record with a specified compartment");const{compartment:aliasCompartment=compartment,specifier:aliasSpecifier=moduleSpecifier,record:aliasModuleRecord,importMeta:importMeta}=staticModuleRecord,aliasRecord=loadRecord(compartmentPrivateFields,moduleAliases,aliasCompartment,aliasSpecifier,aliasModuleRecord,pendingJobs,moduleLoads,errors,importMeta);return mapSet(moduleRecords,moduleSpecifier,aliasRecord),aliasRecord}if(void 0!==staticModuleRecord.compartment){if(void 0!==staticModuleRecord.importMeta)throw new TypeError("Cannot redirect to an implicit record with a specified importMeta");const aliasRecord=await memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,staticModuleRecord.compartment,staticModuleRecord.specifier,pendingJobs,moduleLoads,errors);return mapSet(moduleRecords,moduleSpecifier,aliasRecord),aliasRecord}throw new TypeError("Unnexpected RedirectStaticModuleInterface record shape")}return loadRecord(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,staticModuleRecord,pendingJobs,moduleLoads,errors)})(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors),(error=>{throw assert.note(error,d`${error.message}, loading ${q(moduleSpecifier)} in compartment ${q(compartmentName)}`),error})),mapSet(compartmentLoading,moduleSpecifier,moduleLoading)),moduleLoading};$h‍_once.load((async(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier)=>{const{name:compartmentName}=weakmapGet(compartmentPrivateFields,compartment),pendingJobs=new Set,moduleLoads=new Map,errors=[],dependencyLoaded=memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors);setAdd(pendingJobs,promiseThen(dependencyLoaded,noop,(error=>{arrayPush(errors,error)})));for(const job of pendingJobs)await job;if(errors.length>0)throw new TypeError(`Failed to load module ${q(moduleSpecifier)} in package ${q(compartmentName)} (${errors.length} underlying failures: ${arrayJoin(arrayMap(errors,(error=>error.message)),", ")}`)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let makeAlias,Proxy,TypeError,create,freeze,mapGet,mapHas,mapSet,ownKeys,reflectGet,reflectGetOwnPropertyDescriptor,reflectHas,reflectIsExtensible,reflectPreventExtensions,weakmapSet,assert;$h‍_imports([["./module-load.js",[["makeAlias",[$h‍_a=>makeAlias=$h‍_a]]]],["./commons.js",[["Proxy",[$h‍_a=>Proxy=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["reflectGet",[$h‍_a=>reflectGet=$h‍_a]],["reflectGetOwnPropertyDescriptor",[$h‍_a=>reflectGetOwnPropertyDescriptor=$h‍_a]],["reflectHas",[$h‍_a=>reflectHas=$h‍_a]],["reflectIsExtensible",[$h‍_a=>reflectIsExtensible=$h‍_a]],["reflectPreventExtensions",[$h‍_a=>reflectPreventExtensions=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{quote:q}=assert,deferExports=()=>{let active=!1;const proxiedExports=create(null);return freeze({activate(){active=!0},proxiedExports:proxiedExports,exportsProxy:new Proxy(proxiedExports,{get(_target,name,receiver){if(!active)throw new TypeError(`Cannot get property ${q(name)} of module exports namespace, the module has not yet begun to execute`);return reflectGet(proxiedExports,name,receiver)},set(_target,name,_value){throw new TypeError(`Cannot set property ${q(name)} of module exports namespace`)},has(_target,name){if(!active)throw new TypeError(`Cannot check property ${q(name)}, the module has not yet begun to execute`);return reflectHas(proxiedExports,name)},deleteProperty(_target,name){throw new TypeError(`Cannot delete property ${q(name)}s of module exports namespace`)},ownKeys(_target){if(!active)throw new TypeError("Cannot enumerate keys, the module has not yet begun to execute");return ownKeys(proxiedExports)},getOwnPropertyDescriptor(_target,name){if(!active)throw new TypeError(`Cannot get own property descriptor ${q(name)}, the module has not yet begun to execute`);return reflectGetOwnPropertyDescriptor(proxiedExports,name)},preventExtensions(_target){if(!active)throw new TypeError("Cannot prevent extensions of module exports namespace, the module has not yet begun to execute");return reflectPreventExtensions(proxiedExports)},isExtensible(){if(!active)throw new TypeError("Cannot check extensibility of module exports namespace, the module has not yet begun to execute");return reflectIsExtensible(proxiedExports)},getPrototypeOf:_target=>null,setPrototypeOf(_target,_proto){throw new TypeError("Cannot set prototype of module exports namespace")},defineProperty(_target,name,_descriptor){throw new TypeError(`Cannot define property ${q(name)} of module exports namespace`)},apply(_target,_thisArg,_args){throw new TypeError("Cannot call module exports namespace, it is not a function")},construct(_target,_args){throw new TypeError("Cannot construct module exports namespace, it is not a constructor")}})})};$h‍_once.deferExports(deferExports);$h‍_once.getDeferredExports(((compartment,compartmentPrivateFields,moduleAliases,specifier)=>{const{deferredExports:deferredExports}=compartmentPrivateFields;if(!mapHas(deferredExports,specifier)){const deferred=deferExports();weakmapSet(moduleAliases,deferred.exportsProxy,makeAlias(compartment,specifier)),mapSet(deferredExports,specifier,deferred)}return mapGet(deferredExports,specifier)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let assert,getDeferredExports,ReferenceError,SyntaxError,TypeError,arrayForEach,arrayIncludes,arrayPush,arraySome,arraySort,create,defineProperty,entries,freeze,isArray,keys,mapGet,weakmapGet,reflectHas,assign,compartmentEvaluate;$h‍_imports([["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]],["./module-proxy.js",[["getDeferredExports",[$h‍_a=>getDeferredExports=$h‍_a]]]],["./commons.js",[["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["SyntaxError",[$h‍_a=>SyntaxError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayForEach",[$h‍_a=>arrayForEach=$h‍_a]],["arrayIncludes",[$h‍_a=>arrayIncludes=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["arraySome",[$h‍_a=>arraySome=$h‍_a]],["arraySort",[$h‍_a=>arraySort=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["isArray",[$h‍_a=>isArray=$h‍_a]],["keys",[$h‍_a=>keys=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["reflectHas",[$h‍_a=>reflectHas=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]]]],["./compartment-evaluate.js",[["compartmentEvaluate",[$h‍_a=>compartmentEvaluate=$h‍_a]]]]]);const{quote:q}=assert;$h‍_once.makeThirdPartyModuleInstance(((compartmentPrivateFields,staticModuleRecord,compartment,moduleAliases,moduleSpecifier,resolvedImports)=>{const{exportsProxy:exportsProxy,proxiedExports:proxiedExports,activate:activate}=getDeferredExports(compartment,weakmapGet(compartmentPrivateFields,compartment),moduleAliases,moduleSpecifier),notifiers=create(null);if(staticModuleRecord.exports){if(!isArray(staticModuleRecord.exports)||arraySome(staticModuleRecord.exports,(name=>"string"!=typeof name)))throw new TypeError(`SES third-party static module record "exports" property must be an array of strings for module ${moduleSpecifier}`);arrayForEach(staticModuleRecord.exports,(name=>{let value=proxiedExports[name];const updaters=[];defineProperty(proxiedExports,name,{get:()=>value,set:newValue=>{value=newValue;for(const updater of updaters)updater(newValue)},enumerable:!0,configurable:!1}),notifiers[name]=update=>{arrayPush(updaters,update),update(value)}})),notifiers["*"]=update=>{update(proxiedExports)}}const localState={activated:!1};return freeze({notifiers:notifiers,exportsProxy:exportsProxy,execute(){if(reflectHas(localState,"errorFromExecute"))throw localState.errorFromExecute;if(!localState.activated){activate(),localState.activated=!0;try{staticModuleRecord.execute(proxiedExports,compartment,resolvedImports)}catch(err){throw localState.errorFromExecute=err,err}}}})}));$h‍_once.makeModuleInstance(((privateFields,moduleAliases,moduleRecord,importedInstances)=>{const{compartment:compartment,moduleSpecifier:moduleSpecifier,staticModuleRecord:staticModuleRecord,importMeta:moduleRecordMeta}=moduleRecord,{reexports:exportAlls=[],__syncModuleProgram__:functorSource,__fixedExportMap__:fixedExportMap={},__liveExportMap__:liveExportMap={},__reexportMap__:reexportMap={},__needsImportMeta__:needsImportMeta=!1,__syncModuleFunctor__:__syncModuleFunctor__}=staticModuleRecord,compartmentFields=weakmapGet(privateFields,compartment),{__shimTransforms__:__shimTransforms__,importMetaHook:importMetaHook}=compartmentFields,{exportsProxy:exportsProxy,proxiedExports:proxiedExports,activate:activate}=getDeferredExports(compartment,compartmentFields,moduleAliases,moduleSpecifier),exportsProps=create(null),moduleLexicals=create(null),onceVar=create(null),liveVar=create(null),importMeta=create(null);moduleRecordMeta&&assign(importMeta,moduleRecordMeta),needsImportMeta&&importMetaHook&&importMetaHook(moduleSpecifier,importMeta);const localGetNotify=create(null),notifiers=create(null);arrayForEach(entries(fixedExportMap),(([fixedExportName,[localName]])=>{let fixedGetNotify=localGetNotify[localName];if(!fixedGetNotify){let value,tdz=!0,optUpdaters=[];const get=()=>{if(tdz)throw new ReferenceError(`binding ${q(localName)} not yet initialized`);return value},init=freeze((initValue=>{if(!tdz)throw new TypeError(`Internal: binding ${q(localName)} already initialized`);value=initValue;const updaters=optUpdaters;optUpdaters=null,tdz=!1;for(const updater of updaters||[])updater(initValue);return initValue}));fixedGetNotify={get:get,notify:updater=>{updater!==init&&(tdz?arrayPush(optUpdaters||[],updater):updater(value))}},localGetNotify[localName]=fixedGetNotify,onceVar[localName]=init}exportsProps[fixedExportName]={get:fixedGetNotify.get,set:void 0,enumerable:!0,configurable:!1},notifiers[fixedExportName]=fixedGetNotify.notify})),arrayForEach(entries(liveExportMap),(([liveExportName,[localName,setProxyTrap]])=>{let liveGetNotify=localGetNotify[localName];if(!liveGetNotify){let value,tdz=!0;const updaters=[],get=()=>{if(tdz)throw new ReferenceError(`binding ${q(liveExportName)} not yet initialized`);return value},update=freeze((newValue=>{value=newValue,tdz=!1;for(const updater of updaters)updater(newValue)})),set=newValue=>{if(tdz)throw new ReferenceError(`binding ${q(localName)} not yet initialized`);value=newValue;for(const updater of updaters)updater(newValue)};liveGetNotify={get:get,notify:updater=>{updater!==update&&(arrayPush(updaters,updater),tdz||updater(value))}},localGetNotify[localName]=liveGetNotify,setProxyTrap&&defineProperty(moduleLexicals,localName,{get:get,set:set,enumerable:!0,configurable:!1}),liveVar[localName]=update}exportsProps[liveExportName]={get:liveGetNotify.get,set:void 0,enumerable:!0,configurable:!1},notifiers[liveExportName]=liveGetNotify.notify}));function imports(updateRecord){const candidateAll=create(null);candidateAll.default=!1;for(const[specifier,importUpdaters]of updateRecord){const instance=mapGet(importedInstances,specifier);instance.execute();const{notifiers:importNotifiers}=instance;for(const[importName,updaters]of importUpdaters){const importNotify=importNotifiers[importName];if(!importNotify)throw SyntaxError(`The requested module '${specifier}' does not provide an export named '${importName}'`);for(const updater of updaters)importNotify(updater)}if(arrayIncludes(exportAlls,specifier))for(const[importAndExportName,importNotify]of entries(importNotifiers))void 0===candidateAll[importAndExportName]?candidateAll[importAndExportName]=importNotify:candidateAll[importAndExportName]=!1;if(reexportMap[specifier])for(const[localName,exportedName]of reexportMap[specifier])candidateAll[exportedName]=importNotifiers[localName]}for(const[exportName,notify]of entries(candidateAll))if(!notifiers[exportName]&&!1!==notify){let value;notifiers[exportName]=notify;notify((newValue=>value=newValue)),exportsProps[exportName]={get:()=>value,set:void 0,enumerable:!0,configurable:!1}}arrayForEach(arraySort(keys(exportsProps)),(k=>defineProperty(proxiedExports,k,exportsProps[k]))),freeze(proxiedExports),activate()}let optFunctor;notifiers["*"]=update=>{update(proxiedExports)},optFunctor=void 0!==__syncModuleFunctor__?__syncModuleFunctor__:compartmentEvaluate(compartmentFields,functorSource,{globalObject:compartment.globalThis,transforms:__shimTransforms__,__moduleShimLexicals__:moduleLexicals});let thrownError,didThrow=!1;return freeze({notifiers:notifiers,exportsProxy:exportsProxy,execute:function(){if(optFunctor){const functor=optFunctor;optFunctor=null;try{functor(freeze({imports:freeze(imports),onceVar:freeze(onceVar),liveVar:freeze(liveVar),importMeta:importMeta}))}catch(e){didThrow=!0,thrownError=e}}if(didThrow)throw thrownError}})}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let assert,makeModuleInstance,makeThirdPartyModuleInstance,Map,ReferenceError,TypeError,entries,isArray,isObject,mapGet,mapHas,mapSet,weakmapGet;$h‍_imports([["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]],["./module-instance.js",[["makeModuleInstance",[$h‍_a=>makeModuleInstance=$h‍_a]],["makeThirdPartyModuleInstance",[$h‍_a=>makeThirdPartyModuleInstance=$h‍_a]]]],["./commons.js",[["Map",[$h‍_a=>Map=$h‍_a]],["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["isArray",[$h‍_a=>isArray=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,link=(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier)=>{const{name:compartmentName,moduleRecords:moduleRecords}=weakmapGet(compartmentPrivateFields,compartment),moduleRecord=mapGet(moduleRecords,moduleSpecifier);if(void 0===moduleRecord)throw new ReferenceError(`Missing link to module ${q(moduleSpecifier)} from compartment ${q(compartmentName)}`);return instantiate(compartmentPrivateFields,moduleAliases,moduleRecord)};$h‍_once.link(link);const instantiate=(compartmentPrivateFields,moduleAliases,moduleRecord)=>{const{compartment:compartment,moduleSpecifier:moduleSpecifier,resolvedImports:resolvedImports,staticModuleRecord:staticModuleRecord}=moduleRecord,{instances:instances}=weakmapGet(compartmentPrivateFields,compartment);if(mapHas(instances,moduleSpecifier))return mapGet(instances,moduleSpecifier);!function(staticModuleRecord,moduleSpecifier){isObject(staticModuleRecord)||Fail`Static module records must be of type object, got ${q(staticModuleRecord)}, for module ${q(moduleSpecifier)}`;const{imports:imports,exports:exports,reexports:reexports=[]}=staticModuleRecord;isArray(imports)||Fail`Property 'imports' of a static module record must be an array, got ${q(imports)}, for module ${q(moduleSpecifier)}`,isArray(exports)||Fail`Property 'exports' of a precompiled module record must be an array, got ${q(exports)}, for module ${q(moduleSpecifier)}`,isArray(reexports)||Fail`Property 'reexports' of a precompiled module record must be an array if present, got ${q(reexports)}, for module ${q(moduleSpecifier)}`}(staticModuleRecord,moduleSpecifier);const importedInstances=new Map;let moduleInstance;if(function(staticModuleRecord){return"string"==typeof staticModuleRecord.__syncModuleProgram__}(staticModuleRecord))!function(staticModuleRecord,moduleSpecifier){const{__fixedExportMap__:__fixedExportMap__,__liveExportMap__:__liveExportMap__}=staticModuleRecord;isObject(__fixedExportMap__)||Fail`Property '__fixedExportMap__' of a precompiled module record must be an object, got ${q(__fixedExportMap__)}, for module ${q(moduleSpecifier)}`,isObject(__liveExportMap__)||Fail`Property '__liveExportMap__' of a precompiled module record must be an object, got ${q(__liveExportMap__)}, for module ${q(moduleSpecifier)}`}(staticModuleRecord,moduleSpecifier),moduleInstance=makeModuleInstance(compartmentPrivateFields,moduleAliases,moduleRecord,importedInstances);else{if(!function(staticModuleRecord){return"function"==typeof staticModuleRecord.execute}(staticModuleRecord))throw new TypeError(`importHook must return a static module record, got ${q(staticModuleRecord)}`);!function(staticModuleRecord,moduleSpecifier){const{exports:exports}=staticModuleRecord;isArray(exports)||Fail`Property 'exports' of a third-party static module record must be an array, got ${q(exports)}, for module ${q(moduleSpecifier)}`}(staticModuleRecord,moduleSpecifier),moduleInstance=makeThirdPartyModuleInstance(compartmentPrivateFields,staticModuleRecord,compartment,moduleAliases,moduleSpecifier,resolvedImports)}mapSet(instances,moduleSpecifier,moduleInstance);for(const[importSpecifier,resolvedSpecifier]of entries(resolvedImports)){const importedInstance=link(compartmentPrivateFields,moduleAliases,compartment,resolvedSpecifier);mapSet(importedInstances,importSpecifier,importedInstance)}return moduleInstance};$h‍_once.instantiate(instantiate)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Map,ReferenceError,TypeError,WeakMap,assign,defineProperties,entries,promiseThen,weakmapGet,weakmapSet,setGlobalObjectSymbolUnscopables,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,sharedGlobalPropertyNames,load,link,getDeferredExports,assert,compartmentEvaluate,makeSafeEvaluator;$h‍_imports([["./commons.js",[["Map",[$h‍_a=>Map=$h‍_a]],["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["promiseThen",[$h‍_a=>promiseThen=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]]]],["./global-object.js",[["setGlobalObjectSymbolUnscopables",[$h‍_a=>setGlobalObjectSymbolUnscopables=$h‍_a]],["setGlobalObjectConstantProperties",[$h‍_a=>setGlobalObjectConstantProperties=$h‍_a]],["setGlobalObjectMutableProperties",[$h‍_a=>setGlobalObjectMutableProperties=$h‍_a]],["setGlobalObjectEvaluators",[$h‍_a=>setGlobalObjectEvaluators=$h‍_a]]]],["./whitelist.js",[["sharedGlobalPropertyNames",[$h‍_a=>sharedGlobalPropertyNames=$h‍_a]]]],["./module-load.js",[["load",[$h‍_a=>load=$h‍_a]]]],["./module-link.js",[["link",[$h‍_a=>link=$h‍_a]]]],["./module-proxy.js",[["getDeferredExports",[$h‍_a=>getDeferredExports=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]],["./compartment-evaluate.js",[["compartmentEvaluate",[$h‍_a=>compartmentEvaluate=$h‍_a]]]],["./make-safe-evaluator.js",[["makeSafeEvaluator",[$h‍_a=>makeSafeEvaluator=$h‍_a]]]]]);const{quote:q}=assert,moduleAliases=new WeakMap,privateFields=new WeakMap,assertModuleHooks=compartment=>{const{importHook:importHook,resolveHook:resolveHook}=weakmapGet(privateFields,compartment);if("function"!=typeof importHook||"function"!=typeof resolveHook)throw new TypeError("Compartment must be constructed with an importHook and a resolveHook for it to be able to load modules")},InertCompartment=function(_endowments={},_modules={},_options={}){throw new TypeError("Compartment.prototype.constructor is not a valid constructor.")};$h‍_once.InertCompartment(InertCompartment);const compartmentImportNow=(compartment,specifier)=>{const{execute:execute,exportsProxy:exportsProxy}=link(privateFields,moduleAliases,compartment,specifier);return execute(),exportsProxy},CompartmentPrototype={constructor:InertCompartment,get globalThis(){return weakmapGet(privateFields,this).globalObject},get name(){return weakmapGet(privateFields,this).name},evaluate(source,options={}){const compartmentFields=weakmapGet(privateFields,this);return compartmentEvaluate(compartmentFields,source,options)},toString:()=>"[object Compartment]",module(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of module() must be a string");assertModuleHooks(this);const{exportsProxy:exportsProxy}=getDeferredExports(this,weakmapGet(privateFields,this),moduleAliases,specifier);return exportsProxy},async import(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of import() must be a string");return assertModuleHooks(this),promiseThen(load(privateFields,moduleAliases,this,specifier),(()=>({namespace:compartmentImportNow(this,specifier)})))},async load(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of load() must be a string");return assertModuleHooks(this),load(privateFields,moduleAliases,this,specifier)},importNow(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of importNow() must be a string");return assertModuleHooks(this),compartmentImportNow(this,specifier)}};$h‍_once.CompartmentPrototype(CompartmentPrototype),defineProperties(InertCompartment,{prototype:{value:CompartmentPrototype}});$h‍_once.makeCompartmentConstructor(((targetMakeCompartmentConstructor,intrinsics,markVirtualizedNativeFunction)=>{function Compartment(endowments={},moduleMap={},options={}){if(void 0===new.target)throw new TypeError("Class constructor Compartment cannot be invoked without 'new'");const{name:name="",transforms:transforms=[],__shimTransforms__:__shimTransforms__=[],resolveHook:resolveHook,importHook:importHook,moduleMapHook:moduleMapHook,importMetaHook:importMetaHook}=options,globalTransforms=[...transforms,...__shimTransforms__],moduleRecords=new Map,instances=new Map,deferredExports=new Map;for(const[specifier,aliasNamespace]of entries(moduleMap||{})){if("string"==typeof aliasNamespace)throw new TypeError(`Cannot map module ${q(specifier)} to ${q(aliasNamespace)} in parent compartment`);if(void 0===weakmapGet(moduleAliases,aliasNamespace))throw ReferenceError(`Cannot map module ${q(specifier)} because it has no known compartment in this realm`)}const globalObject={};setGlobalObjectSymbolUnscopables(globalObject),setGlobalObjectConstantProperties(globalObject);const{safeEvaluate:safeEvaluate}=makeSafeEvaluator({globalObject:globalObject,globalTransforms:globalTransforms,sloppyGlobalsMode:!1});setGlobalObjectMutableProperties(globalObject,{intrinsics:intrinsics,newGlobalPropertyNames:sharedGlobalPropertyNames,makeCompartmentConstructor:targetMakeCompartmentConstructor,markVirtualizedNativeFunction:markVirtualizedNativeFunction}),setGlobalObjectEvaluators(globalObject,safeEvaluate,markVirtualizedNativeFunction),assign(globalObject,endowments),weakmapSet(privateFields,this,{name:`${name}`,globalTransforms:globalTransforms,globalObject:globalObject,safeEvaluate:safeEvaluate,resolveHook:resolveHook,importHook:importHook,moduleMap:moduleMap,moduleMapHook:moduleMapHook,importMetaHook:importMetaHook,moduleRecords:moduleRecords,__shimTransforms__:__shimTransforms__,deferredExports:deferredExports,instances:instances})}return Compartment.prototype=CompartmentPrototype,Compartment}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,WeakSet,arrayFilter,create,defineProperty,entries,freeze,getOwnPropertyDescriptor,getOwnPropertyDescriptors,globalThis,is,isObject,objectHasOwnProperty,values,weaksetHas,constantProperties,sharedGlobalPropertyNames,universalPropertyNames,whitelist;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["values",[$h‍_a=>values=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]],["./whitelist.js",[["constantProperties",[$h‍_a=>constantProperties=$h‍_a]],["sharedGlobalPropertyNames",[$h‍_a=>sharedGlobalPropertyNames=$h‍_a]],["universalPropertyNames",[$h‍_a=>universalPropertyNames=$h‍_a]],["whitelist",[$h‍_a=>whitelist=$h‍_a]]]]]);const isFunction=obj=>"function"==typeof obj;function initProperty(obj,name,desc){if(objectHasOwnProperty(obj,name)){const preDesc=getOwnPropertyDescriptor(obj,name);if(!preDesc||!is(preDesc.value,desc.value)||preDesc.get!==desc.get||preDesc.set!==desc.set||preDesc.writable!==desc.writable||preDesc.enumerable!==desc.enumerable||preDesc.configurable!==desc.configurable)throw new TypeError(`Conflicting definitions of ${name}`)}defineProperty(obj,name,desc)}function sampleGlobals(globalObject,newPropertyNames){const newIntrinsics={__proto__:null};for(const[globalName,intrinsicName]of entries(newPropertyNames))objectHasOwnProperty(globalObject,globalName)&&(newIntrinsics[intrinsicName]=globalObject[globalName]);return newIntrinsics}const makeIntrinsicsCollector=()=>{const intrinsics=create(null);let pseudoNatives;const addIntrinsics=newIntrinsics=>{!function(obj,descs){for(const[name,desc]of entries(descs))initProperty(obj,name,desc)}(intrinsics,getOwnPropertyDescriptors(newIntrinsics))};freeze(addIntrinsics);const completePrototypes=()=>{for(const[name,intrinsic]of entries(intrinsics)){if(!isObject(intrinsic))continue;if(!objectHasOwnProperty(intrinsic,"prototype"))continue;const permit=whitelist[name];if("object"!=typeof permit)throw new TypeError(`Expected permit object at whitelist.${name}`);const namePrototype=permit.prototype;if(!namePrototype)throw new TypeError(`${name}.prototype property not whitelisted`);if("string"!=typeof namePrototype||!objectHasOwnProperty(whitelist,namePrototype))throw new TypeError(`Unrecognized ${name}.prototype whitelist entry`);const intrinsicPrototype=intrinsic.prototype;if(objectHasOwnProperty(intrinsics,namePrototype)){if(intrinsics[namePrototype]!==intrinsicPrototype)throw new TypeError(`Conflicting bindings of ${namePrototype}`)}else intrinsics[namePrototype]=intrinsicPrototype}};freeze(completePrototypes);const finalIntrinsics=()=>(freeze(intrinsics),pseudoNatives=new WeakSet(arrayFilter(values(intrinsics),isFunction)),intrinsics);freeze(finalIntrinsics);const isPseudoNative=obj=>{if(!pseudoNatives)throw new TypeError("isPseudoNative can only be called after finalIntrinsics");return weaksetHas(pseudoNatives,obj)};freeze(isPseudoNative);const intrinsicsCollector={addIntrinsics:addIntrinsics,completePrototypes:completePrototypes,finalIntrinsics:finalIntrinsics,isPseudoNative:isPseudoNative};return freeze(intrinsicsCollector),addIntrinsics(constantProperties),addIntrinsics(sampleGlobals(globalThis,universalPropertyNames)),intrinsicsCollector};$h‍_once.makeIntrinsicsCollector(makeIntrinsicsCollector);$h‍_once.getGlobalIntrinsics((globalObject=>{const{addIntrinsics:addIntrinsics,finalIntrinsics:finalIntrinsics}=makeIntrinsicsCollector();return addIntrinsics(sampleGlobals(globalObject,sharedGlobalPropertyNames)),finalIntrinsics()}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);$h‍_once.minEnablements({"%ObjectPrototype%":{toString:!0},"%FunctionPrototype%":{toString:!0},"%ErrorPrototype%":{name:!0}});const moderateEnablements={"%ObjectPrototype%":{toString:!0,valueOf:!0},"%ArrayPrototype%":{toString:!0,push:!0},"%FunctionPrototype%":{constructor:!0,bind:!0,toString:!0},"%ErrorPrototype%":{constructor:!0,message:!0,name:!0,toString:!0},"%TypeErrorPrototype%":{constructor:!0,message:!0,name:!0},"%SyntaxErrorPrototype%":{message:!0,name:!0},"%RangeErrorPrototype%":{message:!0,name:!0},"%URIErrorPrototype%":{message:!0,name:!0},"%EvalErrorPrototype%":{message:!0,name:!0},"%ReferenceErrorPrototype%":{message:!0,name:!0},"%PromisePrototype%":{constructor:!0},"%TypedArrayPrototype%":"*","%Generator%":{constructor:!0,name:!0,toString:!0},"%IteratorPrototype%":{toString:!0}};$h‍_once.moderateEnablements(moderateEnablements);const severeEnablements={...moderateEnablements,"%ObjectPrototype%":"*","%TypedArrayPrototype%":"*","%MapPrototype%":"*","%SetPrototype%":"*"};$h‍_once.severeEnablements(severeEnablements)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Set,String,TypeError,arrayForEach,defineProperty,getOwnPropertyDescriptor,getOwnPropertyDescriptors,getOwnPropertyNames,isObject,objectHasOwnProperty,ownKeys,setHas,minEnablements,moderateEnablements,severeEnablements;$h‍_imports([["./commons.js",[["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayForEach",[$h‍_a=>arrayForEach=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["getOwnPropertyNames",[$h‍_a=>getOwnPropertyNames=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["setHas",[$h‍_a=>setHas=$h‍_a]]]],["./enablements.js",[["minEnablements",[$h‍_a=>minEnablements=$h‍_a]],["moderateEnablements",[$h‍_a=>moderateEnablements=$h‍_a]],["severeEnablements",[$h‍_a=>severeEnablements=$h‍_a]]]]]),$h‍_once.default((function(intrinsics,overrideTaming,overrideDebug=[]){const debugProperties=new Set(overrideDebug);function enable(path,obj,prop,desc){if("value"in desc&&desc.configurable){const{value:value}=desc;function getter(){return value}defineProperty(getter,"originalValue",{value:value,writable:!1,enumerable:!1,configurable:!1});const isDebug=setHas(debugProperties,prop);function setter(newValue){if(obj===this)throw new TypeError(`Cannot assign to read only property '${String(prop)}' of '${path}'`);objectHasOwnProperty(this,prop)?this[prop]=newValue:(isDebug&&console.error(new TypeError(`Override property ${prop}`)),defineProperty(this,prop,{value:newValue,writable:!0,enumerable:!0,configurable:!0}))}defineProperty(obj,prop,{get:getter,set:setter,enumerable:desc.enumerable,configurable:desc.configurable})}}function enableProperty(path,obj,prop){const desc=getOwnPropertyDescriptor(obj,prop);desc&&enable(path,obj,prop,desc)}function enableAllProperties(path,obj){const descs=getOwnPropertyDescriptors(obj);descs&&arrayForEach(ownKeys(descs),(prop=>enable(path,obj,prop,descs[prop])))}let plan;switch(overrideTaming){case"min":plan=minEnablements;break;case"moderate":plan=moderateEnablements;break;case"severe":plan=severeEnablements;break;default:throw new TypeError(`unrecognized overrideTaming ${overrideTaming}`)}!function enableProperties(path,obj,plan){for(const prop of getOwnPropertyNames(plan)){const desc=getOwnPropertyDescriptor(obj,prop);if(!desc||desc.get||desc.set)continue;const subPath=`${path}.${String(prop)}`,subPlan=plan[prop];if(!0===subPlan)enableProperty(subPath,obj,prop);else if("*"===subPlan)enableAllProperties(subPath,desc.value);else{if(!isObject(subPlan))throw new TypeError(`Unexpected override enablement plan ${subPath}`);enableProperties(subPath,desc.value,subPlan)}}}("root",intrinsics,plan)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let arrayPush,freeze,assert;$h‍_imports([["./commons.js",[["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,makeEnvironmentCaptor=aGlobal=>{const capturedEnvironmentOptionNames=[],getEnvironmentOption=(optionName,defaultSetting)=>{"string"==typeof optionName||Fail`Environment option name ${q(optionName)} must be a string.`,"string"==typeof defaultSetting||Fail`Environment option default setting ${q(defaultSetting)} must be a string.`;let setting=defaultSetting;const globalProcess=aGlobal.process;if(globalProcess&&"object"==typeof globalProcess){const globalEnv=globalProcess.env;if(globalEnv&&"object"==typeof globalEnv&&optionName in globalEnv){arrayPush(capturedEnvironmentOptionNames,optionName);const optionValue=globalEnv[optionName];"string"==typeof optionValue||Fail`Environment option named ${q(optionName)}, if present, must have a corresponding string value, got ${q(optionValue)}`,setting=optionValue}}return void 0===setting||"string"==typeof setting||Fail`Environment option value ${q(setting)}, if present, must be a string.`,setting};freeze(getEnvironmentOption);const getCapturedEnvironmentOptionNames=()=>freeze([...capturedEnvironmentOptionNames]);return freeze(getCapturedEnvironmentOptionNames),freeze({getEnvironmentOption:getEnvironmentOption,getCapturedEnvironmentOptionNames:getCapturedEnvironmentOptionNames})};$h‍_once.makeEnvironmentCaptor(makeEnvironmentCaptor),freeze(makeEnvironmentCaptor)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let WeakSet,arrayFilter,arrayMap,arrayPush,defineProperty,freeze,fromEntries,isError,stringEndsWith,weaksetAdd,weaksetHas;$h‍_imports([["../commons.js",[["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["fromEntries",[$h‍_a=>fromEntries=$h‍_a]],["isError",[$h‍_a=>isError=$h‍_a]],["stringEndsWith",[$h‍_a=>stringEndsWith=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]],["./types.js",[]],["./internal-types.js",[]]]);const consoleLevelMethods=freeze([["debug","debug"],["log","log"],["info","info"],["warn","warn"],["error","error"],["trace","log"],["dirxml","log"],["group","log"],["groupCollapsed","log"]]),consoleOtherMethods=freeze([["assert","error"],["timeLog","log"],["clear",void 0],["count","info"],["countReset",void 0],["dir","log"],["groupEnd","log"],["table","log"],["time","info"],["timeEnd","info"],["profile",void 0],["profileEnd",void 0],["timeStamp",void 0]]),consoleWhitelist=freeze([...consoleLevelMethods,...consoleOtherMethods]);$h‍_once.consoleWhitelist(consoleWhitelist);const makeLoggingConsoleKit=(loggedErrorHandler,{shouldResetForDebugging:shouldResetForDebugging=!1}={})=>{shouldResetForDebugging&&loggedErrorHandler.resetErrorTagNum();let logArray=[];const loggingConsole=fromEntries(arrayMap(consoleWhitelist,(([name,_])=>{const method=(...args)=>{arrayPush(logArray,[name,...args])};return defineProperty(method,"name",{value:name}),[name,freeze(method)]})));freeze(loggingConsole);const takeLog=()=>{const result=freeze(logArray);return logArray=[],result};freeze(takeLog);return freeze({loggingConsole:loggingConsole,takeLog:takeLog})};$h‍_once.makeLoggingConsoleKit(makeLoggingConsoleKit),freeze(makeLoggingConsoleKit);const ErrorInfo={NOTE:"ERROR_NOTE:",MESSAGE:"ERROR_MESSAGE:"};freeze(ErrorInfo);const makeCausalConsole=(baseConsole,loggedErrorHandler)=>{const{getStackString:getStackString,tagError:tagError,takeMessageLogArgs:takeMessageLogArgs,takeNoteLogArgsArray:takeNoteLogArgsArray}=loggedErrorHandler,extractErrorArgs=(logArgs,subErrorsSink)=>arrayMap(logArgs,(arg=>isError(arg)?(arrayPush(subErrorsSink,arg),`(${tagError(arg)})`):arg)),logErrorInfo=(severity,error,kind,logArgs,subErrorsSink)=>{const errorTag=tagError(error),errorName=kind===ErrorInfo.MESSAGE?`${errorTag}:`:`${errorTag} ${kind}`,argTags=extractErrorArgs(logArgs,subErrorsSink);baseConsole[severity](errorName,...argTags)},logSubErrors=(severity,subErrors,optTag=undefined)=>{if(0===subErrors.length)return;if(1===subErrors.length&&void 0===optTag)return void logError(severity,subErrors[0]);let label;label=1===subErrors.length?"Nested error":`Nested ${subErrors.length} errors`,void 0!==optTag&&(label=`${label} under ${optTag}`),baseConsole.group(label);try{for(const subError of subErrors)logError(severity,subError)}finally{baseConsole.groupEnd()}},errorsLogged=new WeakSet,logError=(severity,error)=>{if(weaksetHas(errorsLogged,error))return;const errorTag=tagError(error);weaksetAdd(errorsLogged,error);const subErrors=[],messageLogArgs=takeMessageLogArgs(error),noteLogArgsArray=takeNoteLogArgsArray(error,(severity=>(error,noteLogArgs)=>{const subErrors=[];logErrorInfo(severity,error,ErrorInfo.NOTE,noteLogArgs,subErrors),logSubErrors(severity,subErrors,tagError(error))})(severity));void 0===messageLogArgs?baseConsole[severity](`${errorTag}:`,error.message):logErrorInfo(severity,error,ErrorInfo.MESSAGE,messageLogArgs,subErrors);let stackString=getStackString(error);"string"==typeof stackString&&stackString.length>=1&&!stringEndsWith(stackString,"\n")&&(stackString+="\n"),baseConsole[severity](stackString);for(const noteLogArgs of noteLogArgsArray)logErrorInfo(severity,error,ErrorInfo.NOTE,noteLogArgs,subErrors);logSubErrors(severity,subErrors,errorTag)},levelMethods=arrayMap(consoleLevelMethods,(([level,_])=>{const levelMethod=(...logArgs)=>{const subErrors=[],argTags=extractErrorArgs(logArgs,subErrors);baseConsole[level](...argTags),logSubErrors(level,subErrors)};return defineProperty(levelMethod,"name",{value:level}),[level,freeze(levelMethod)]})),otherMethodNames=arrayFilter(consoleOtherMethods,(([name,_])=>name in baseConsole)),otherMethods=arrayMap(otherMethodNames,(([name,_])=>{const otherMethod=(...args)=>{baseConsole[name](...args)};return defineProperty(otherMethod,"name",{value:name}),[name,freeze(otherMethod)]})),causalConsole=fromEntries([...levelMethods,...otherMethods]);return freeze(causalConsole)};$h‍_once.makeCausalConsole(makeCausalConsole),freeze(makeCausalConsole);const filterConsole=(baseConsole,filter,_topic=undefined)=>{const whitelist=arrayFilter(consoleWhitelist,(([name,_])=>name in baseConsole)),methods=arrayMap(whitelist,(([name,severity])=>[name,freeze(((...args)=>{(void 0===severity||filter.canLog(severity))&&baseConsole[name](...args)}))])),filteringConsole=fromEntries(methods);return freeze(filteringConsole)};$h‍_once.filterConsole(filterConsole),freeze(filterConsole)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FinalizationRegistry,Map,mapGet,mapDelete,WeakMap,mapSet,finalizationRegistryRegister,weakmapSet,weakmapGet,mapEntries,mapHas;$h‍_imports([["../commons.js",[["FinalizationRegistry",[$h‍_a=>FinalizationRegistry=$h‍_a]],["Map",[$h‍_a=>Map=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapDelete",[$h‍_a=>mapDelete=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["finalizationRegistryRegister",[$h‍_a=>finalizationRegistryRegister=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["mapEntries",[$h‍_a=>mapEntries=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]]]]]);$h‍_once.makeRejectionHandlers((reportReason=>{if(void 0===FinalizationRegistry)return;let lastReasonId=0;const idToReason=new Map;let cancelChecking;const removeReasonId=reasonId=>{mapDelete(idToReason,reasonId),cancelChecking&&0===idToReason.size&&(cancelChecking(),cancelChecking=void 0)},promiseToReasonId=new WeakMap,promiseToReason=new FinalizationRegistry((heldReasonId=>{if(mapHas(idToReason,heldReasonId)){const reason=mapGet(idToReason,heldReasonId);removeReasonId(heldReasonId),reportReason(reason)}}));return{rejectionHandledHandler:pr=>{const reasonId=weakmapGet(promiseToReasonId,pr);removeReasonId(reasonId)},unhandledRejectionHandler:(reason,pr)=>{lastReasonId+=1;const reasonId=lastReasonId;mapSet(idToReason,reasonId,reason),weakmapSet(promiseToReasonId,pr,reasonId),finalizationRegistryRegister(promiseToReason,pr,reasonId,pr)},processTerminationHandler:()=>{for(const[reasonId,reason]of mapEntries(idToReason))removeReasonId(reasonId),reportReason(reason)}}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,globalThis,defaultHandler,makeCausalConsole,makeRejectionHandlers;$h‍_imports([["../commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]]]],["./assert.js",[["loggedErrorHandler",[$h‍_a=>defaultHandler=$h‍_a]]]],["./console.js",[["makeCausalConsole",[$h‍_a=>makeCausalConsole=$h‍_a]]]],["./unhandled-rejection.js",[["makeRejectionHandlers",[$h‍_a=>makeRejectionHandlers=$h‍_a]]]],["./types.js",[]],["./internal-types.js",[]]]);const originalConsole=console;$h‍_once.tameConsole(((consoleTaming="safe",errorTrapping="platform",unhandledRejectionTrapping="report",optGetStackString=undefined)=>{if("safe"!==consoleTaming&&"unsafe"!==consoleTaming)throw new TypeError(`unrecognized consoleTaming ${consoleTaming}`);let loggedErrorHandler;loggedErrorHandler=void 0===optGetStackString?defaultHandler:{...defaultHandler,getStackString:optGetStackString};const ourConsole="unsafe"===consoleTaming?originalConsole:makeCausalConsole(originalConsole,loggedErrorHandler);if("none"!==errorTrapping&&void 0!==globalThis.process&&globalThis.process.on("uncaughtException",(error=>{ourConsole.error(error),"platform"===errorTrapping||"exit"===errorTrapping?globalThis.process.exit(globalThis.process.exitCode||-1):"abort"===errorTrapping&&globalThis.process.abort()})),"none"!==unhandledRejectionTrapping&&void 0!==globalThis.process){const h=makeRejectionHandlers((reason=>{ourConsole.error("SES_UNHANDLED_REJECTION:",reason)}));h&&(globalThis.process.on("unhandledRejection",h.unhandledRejectionHandler),globalThis.process.on("rejectionHandled",h.rejectionHandledHandler),globalThis.process.on("exit",h.processTerminationHandler))}if("none"!==errorTrapping&&void 0!==globalThis.window&&void 0!==globalThis.window.addEventListener&&globalThis.window.addEventListener("error",(event=>{event.preventDefault(),ourConsole.error(event.error),"exit"!==errorTrapping&&"abort"!==errorTrapping||(globalThis.window.location.href="about:blank")})),"none"!==unhandledRejectionTrapping&&void 0!==globalThis.window&&void 0!==globalThis.window.addEventListener){const h=makeRejectionHandlers((reason=>{ourConsole.error("SES_UNHANDLED_REJECTION:",reason)}));h&&(globalThis.window.addEventListener("unhandledrejection",(event=>{event.preventDefault(),h.unhandledRejectionHandler(event.reason,event.promise)})),globalThis.window.addEventListener("rejectionhandled",(event=>{event.preventDefault(),h.rejectionHandledHandler(event.promise)})),globalThis.window.addEventListener("beforeunload",(_event=>{h.processTerminationHandler()})))}return{console:ourConsole}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let WeakMap,WeakSet,apply,arrayFilter,arrayJoin,arrayMap,arraySlice,create,defineProperties,fromEntries,reflectSet,regexpExec,regexpTest,weakmapGet,weakmapSet,weaksetAdd,weaksetHas;$h‍_imports([["../commons.js",[["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arraySlice",[$h‍_a=>arraySlice=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["fromEntries",[$h‍_a=>fromEntries=$h‍_a]],["reflectSet",[$h‍_a=>reflectSet=$h‍_a]],["regexpExec",[$h‍_a=>regexpExec=$h‍_a]],["regexpTest",[$h‍_a=>regexpTest=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]]]);const safeV8CallSiteMethodNames=["getTypeName","getFunctionName","getMethodName","getFileName","getLineNumber","getColumnNumber","getEvalOrigin","isToplevel","isEval","isNative","isConstructor","isAsync","getPosition","getScriptNameOrSourceURL","toString"],safeV8CallSiteFacet=callSite=>{const o=fromEntries(arrayMap(safeV8CallSiteMethodNames,(name=>{const method=callSite[name];return[name,()=>apply(method,callSite,[])]})));return create(o,{})},FILENAME_CENSORS=[/\/node_modules\//,/^(?:node:)?internal\//,/\/packages\/ses\/src\/error\/assert.js$/,/\/packages\/eventual-send\/src\//],filterFileName=fileName=>{if(!fileName)return!0;for(const filter of FILENAME_CENSORS)if(regexpTest(filter,fileName))return!1;return!0};$h‍_once.filterFileName(filterFileName);const CALLSITE_PATTERNS=[/^((?:.*[( ])?)[:/\w_-]*\/\.\.\.\/(.+)$/,/^((?:.*[( ])?)[:/\w_-]*\/(packages\/.+)$/],shortenCallSiteString=callSiteString=>{for(const filter of CALLSITE_PATTERNS){const match=regexpExec(filter,callSiteString);if(match)return arrayJoin(arraySlice(match,1),"")}return callSiteString};$h‍_once.shortenCallSiteString(shortenCallSiteString);$h‍_once.tameV8ErrorConstructor(((OriginalError,InitialError,errorTaming,stackFiltering)=>{const originalCaptureStackTrace=OriginalError.captureStackTrace,callSiteFilter=callSite=>"verbose"===stackFiltering||filterFileName(callSite.getFileName()),callSiteStringifier=callSite=>{let callSiteString=`${callSite}`;return"concise"===stackFiltering&&(callSiteString=shortenCallSiteString(callSiteString)),`\n at ${callSiteString}`},stackStringFromSST=(_error,sst)=>arrayJoin(arrayMap(arrayFilter(sst,callSiteFilter),callSiteStringifier),""),stackInfos=new WeakMap,tamedMethods={captureStackTrace(error,optFn=tamedMethods.captureStackTrace){"function"!=typeof originalCaptureStackTrace?reflectSet(error,"stack",""):apply(originalCaptureStackTrace,OriginalError,[error,optFn])},getStackString(error){let stackInfo=weakmapGet(stackInfos,error);if(void 0===stackInfo&&(error.stack,stackInfo=weakmapGet(stackInfos,error),stackInfo||(stackInfo={stackString:""},weakmapSet(stackInfos,error,stackInfo))),void 0!==stackInfo.stackString)return stackInfo.stackString;const stackString=stackStringFromSST(0,stackInfo.callSites);return weakmapSet(stackInfos,error,{stackString:stackString}),stackString},prepareStackTrace(error,sst){if("unsafe"===errorTaming){const stackString=stackStringFromSST(0,sst);return weakmapSet(stackInfos,error,{stackString:stackString}),`${error}${stackString}`}return weakmapSet(stackInfos,error,{callSites:sst}),""}},defaultPrepareFn=tamedMethods.prepareStackTrace;OriginalError.prepareStackTrace=defaultPrepareFn;const systemPrepareFnSet=new WeakSet([defaultPrepareFn]),systemPrepareFnFor=inputPrepareFn=>{if(weaksetHas(systemPrepareFnSet,inputPrepareFn))return inputPrepareFn;const systemMethods={prepareStackTrace:(error,sst)=>(weakmapSet(stackInfos,error,{callSites:sst}),inputPrepareFn(error,(sst=>arrayMap(sst,safeV8CallSiteFacet))(sst)))};return weaksetAdd(systemPrepareFnSet,systemMethods.prepareStackTrace),systemMethods.prepareStackTrace};return defineProperties(InitialError,{captureStackTrace:{value:tamedMethods.captureStackTrace,writable:!0,enumerable:!1,configurable:!0},prepareStackTrace:{get:()=>OriginalError.prepareStackTrace,set(inputPrepareStackTraceFn){if("function"==typeof inputPrepareStackTraceFn){const systemPrepareFn=systemPrepareFnFor(inputPrepareStackTraceFn);OriginalError.prepareStackTrace=systemPrepareFn}else OriginalError.prepareStackTrace=defaultPrepareFn},enumerable:!1,configurable:!0}}),tamedMethods.getStackString}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_ERROR,TypeError,apply,construct,defineProperties,setPrototypeOf,getOwnPropertyDescriptor,defineProperty,NativeErrors,tameV8ErrorConstructor;$h‍_imports([["../commons.js",[["FERAL_ERROR",[$h‍_a=>FERAL_ERROR=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["construct",[$h‍_a=>construct=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["setPrototypeOf",[$h‍_a=>setPrototypeOf=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]]]],["../whitelist.js",[["NativeErrors",[$h‍_a=>NativeErrors=$h‍_a]]]],["./tame-v8-error-constructor.js",[["tameV8ErrorConstructor",[$h‍_a=>tameV8ErrorConstructor=$h‍_a]]]]]);const stackDesc=getOwnPropertyDescriptor(FERAL_ERROR.prototype,"stack"),stackGetter=stackDesc&&stackDesc.get,tamedMethods={getStackString:error=>"function"==typeof stackGetter?apply(stackGetter,error,[]):"stack"in error?`${error.stack}`:""};$h‍_once.default((function(errorTaming="safe",stackFiltering="concise"){if("safe"!==errorTaming&&"unsafe"!==errorTaming)throw new TypeError(`unrecognized errorTaming ${errorTaming}`);if("concise"!==stackFiltering&&"verbose"!==stackFiltering)throw new TypeError(`unrecognized stackFiltering ${stackFiltering}`);const ErrorPrototype=FERAL_ERROR.prototype,platform="function"==typeof FERAL_ERROR.captureStackTrace?"v8":"unknown",{captureStackTrace:originalCaptureStackTrace}=FERAL_ERROR,makeErrorConstructor=(_={})=>{const ResultError=function(...rest){let error;return error=void 0===new.target?apply(FERAL_ERROR,this,rest):construct(FERAL_ERROR,rest,new.target),"v8"===platform&&apply(originalCaptureStackTrace,FERAL_ERROR,[error,ResultError]),error};return defineProperties(ResultError,{length:{value:1},prototype:{value:ErrorPrototype,writable:!1,enumerable:!1,configurable:!1}}),ResultError},InitialError=makeErrorConstructor({powers:"original"}),SharedError=makeErrorConstructor({powers:"none"});defineProperties(ErrorPrototype,{constructor:{value:SharedError}});for(const NativeError of NativeErrors)setPrototypeOf(NativeError,SharedError);defineProperties(InitialError,{stackTraceLimit:{get(){if("number"==typeof FERAL_ERROR.stackTraceLimit)return FERAL_ERROR.stackTraceLimit},set(newLimit){"number"==typeof newLimit&&("number"!=typeof FERAL_ERROR.stackTraceLimit||(FERAL_ERROR.stackTraceLimit=newLimit))},enumerable:!1,configurable:!0}}),defineProperties(SharedError,{stackTraceLimit:{get(){},set(_newLimit){},enumerable:!1,configurable:!0}}),"v8"===platform&&defineProperties(SharedError,{prepareStackTrace:{get:()=>()=>"",set(_prepareFn){},enumerable:!1,configurable:!0},captureStackTrace:{value:(errorish,_constructorOpt)=>{defineProperty(errorish,"stack",{value:""})},writable:!1,enumerable:!1,configurable:!0}});let initialGetStackString=tamedMethods.getStackString;return"v8"===platform?initialGetStackString=tameV8ErrorConstructor(FERAL_ERROR,InitialError,errorTaming,stackFiltering):defineProperties(ErrorPrototype,"unsafe"===errorTaming?{stack:{get(){return initialGetStackString(this)},set(newValue){defineProperties(this,{stack:{value:newValue,writable:!0,enumerable:!0,configurable:!0}})}}}:{stack:{get(){return`${this}`},set(newValue){defineProperties(this,{stack:{value:newValue,writable:!0,enumerable:!0,configurable:!0}})}}}),{"%InitialGetStackString%":initialGetStackString,"%InitialError%":InitialError,"%SharedError%":SharedError}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,Float32Array,Map,Set,String,getOwnPropertyDescriptor,getPrototypeOf,iterateArray,iterateMap,iterateSet,iterateString,matchAllRegExp,matchAllSymbol,regexpPrototype,InertCompartment;function getConstructorOf(obj){return getPrototypeOf(obj).constructor}$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["Float32Array",[$h‍_a=>Float32Array=$h‍_a]],["Map",[$h‍_a=>Map=$h‍_a]],["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["iterateArray",[$h‍_a=>iterateArray=$h‍_a]],["iterateMap",[$h‍_a=>iterateMap=$h‍_a]],["iterateSet",[$h‍_a=>iterateSet=$h‍_a]],["iterateString",[$h‍_a=>iterateString=$h‍_a]],["matchAllRegExp",[$h‍_a=>matchAllRegExp=$h‍_a]],["matchAllSymbol",[$h‍_a=>matchAllSymbol=$h‍_a]],["regexpPrototype",[$h‍_a=>regexpPrototype=$h‍_a]]]],["./compartment-shim.js",[["InertCompartment",[$h‍_a=>InertCompartment=$h‍_a]]]]]);$h‍_once.getAnonymousIntrinsics((()=>{const InertFunction=FERAL_FUNCTION.prototype.constructor,argsCalleeDesc=getOwnPropertyDescriptor(function(){return arguments}(),"callee"),ThrowTypeError=argsCalleeDesc&&argsCalleeDesc.get,StringIteratorObject=iterateString(new String),StringIteratorPrototype=getPrototypeOf(StringIteratorObject),RegExpStringIterator=regexpPrototype[matchAllSymbol]&&matchAllRegExp(/./),RegExpStringIteratorPrototype=RegExpStringIterator&&getPrototypeOf(RegExpStringIterator),ArrayIteratorObject=iterateArray([]),ArrayIteratorPrototype=getPrototypeOf(ArrayIteratorObject),TypedArray=getPrototypeOf(Float32Array),MapIteratorObject=iterateMap(new Map),MapIteratorPrototype=getPrototypeOf(MapIteratorObject),SetIteratorObject=iterateSet(new Set),SetIteratorPrototype=getPrototypeOf(SetIteratorObject),IteratorPrototype=getPrototypeOf(ArrayIteratorPrototype);const GeneratorFunction=getConstructorOf((function*(){})),Generator=GeneratorFunction.prototype;const AsyncGeneratorFunction=getConstructorOf((async function*(){})),AsyncGenerator=AsyncGeneratorFunction.prototype,AsyncGeneratorPrototype=AsyncGenerator.prototype,AsyncIteratorPrototype=getPrototypeOf(AsyncGeneratorPrototype);return{"%InertFunction%":InertFunction,"%ArrayIteratorPrototype%":ArrayIteratorPrototype,"%InertAsyncFunction%":getConstructorOf((async function(){})),"%AsyncGenerator%":AsyncGenerator,"%InertAsyncGeneratorFunction%":AsyncGeneratorFunction,"%AsyncGeneratorPrototype%":AsyncGeneratorPrototype,"%AsyncIteratorPrototype%":AsyncIteratorPrototype,"%Generator%":Generator,"%InertGeneratorFunction%":GeneratorFunction,"%IteratorPrototype%":IteratorPrototype,"%MapIteratorPrototype%":MapIteratorPrototype,"%RegExpStringIteratorPrototype%":RegExpStringIteratorPrototype,"%SetIteratorPrototype%":SetIteratorPrototype,"%StringIteratorPrototype%":StringIteratorPrototype,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%InertCompartment%":InertCompartment}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Set,String,TypeError,WeakMap,WeakSet,globalThis,apply,arrayForEach,defineProperty,freeze,getOwnPropertyDescriptor,getOwnPropertyDescriptors,getPrototypeOf,isInteger,isObject,objectHasOwnProperty,ownKeys,preventExtensions,setAdd,setForEach,setHas,toStringTagSymbol,typedArrayPrototype,weakmapGet,weakmapSet,weaksetAdd,weaksetHas,assert;$h‍_imports([["./commons.js",[["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["arrayForEach",[$h‍_a=>arrayForEach=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["isInteger",[$h‍_a=>isInteger=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["preventExtensions",[$h‍_a=>preventExtensions=$h‍_a]],["setAdd",[$h‍_a=>setAdd=$h‍_a]],["setForEach",[$h‍_a=>setForEach=$h‍_a]],["setHas",[$h‍_a=>setHas=$h‍_a]],["toStringTagSymbol",[$h‍_a=>toStringTagSymbol=$h‍_a]],["typedArrayPrototype",[$h‍_a=>typedArrayPrototype=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const typedArrayToStringTag=getOwnPropertyDescriptor(typedArrayPrototype,toStringTagSymbol);assert(typedArrayToStringTag);const getTypedArrayToStringTag=typedArrayToStringTag.get;assert(getTypedArrayToStringTag);const isTypedArray=object=>void 0!==apply(getTypedArrayToStringTag,object,[]);$h‍_once.isTypedArray(isTypedArray);const freezeTypedArray=array=>{preventExtensions(array),arrayForEach(ownKeys(array),(name=>{const desc=getOwnPropertyDescriptor(array,name);assert(desc),(propertyKey=>{const n=+String(propertyKey);return isInteger(n)&&String(n)===propertyKey})(name)||defineProperty(array,name,{...desc,writable:!1,configurable:!1})}))};$h‍_once.makeHardener((()=>{if("function"==typeof globalThis.harden){return globalThis.harden}const hardened=new WeakSet,{harden:harden}={harden(root){const toFreeze=new Set,paths=new WeakMap;function enqueue(val,path=undefined){if(!isObject(val))return;const type=typeof val;if("object"!==type&&"function"!==type)throw new TypeError(`Unexpected typeof: ${type}`);weaksetHas(hardened,val)||setHas(toFreeze,val)||(setAdd(toFreeze,val),weakmapSet(paths,val,path))}function freezeAndTraverse(obj){isTypedArray(obj)?freezeTypedArray(obj):freeze(obj);const path=weakmapGet(paths,obj)||"unknown",descs=getOwnPropertyDescriptors(obj);enqueue(getPrototypeOf(obj),`${path}.__proto__`),arrayForEach(ownKeys(descs),(name=>{const pathname=`${path}.${String(name)}`,desc=descs[name];objectHasOwnProperty(desc,"value")?enqueue(desc.value,`${pathname}`):(enqueue(desc.get,`${pathname}(get)`),enqueue(desc.set,`${pathname}(set)`))}))}function markHardened(value){weaksetAdd(hardened,value)}return enqueue(root),setForEach(toFreeze,freezeAndTraverse),setForEach(toFreeze,markHardened),root}};return harden}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Date,TypeError,apply,construct,defineProperties;$h‍_imports([["./commons.js",[["Date",[$h‍_a=>Date=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["construct",[$h‍_a=>construct=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]]]]]),$h‍_once.default((function(dateTaming="safe"){if("safe"!==dateTaming&&"unsafe"!==dateTaming)throw new TypeError(`unrecognized dateTaming ${dateTaming}`);const OriginalDate=Date,DatePrototype=OriginalDate.prototype,tamedMethods={now:()=>NaN},makeDateConstructor=({powers:powers="none"}={})=>{let ResultDate;return ResultDate="original"===powers?function(...rest){return void 0===new.target?apply(OriginalDate,void 0,rest):construct(OriginalDate,rest,new.target)}:function(...rest){return void 0===new.target?"Invalid Date":(0===rest.length&&(rest=[NaN]),construct(OriginalDate,rest,new.target))},defineProperties(ResultDate,{length:{value:7},prototype:{value:DatePrototype,writable:!1,enumerable:!1,configurable:!1},parse:{value:Date.parse,writable:!0,enumerable:!1,configurable:!0},UTC:{value:Date.UTC,writable:!0,enumerable:!1,configurable:!0}}),ResultDate},InitialDate=makeDateConstructor({powers:"original"}),SharedDate=makeDateConstructor({powers:"none"});return defineProperties(InitialDate,{now:{value:Date.now,writable:!0,enumerable:!1,configurable:!0}}),defineProperties(SharedDate,{now:{value:tamedMethods.now,writable:!0,enumerable:!1,configurable:!0}}),defineProperties(DatePrototype,{constructor:{value:SharedDate}}),{"%InitialDate%":InitialDate,"%SharedDate%":SharedDate}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,globalThis,getOwnPropertyDescriptor,defineProperty;function tameDomains(domainTaming="safe"){if("safe"!==domainTaming&&"unsafe"!==domainTaming)throw new TypeError(`unrecognized domainTaming ${domainTaming}`);if("unsafe"!==domainTaming&&"object"==typeof globalThis.process&&null!==globalThis.process){const domainDescriptor=getOwnPropertyDescriptor(globalThis.process,"domain");if(void 0!==domainDescriptor&&void 0!==domainDescriptor.get)throw new TypeError("SES failed to lockdown, Node.js domains have been initialized (SES_NO_DOMAINS)");defineProperty(globalThis.process,"domain",{value:null,configurable:!1,writable:!1,enumerable:!1})}}$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]]]]]),Object.defineProperty(tameDomains,"name",{value:"tameDomains"}),$h‍_once.tameDomains(tameDomains)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,SyntaxError,TypeError,defineProperties,getPrototypeOf,setPrototypeOf,freeze;$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["SyntaxError",[$h‍_a=>SyntaxError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["setPrototypeOf",[$h‍_a=>setPrototypeOf=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]]]),$h‍_once.default((function(){try{FERAL_FUNCTION.prototype.constructor("return 1")}catch(ignore){return freeze({})}const newIntrinsics={};function repairFunction(name,intrinsicName,declaration){let FunctionInstance;try{FunctionInstance=(0,eval)(declaration)}catch(e){if(e instanceof SyntaxError)return;throw e}const FunctionPrototype=getPrototypeOf(FunctionInstance),InertConstructor=function(){throw new TypeError("Function.prototype.constructor is not a valid constructor.")};defineProperties(InertConstructor,{prototype:{value:FunctionPrototype},name:{value:name,writable:!1,enumerable:!1,configurable:!0}}),defineProperties(FunctionPrototype,{constructor:{value:InertConstructor}}),InertConstructor!==FERAL_FUNCTION.prototype.constructor&&setPrototypeOf(InertConstructor,FERAL_FUNCTION.prototype.constructor),newIntrinsics[intrinsicName]=InertConstructor}return repairFunction("Function","%InertFunction%","(function(){})"),repairFunction("GeneratorFunction","%InertGeneratorFunction%","(function*(){})"),repairFunction("AsyncFunction","%InertAsyncFunction%","(async function(){})"),repairFunction("AsyncGeneratorFunction","%InertAsyncGeneratorFunction%","(async function*(){})"),newIntrinsics}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let WeakSet,defineProperty,freeze,functionPrototype,functionToString,stringEndsWith,weaksetAdd,weaksetHas;$h‍_imports([["./commons.js",[["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["functionPrototype",[$h‍_a=>functionPrototype=$h‍_a]],["functionToString",[$h‍_a=>functionToString=$h‍_a]],["stringEndsWith",[$h‍_a=>stringEndsWith=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]]]);let markVirtualizedNativeFunction;$h‍_once.tameFunctionToString((()=>{if(void 0===markVirtualizedNativeFunction){const virtualizedNativeFunctions=new WeakSet;defineProperty(functionPrototype,"toString",{value:{toString(){const str=functionToString(this);return stringEndsWith(str,") { [native code] }")||!weaksetHas(virtualizedNativeFunctions,this)?str:`function ${this.name}() { [native code] }`}}.toString}),markVirtualizedNativeFunction=freeze((func=>weaksetAdd(virtualizedNativeFunctions,func)))}return markVirtualizedNativeFunction}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,freeze;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]]]);const tameHarden=(safeHarden,hardenTaming)=>{if("safe"!==hardenTaming&&"unsafe"!==hardenTaming)throw new TypeError(`unrecognized fakeHardenOption ${hardenTaming}`);if("safe"===hardenTaming)return safeHarden;if(Object.isExtensible=()=>!1,Object.isFrozen=()=>!0,Object.isSealed=()=>!0,Reflect.isExtensible=()=>!1,safeHarden.isFake)return safeHarden;const fakeHarden=arg=>arg;return fakeHarden.isFake=!0,freeze(fakeHarden)};$h‍_once.tameHarden(tameHarden),freeze(tameHarden)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Number,String,TypeError,defineProperty,getOwnPropertyNames,isObject,regexpExec,assert;$h‍_imports([["./commons.js",[["Number",[$h‍_a=>Number=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["getOwnPropertyNames",[$h‍_a=>getOwnPropertyNames=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["regexpExec",[$h‍_a=>regexpExec=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,localePattern=/^(\w*[a-z])Locale([A-Z]\w*)$/,tamedMethods={localeCompare(arg){if(null==this)throw new TypeError('Cannot localeCompare with null or undefined "this" value');const s=`${this}`,that=`${arg}`;return sthat?1:(s===that||Fail`expected ${q(s)} and ${q(that)} to compare`,0)},toString(){return`${this}`}},nonLocaleCompare=tamedMethods.localeCompare,numberToString=tamedMethods.toString;$h‍_once.default((function(intrinsics,localeTaming="safe"){if("safe"!==localeTaming&&"unsafe"!==localeTaming)throw new TypeError(`unrecognized localeTaming ${localeTaming}`);if("unsafe"!==localeTaming){defineProperty(String.prototype,"localeCompare",{value:nonLocaleCompare});for(const intrinsicName of getOwnPropertyNames(intrinsics)){const intrinsic=intrinsics[intrinsicName];if(isObject(intrinsic))for(const methodName of getOwnPropertyNames(intrinsic)){const match=regexpExec(localePattern,methodName);if(match){"function"==typeof intrinsic[methodName]||Fail`expected ${q(methodName)} to be a function`;const nonLocaleMethodName=`${match[1]}${match[2]}`,method=intrinsic[nonLocaleMethodName];"function"==typeof method||Fail`function ${q(nonLocaleMethodName)} not found`,defineProperty(intrinsic,methodName,{value:method})}}}defineProperty(Number.prototype,"toLocaleString",{value:numberToString})}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Math,TypeError,create,getOwnPropertyDescriptors,objectPrototype;$h‍_imports([["./commons.js",[["Math",[$h‍_a=>Math=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["objectPrototype",[$h‍_a=>objectPrototype=$h‍_a]]]]]),$h‍_once.default((function(mathTaming="safe"){if("safe"!==mathTaming&&"unsafe"!==mathTaming)throw new TypeError(`unrecognized mathTaming ${mathTaming}`);const originalMath=Math,initialMath=originalMath,{random:_,...otherDescriptors}=getOwnPropertyDescriptors(originalMath);return{"%InitialMath%":initialMath,"%SharedMath%":create(objectPrototype,otherDescriptors)}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_REG_EXP,TypeError,construct,defineProperties,getOwnPropertyDescriptor,speciesSymbol;$h‍_imports([["./commons.js",[["FERAL_REG_EXP",[$h‍_a=>FERAL_REG_EXP=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["construct",[$h‍_a=>construct=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["speciesSymbol",[$h‍_a=>speciesSymbol=$h‍_a]]]]]),$h‍_once.default((function(regExpTaming="safe"){if("safe"!==regExpTaming&&"unsafe"!==regExpTaming)throw new TypeError(`unrecognized regExpTaming ${regExpTaming}`);const RegExpPrototype=FERAL_REG_EXP.prototype,makeRegExpConstructor=(_={})=>{const ResultRegExp=function(...rest){return void 0===new.target?FERAL_REG_EXP(...rest):construct(FERAL_REG_EXP,rest,new.target)},speciesDesc=getOwnPropertyDescriptor(FERAL_REG_EXP,speciesSymbol);if(!speciesDesc)throw new TypeError("no RegExp[Symbol.species] descriptor");return defineProperties(ResultRegExp,{length:{value:2},prototype:{value:RegExpPrototype,writable:!1,enumerable:!1,configurable:!1},[speciesSymbol]:speciesDesc}),ResultRegExp},InitialRegExp=makeRegExpConstructor(),SharedRegExp=makeRegExpConstructor();return"unsafe"!==regExpTaming&&delete RegExpPrototype.compile,defineProperties(RegExpPrototype,{constructor:{value:SharedRegExp}}),{"%InitialRegExp%":InitialRegExp,"%SharedRegExp%":SharedRegExp}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Symbol,entries,fromEntries,getOwnPropertyDescriptors,defineProperties,arrayMap;$h‍_imports([["./commons.js",[["Symbol",[$h‍_a=>Symbol=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["fromEntries",[$h‍_a=>fromEntries=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]]]]]);$h‍_once.tameSymbolConstructor((()=>{const OriginalSymbol=Symbol,SymbolPrototype=OriginalSymbol.prototype,SharedSymbol=description=>OriginalSymbol(description);defineProperties(SymbolPrototype,{constructor:{value:SharedSymbol}});const originalDescsEntries=entries(getOwnPropertyDescriptors(OriginalSymbol)),descs=fromEntries(arrayMap(originalDescsEntries,(([name,desc])=>[name,{...desc,configurable:!0}])));return defineProperties(SharedSymbol,descs),SharedSymbol}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let whitelist,FunctionInstance,isAccessorPermit,Map,String,TypeError,arrayFilter,arrayIncludes,arrayMap,entries,getOwnPropertyDescriptor,getPrototypeOf,isObject,mapGet,objectHasOwnProperty,ownKeys,symbolKeyFor;$h‍_imports([["./whitelist.js",[["whitelist",[$h‍_a=>whitelist=$h‍_a]],["FunctionInstance",[$h‍_a=>FunctionInstance=$h‍_a]],["isAccessorPermit",[$h‍_a=>isAccessorPermit=$h‍_a]]]],["./commons.js",[["Map",[$h‍_a=>Map=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayIncludes",[$h‍_a=>arrayIncludes=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["symbolKeyFor",[$h‍_a=>symbolKeyFor=$h‍_a]]]]]),$h‍_once.default((function(intrinsics,markVirtualizedNativeFunction){const primitives=["undefined","boolean","number","string","symbol"],wellKnownSymbolNames=new Map(intrinsics.Symbol?arrayMap(arrayFilter(entries(whitelist.Symbol),(([name,permit])=>"symbol"===permit&&"symbol"==typeof intrinsics.Symbol[name])),(([name])=>[intrinsics.Symbol[name],`@@${name}`])):[]);function asStringPropertyName(path,prop){if("string"==typeof prop)return prop;const wellKnownSymbol=mapGet(wellKnownSymbolNames,prop);if("symbol"==typeof prop){if(wellKnownSymbol)return wellKnownSymbol;{const registeredKey=symbolKeyFor(prop);return void 0!==registeredKey?`RegisteredSymbol(${registeredKey})`:`Unique${String(prop)}`}}throw new TypeError(`Unexpected property name type ${path} ${prop}`)}function isAllowedPropertyValue(path,value,prop,permit){if("object"==typeof permit)return visitProperties(path,value,permit),!0;if(!1===permit)return!1;if("string"==typeof permit)if("prototype"===prop||"constructor"===prop){if(objectHasOwnProperty(intrinsics,permit)){if(value!==intrinsics[permit])throw new TypeError(`Does not match whitelist ${path}`);return!0}}else if(arrayIncludes(primitives,permit)){if(typeof value!==permit)throw new TypeError(`At ${path} expected ${permit} not ${typeof value}`);return!0}throw new TypeError(`Unexpected whitelist permit ${permit} at ${path}`)}function isAllowedProperty(path,obj,prop,permit){const desc=getOwnPropertyDescriptor(obj,prop);if(!desc)throw new TypeError(`Property ${prop} not found at ${path}`);if(objectHasOwnProperty(desc,"value")){if(isAccessorPermit(permit))throw new TypeError(`Accessor expected at ${path}`);return isAllowedPropertyValue(path,desc.value,prop,permit)}if(!isAccessorPermit(permit))throw new TypeError(`Accessor not expected at ${path}`);return isAllowedPropertyValue(`${path}`,desc.get,prop,permit.get)&&isAllowedPropertyValue(`${path}`,desc.set,prop,permit.set)}function getSubPermit(obj,permit,prop){const permitProp="__proto__"===prop?"--proto--":prop;return objectHasOwnProperty(permit,permitProp)?permit[permitProp]:"function"==typeof obj&&(markVirtualizedNativeFunction(obj),objectHasOwnProperty(FunctionInstance,permitProp))?FunctionInstance[permitProp]:void 0}function visitProperties(path,obj,permit){if(void 0===obj)return;!function(path,obj,protoName){if(!isObject(obj))throw new TypeError(`Object expected: ${path}, ${obj}, ${protoName}`);const proto=getPrototypeOf(obj);if(null!==proto||null!==protoName){if(void 0!==protoName&&"string"!=typeof protoName)throw new TypeError(`Malformed whitelist permit ${path}.__proto__`);if(proto!==intrinsics[protoName||"%ObjectPrototype%"])throw new TypeError(`Unexpected intrinsic ${path}.__proto__ at ${protoName}`)}}(path,obj,permit["[[Proto]]"]);for(const prop of ownKeys(obj)){const propString=asStringPropertyName(path,prop),subPath=`${path}.${propString}`,subPermit=getSubPermit(obj,permit,propString);if(!subPermit||!isAllowedProperty(subPath,obj,prop,subPermit)){!1!==subPermit&&console.warn(`Removing ${subPath}`);try{delete obj[prop]}catch(err){if(prop in obj){if("function"==typeof obj&&"prototype"===prop&&(obj.prototype=void 0,void 0===obj.prototype)){console.warn(`Tolerating undeletable ${subPath} === undefined`);continue}console.error(`failed to delete ${subPath}`,err)}else console.error(`deleting ${subPath} threw`,err);throw err}}}}visitProperties("intrinsics",intrinsics,whitelist)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden,tameSymbolConstructor;$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["FERAL_EVAL",[$h‍_a=>FERAL_EVAL=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["stringSplit",[$h‍_a=>stringSplit=$h‍_a]],["noEvalEvaluate",[$h‍_a=>noEvalEvaluate=$h‍_a]]]],["./error/stringify-utils.js",[["enJoin",[$h‍_a=>enJoin=$h‍_a]]]],["./make-hardener.js",[["makeHardener",[$h‍_a=>makeHardener=$h‍_a]]]],["./intrinsics.js",[["makeIntrinsicsCollector",[$h‍_a=>makeIntrinsicsCollector=$h‍_a]]]],["./whitelist-intrinsics.js",[["default",[$h‍_a=>whitelistIntrinsics=$h‍_a]]]],["./tame-function-constructors.js",[["default",[$h‍_a=>tameFunctionConstructors=$h‍_a]]]],["./tame-date-constructor.js",[["default",[$h‍_a=>tameDateConstructor=$h‍_a]]]],["./tame-math-object.js",[["default",[$h‍_a=>tameMathObject=$h‍_a]]]],["./tame-regexp-constructor.js",[["default",[$h‍_a=>tameRegExpConstructor=$h‍_a]]]],["./enable-property-overrides.js",[["default",[$h‍_a=>enablePropertyOverrides=$h‍_a]]]],["./tame-locale-methods.js",[["default",[$h‍_a=>tameLocaleMethods=$h‍_a]]]],["./global-object.js",[["setGlobalObjectConstantProperties",[$h‍_a=>setGlobalObjectConstantProperties=$h‍_a]],["setGlobalObjectMutableProperties",[$h‍_a=>setGlobalObjectMutableProperties=$h‍_a]],["setGlobalObjectEvaluators",[$h‍_a=>setGlobalObjectEvaluators=$h‍_a]]]],["./make-safe-evaluator.js",[["makeSafeEvaluator",[$h‍_a=>makeSafeEvaluator=$h‍_a]]]],["./whitelist.js",[["initialGlobalPropertyNames",[$h‍_a=>initialGlobalPropertyNames=$h‍_a]]]],["./tame-function-tostring.js",[["tameFunctionToString",[$h‍_a=>tameFunctionToString=$h‍_a]]]],["./tame-domains.js",[["tameDomains",[$h‍_a=>tameDomains=$h‍_a]]]],["./error/tame-console.js",[["tameConsole",[$h‍_a=>tameConsole=$h‍_a]]]],["./error/tame-error-constructor.js",[["default",[$h‍_a=>tameErrorConstructor=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]],["makeAssert",[$h‍_a=>makeAssert=$h‍_a]]]],["./environment-options.js",[["makeEnvironmentCaptor",[$h‍_a=>makeEnvironmentCaptor=$h‍_a]]]],["./get-anonymous-intrinsics.js",[["getAnonymousIntrinsics",[$h‍_a=>getAnonymousIntrinsics=$h‍_a]]]],["./compartment-shim.js",[["makeCompartmentConstructor",[$h‍_a=>makeCompartmentConstructor=$h‍_a]]]],["./tame-harden.js",[["tameHarden",[$h‍_a=>tameHarden=$h‍_a]]]],["./tame-symbol-constructor.js",[["tameSymbolConstructor",[$h‍_a=>tameSymbolConstructor=$h‍_a]]]]]);const{Fail:Fail,details:d,quote:q}=assert;let priorLockdown;const safeHarden=makeHardener(),repairIntrinsics=(options={})=>{const{getEnvironmentOption:getenv,getCapturedEnvironmentOptionNames:getCapturedEnvironmentOptionNames}=makeEnvironmentCaptor(globalThis),{errorTaming:errorTaming=getenv("LOCKDOWN_ERROR_TAMING","safe"),errorTrapping:errorTrapping=getenv("LOCKDOWN_ERROR_TRAPPING","platform"),unhandledRejectionTrapping:unhandledRejectionTrapping=getenv("LOCKDOWN_UNHANDLED_REJECTION_TRAPPING","report"),regExpTaming:regExpTaming=getenv("LOCKDOWN_REGEXP_TAMING","safe"),localeTaming:localeTaming=getenv("LOCKDOWN_LOCALE_TAMING","safe"),consoleTaming:consoleTaming=getenv("LOCKDOWN_CONSOLE_TAMING","safe"),overrideTaming:overrideTaming=getenv("LOCKDOWN_OVERRIDE_TAMING","moderate"),stackFiltering:stackFiltering=getenv("LOCKDOWN_STACK_FILTERING","concise"),domainTaming:domainTaming=getenv("LOCKDOWN_DOMAIN_TAMING","safe"),evalTaming:evalTaming=getenv("LOCKDOWN_EVAL_TAMING","safeEval"),overrideDebug:overrideDebug=arrayFilter(stringSplit(getenv("LOCKDOWN_OVERRIDE_DEBUG",""),","),(debugName=>""!==debugName)),__hardenTaming__:__hardenTaming__=getenv("LOCKDOWN_HARDEN_TAMING","safe"),dateTaming:dateTaming="safe",mathTaming:mathTaming="safe",...extraOptions}=options,capturedEnvironmentOptionNames=getCapturedEnvironmentOptionNames();capturedEnvironmentOptionNames.length>0&&console.warn(`SES Lockdown using options from environment variables ${enJoin(arrayMap(capturedEnvironmentOptionNames,q),"and")}`),"unsafeEval"===evalTaming||"safeEval"===evalTaming||"noEval"===evalTaming||Fail`lockdown(): non supported option evalTaming: ${q(evalTaming)}`;const extraOptionsNames=ownKeys(extraOptions);0===extraOptionsNames.length||Fail`lockdown(): non supported option ${q(extraOptionsNames)}`,void 0===priorLockdown||assert.fail(d`Already locked down at ${priorLockdown} (SES_ALREADY_LOCKED_DOWN)`,TypeError),priorLockdown=new TypeError("Prior lockdown (SES_ALREADY_LOCKED_DOWN)"),priorLockdown.stack,(()=>{let allowed=!1;try{allowed=FERAL_FUNCTION("eval","SES_changed",' eval("SES_changed = true");\n return SES_changed;\n ')(FERAL_EVAL,!1),allowed||delete globalThis.SES_changed}catch(_error){allowed=!0}if(!allowed)throw new TypeError("SES cannot initialize unless 'eval' is the original intrinsic 'eval', suitable for direct-eval (dynamically scoped eval) (SES_DIRECT_EVAL)")})();if(globalThis.Function.prototype.constructor!==globalThis.Function&&"function"==typeof globalThis.harden&&"function"==typeof globalThis.lockdown&&globalThis.Date.prototype.constructor!==globalThis.Date&&"function"==typeof globalThis.Date.now&&is(globalThis.Date.prototype.constructor.now(),NaN))throw new TypeError("Already locked down but not by this SES instance (SES_MULTIPLE_INSTANCES)");tameDomains(domainTaming);const SharedSymbol=tameSymbolConstructor();globalThis.Symbol=SharedSymbol;const{addIntrinsics:addIntrinsics,completePrototypes:completePrototypes,finalIntrinsics:finalIntrinsics}=makeIntrinsicsCollector(),tamedHarden=tameHarden(safeHarden,__hardenTaming__);addIntrinsics({harden:tamedHarden}),addIntrinsics(tameFunctionConstructors()),addIntrinsics(tameDateConstructor(dateTaming)),addIntrinsics(tameErrorConstructor(errorTaming,stackFiltering)),addIntrinsics(tameMathObject(mathTaming)),addIntrinsics(tameRegExpConstructor(regExpTaming)),addIntrinsics(getAnonymousIntrinsics()),completePrototypes();const intrinsics=finalIntrinsics();let optGetStackString;"unsafe"!==errorTaming&&(optGetStackString=intrinsics["%InitialGetStackString%"]);const consoleRecord=tameConsole(consoleTaming,errorTrapping,unhandledRejectionTrapping,optGetStackString);globalThis.console=consoleRecord.console,"unsafe"===errorTaming&&globalThis.assert===assert&&(globalThis.assert=makeAssert(void 0,!0)),tameLocaleMethods(intrinsics,localeTaming);const markVirtualizedNativeFunction=tameFunctionToString();if(whitelistIntrinsics(intrinsics,markVirtualizedNativeFunction),setGlobalObjectConstantProperties(globalThis),setGlobalObjectMutableProperties(globalThis,{intrinsics:intrinsics,newGlobalPropertyNames:initialGlobalPropertyNames,makeCompartmentConstructor:makeCompartmentConstructor,markVirtualizedNativeFunction:markVirtualizedNativeFunction}),"noEval"===evalTaming)setGlobalObjectEvaluators(globalThis,noEvalEvaluate,markVirtualizedNativeFunction);else if("safeEval"===evalTaming){const{safeEvaluate:safeEvaluate}=makeSafeEvaluator({globalObject:globalThis});setGlobalObjectEvaluators(globalThis,safeEvaluate,markVirtualizedNativeFunction)}return function(){return enablePropertyOverrides(intrinsics,overrideTaming,overrideDebug),tamedHarden(intrinsics),globalThis.harden=tamedHarden,!0}};$h‍_once.repairIntrinsics(repairIntrinsics);$h‍_once.lockdown(((options={})=>{repairIntrinsics(options)()}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let globalThis,TypeError,assign,tameFunctionToString,getGlobalIntrinsics,lockdown,makeCompartmentConstructor,assert;if($h‍_imports([["./src/commons.js",[["globalThis",[$h‍_a=>globalThis=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]]]],["./src/tame-function-tostring.js",[["tameFunctionToString",[$h‍_a=>tameFunctionToString=$h‍_a]]]],["./src/intrinsics.js",[["getGlobalIntrinsics",[$h‍_a=>getGlobalIntrinsics=$h‍_a]]]],["./src/lockdown-shim.js",[["lockdown",[$h‍_a=>lockdown=$h‍_a]]]],["./src/compartment-shim.js",[["makeCompartmentConstructor",[$h‍_a=>makeCompartmentConstructor=$h‍_a]]]],["./src/error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]),function(){return this}())throw new TypeError("SES failed to initialize, sloppy mode (SES_NO_SLOPPY)");const markVirtualizedNativeFunction=tameFunctionToString(),Compartment=makeCompartmentConstructor(makeCompartmentConstructor,getGlobalIntrinsics(globalThis),markVirtualizedNativeFunction);assign(globalThis,{lockdown:lockdown,Compartment:Compartment,assert:assert})}],cell=(name,value=undefined)=>{const observers=[];return Object.freeze({get:Object.freeze((()=>value)),set:Object.freeze((newValue=>{value=newValue;for(const observe of observers)observe(value)})),observe:Object.freeze((observe=>{observers.push(observe),observe(value)})),enumerable:!0})},cells=[{globalThis:cell(),Array:cell(),Date:cell(),FinalizationRegistry:cell(),Float32Array:cell(),JSON:cell(),Map:cell(),Math:cell(),Number:cell(),Object:cell(),Promise:cell(),Proxy:cell(),Reflect:cell(),FERAL_REG_EXP:cell(),Set:cell(),String:cell(),Symbol:cell(),WeakMap:cell(),WeakSet:cell(),FERAL_ERROR:cell(),RangeError:cell(),ReferenceError:cell(),SyntaxError:cell(),TypeError:cell(),assign:cell(),create:cell(),defineProperties:cell(),entries:cell(),freeze:cell(),getOwnPropertyDescriptor:cell(),getOwnPropertyDescriptors:cell(),getOwnPropertyNames:cell(),getPrototypeOf:cell(),is:cell(),isFrozen:cell(),isSealed:cell(),isExtensible:cell(),keys:cell(),objectPrototype:cell(),seal:cell(),preventExtensions:cell(),setPrototypeOf:cell(),values:cell(),fromEntries:cell(),speciesSymbol:cell(),toStringTagSymbol:cell(),iteratorSymbol:cell(),matchAllSymbol:cell(),unscopablesSymbol:cell(),symbolKeyFor:cell(),symbolFor:cell(),isInteger:cell(),stringifyJson:cell(),defineProperty:cell(),apply:cell(),construct:cell(),reflectGet:cell(),reflectGetOwnPropertyDescriptor:cell(),reflectHas:cell(),reflectIsExtensible:cell(),ownKeys:cell(),reflectPreventExtensions:cell(),reflectSet:cell(),isArray:cell(),arrayPrototype:cell(),mapPrototype:cell(),proxyRevocable:cell(),regexpPrototype:cell(),setPrototype:cell(),stringPrototype:cell(),weakmapPrototype:cell(),weaksetPrototype:cell(),functionPrototype:cell(),promisePrototype:cell(),typedArrayPrototype:cell(),uncurryThis:cell(),objectHasOwnProperty:cell(),arrayFilter:cell(),arrayForEach:cell(),arrayIncludes:cell(),arrayJoin:cell(),arrayMap:cell(),arrayPop:cell(),arrayPush:cell(),arraySlice:cell(),arraySome:cell(),arraySort:cell(),iterateArray:cell(),mapSet:cell(),mapGet:cell(),mapHas:cell(),mapDelete:cell(),mapEntries:cell(),iterateMap:cell(),setAdd:cell(),setDelete:cell(),setForEach:cell(),setHas:cell(),iterateSet:cell(),regexpTest:cell(),regexpExec:cell(),matchAllRegExp:cell(),stringEndsWith:cell(),stringIncludes:cell(),stringIndexOf:cell(),stringMatch:cell(),stringReplace:cell(),stringSearch:cell(),stringSlice:cell(),stringSplit:cell(),stringStartsWith:cell(),iterateString:cell(),weakmapDelete:cell(),weakmapGet:cell(),weakmapHas:cell(),weakmapSet:cell(),weaksetAdd:cell(),weaksetHas:cell(),functionToString:cell(),promiseAll:cell(),promiseCatch:cell(),promiseThen:cell(),finalizationRegistryRegister:cell(),finalizationRegistryUnregister:cell(),getConstructorOf:cell(),immutableObject:cell(),isObject:cell(),isError:cell(),FERAL_EVAL:cell(),FERAL_FUNCTION:cell(),noEvalEvaluate:cell()},{},{makeLRUCacheMap:cell(),makeNoteLogArgsArrayKit:cell()},{an:cell(),bestEffortStringify:cell(),enJoin:cell()},{},{unredactedDetails:cell(),loggedErrorHandler:cell(),makeAssert:cell(),assert:cell()},{makeEvalScopeKit:cell()},{isValidIdentifierName:cell(),getScopeConstants:cell()},{makeEvaluate:cell()},{alwaysThrowHandler:cell(),strictScopeTerminatorHandler:cell(),strictScopeTerminator:cell()},{createSloppyGlobalsScopeTerminator:cell()},{getSourceURL:cell()},{rejectHtmlComments:cell(),evadeHtmlCommentTest:cell(),rejectImportExpressions:cell(),evadeImportExpressionTest:cell(),rejectSomeDirectEvalExpressions:cell(),mandatoryTransforms:cell(),applyTransforms:cell(),transforms:cell()},{makeSafeEvaluator:cell()},{provideCompartmentEvaluator:cell(),compartmentEvaluate:cell()},{makeEvalFunction:cell()},{makeFunctionConstructor:cell()},{constantProperties:cell(),universalPropertyNames:cell(),initialGlobalPropertyNames:cell(),sharedGlobalPropertyNames:cell(),uniqueGlobalPropertyNames:cell(),NativeErrors:cell(),FunctionInstance:cell(),isAccessorPermit:cell(),whitelist:cell()},{setGlobalObjectSymbolUnscopables:cell(),setGlobalObjectConstantProperties:cell(),setGlobalObjectMutableProperties:cell(),setGlobalObjectEvaluators:cell()},{makeAlias:cell(),load:cell()},{deferExports:cell(),getDeferredExports:cell()},{makeThirdPartyModuleInstance:cell(),makeModuleInstance:cell()},{link:cell(),instantiate:cell()},{InertCompartment:cell(),CompartmentPrototype:cell(),makeCompartmentConstructor:cell()},{makeIntrinsicsCollector:cell(),getGlobalIntrinsics:cell()},{minEnablements:cell(),moderateEnablements:cell(),severeEnablements:cell()},{default:cell()},{makeEnvironmentCaptor:cell()},{makeLoggingConsoleKit:cell(),makeCausalConsole:cell(),filterConsole:cell(),consoleWhitelist:cell()},{makeRejectionHandlers:cell()},{tameConsole:cell()},{filterFileName:cell(),shortenCallSiteString:cell(),tameV8ErrorConstructor:cell()},{default:cell()},{getAnonymousIntrinsics:cell()},{isTypedArray:cell(),makeHardener:cell()},{default:cell()},{tameDomains:cell()},{default:cell()},{tameFunctionToString:cell()},{tameHarden:cell()},{default:cell()},{default:cell()},{default:cell()},{tameSymbolConstructor:cell()},{default:cell()},{repairIntrinsics:cell(),lockdown:cell()},{}],namespaces=cells.map((cells=>Object.freeze(Object.create(null,cells))));for(let index=0;index { let Symbol,entries,fromEntries,getOwnPropertyDescriptors,defineProperties,arrayMap;$h‍_imports([["./commons.js", [["Symbol", [$h‍_a => (Symbol = $h‍_a)]],["entries", [$h‍_a => (entries = $h‍_a)]],["fromEntries", [$h‍_a => (fromEntries = $h‍_a)]],["getOwnPropertyDescriptors", [$h‍_a => (getOwnPropertyDescriptors = $h‍_a)]],["defineProperties", [$h‍_a => (defineProperties = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]]]]]); ++ ++ ++ ++ ++ ++ ++ ++ ++/** ++ * This taming replaces the original `Symbol` constructor with one that seems ++ * identical, except that all its properties are "temporarily" configurable. ++ * This assumes two succeeding phases of processing: A whitelisting phase, that ++ * removes all properties not on the whitelist (which requires them to be ++ * configurable) and a global hardening step that freezes all primordials, ++ * returning these properties to their non-configurable status. ++ * ++ * However, the ses shim is constructed to enable vetter shims to run between ++ * repair and global hardening. Such vetter shims will see the replacement ++ * `Symbol` constructor with any "extra" properties that the whitelisting will ++ * remove, and with the well-known-symbol properties being configurable, in ++ * violation of the JavaScript spec. ++ * ++ * Note that the spec refers to the global `Symbol` function as the ++ * ["Symbol Constructor"](https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-symbol-constructor) ++ * even though it has a call behavior (can be called as a function) and does not ++ * not have a construct behavior (cannot be called with `new`). Accordingly, ++ * to tame it, we must replace it with a function without a construct ++ * behavior. ++ * ++ * @returns {SymbolConstructor} ++ */ ++const tameSymbolConstructor= ()=> { ++ const OriginalSymbol= Symbol; ++ const SymbolPrototype= OriginalSymbol.prototype; ++ ++ const SharedSymbol= { ++ Symbol(description) { ++ return OriginalSymbol(description); ++ }}. ++ Symbol; ++ ++ defineProperties(SymbolPrototype, { ++ constructor: { ++ value: SharedSymbol ++ // leave other `constructor` attributes as is ++}}); ++ ++ ++ const originalDescsEntries= entries( ++ getOwnPropertyDescriptors(OriginalSymbol)); ++ ++ const descs= fromEntries( ++ arrayMap(originalDescsEntries, ([name, desc])=> [ ++ name, ++ { ...desc, configurable: true}])); ++ ++ ++ defineProperties(SharedSymbol, descs); ++ ++ return (/** @type {SymbolConstructor} */ SharedSymbol); ++ };$h‍_once.tameSymbolConstructor(tameSymbolConstructor); ++}) ++, ++// === functors[44] === + (({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let whitelist,FunctionInstance,isAccessorPermit,Map,String,TypeError,arrayFilter,arrayIncludes,arrayMap,entries,getOwnPropertyDescriptor,getPrototypeOf,isObject,mapGet,objectHasOwnProperty,ownKeys,symbolKeyFor;$h‍_imports([["./whitelist.js", [["whitelist", [$h‍_a => (whitelist = $h‍_a)]],["FunctionInstance", [$h‍_a => (FunctionInstance = $h‍_a)]],["isAccessorPermit", [$h‍_a => (isAccessorPermit = $h‍_a)]]]],["./commons.js", [["Map", [$h‍_a => (Map = $h‍_a)]],["String", [$h‍_a => (String = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayIncludes", [$h‍_a => (arrayIncludes = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["entries", [$h‍_a => (entries = $h‍_a)]],["getOwnPropertyDescriptor", [$h‍_a => (getOwnPropertyDescriptor = $h‍_a)]],["getPrototypeOf", [$h‍_a => (getPrototypeOf = $h‍_a)]],["isObject", [$h‍_a => (isObject = $h‍_a)]],["mapGet", [$h‍_a => (mapGet = $h‍_a)]],["objectHasOwnProperty", [$h‍_a => (objectHasOwnProperty = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["symbolKeyFor", [$h‍_a => (symbolKeyFor = $h‍_a)]]]]]); + + +@@ -9182,8 +9248,9 @@ function whitelistIntrinsics( + }$h‍_once.default( whitelistIntrinsics); + }) + , +-// === functors[44] === +-(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden;$h‍_imports([["./commons.js", [["FERAL_FUNCTION", [$h‍_a => (FERAL_FUNCTION = $h‍_a)]],["FERAL_EVAL", [$h‍_a => (FERAL_EVAL = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["is", [$h‍_a => (is = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["stringSplit", [$h‍_a => (stringSplit = $h‍_a)]],["noEvalEvaluate", [$h‍_a => (noEvalEvaluate = $h‍_a)]]]],["./error/stringify-utils.js", [["enJoin", [$h‍_a => (enJoin = $h‍_a)]]]],["./make-hardener.js", [["makeHardener", [$h‍_a => (makeHardener = $h‍_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector", [$h‍_a => (makeIntrinsicsCollector = $h‍_a)]]]],["./whitelist-intrinsics.js", [["default", [$h‍_a => (whitelistIntrinsics = $h‍_a)]]]],["./tame-function-constructors.js", [["default", [$h‍_a => (tameFunctionConstructors = $h‍_a)]]]],["./tame-date-constructor.js", [["default", [$h‍_a => (tameDateConstructor = $h‍_a)]]]],["./tame-math-object.js", [["default", [$h‍_a => (tameMathObject = $h‍_a)]]]],["./tame-regexp-constructor.js", [["default", [$h‍_a => (tameRegExpConstructor = $h‍_a)]]]],["./enable-property-overrides.js", [["default", [$h‍_a => (enablePropertyOverrides = $h‍_a)]]]],["./tame-locale-methods.js", [["default", [$h‍_a => (tameLocaleMethods = $h‍_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties", [$h‍_a => (setGlobalObjectConstantProperties = $h‍_a)]],["setGlobalObjectMutableProperties", [$h‍_a => (setGlobalObjectMutableProperties = $h‍_a)]],["setGlobalObjectEvaluators", [$h‍_a => (setGlobalObjectEvaluators = $h‍_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator", [$h‍_a => (makeSafeEvaluator = $h‍_a)]]]],["./whitelist.js", [["initialGlobalPropertyNames", [$h‍_a => (initialGlobalPropertyNames = $h‍_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./tame-domains.js", [["tameDomains", [$h‍_a => (tameDomains = $h‍_a)]]]],["./error/tame-console.js", [["tameConsole", [$h‍_a => (tameConsole = $h‍_a)]]]],["./error/tame-error-constructor.js", [["default", [$h‍_a => (tameErrorConstructor = $h‍_a)]]]],["./error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]],["makeAssert", [$h‍_a => (makeAssert = $h‍_a)]]]],["./environment-options.js", [["makeEnvironmentCaptor", [$h‍_a => (makeEnvironmentCaptor = $h‍_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics", [$h‍_a => (getAnonymousIntrinsics = $h‍_a)]]]],["./compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./tame-harden.js", [["tameHarden", [$h‍_a => (tameHarden = $h‍_a)]]]]]); ++// === functors[45] === ++(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden,tameSymbolConstructor;$h‍_imports([["./commons.js", [["FERAL_FUNCTION", [$h‍_a => (FERAL_FUNCTION = $h‍_a)]],["FERAL_EVAL", [$h‍_a => (FERAL_EVAL = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["is", [$h‍_a => (is = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["stringSplit", [$h‍_a => (stringSplit = $h‍_a)]],["noEvalEvaluate", [$h‍_a => (noEvalEvaluate = $h‍_a)]]]],["./error/stringify-utils.js", [["enJoin", [$h‍_a => (enJoin = $h‍_a)]]]],["./make-hardener.js", [["makeHardener", [$h‍_a => (makeHardener = $h‍_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector", [$h‍_a => (makeIntrinsicsCollector = $h‍_a)]]]],["./whitelist-intrinsics.js", [["default", [$h‍_a => (whitelistIntrinsics = $h‍_a)]]]],["./tame-function-constructors.js", [["default", [$h‍_a => (tameFunctionConstructors = $h‍_a)]]]],["./tame-date-constructor.js", [["default", [$h‍_a => (tameDateConstructor = $h‍_a)]]]],["./tame-math-object.js", [["default", [$h‍_a => (tameMathObject = $h‍_a)]]]],["./tame-regexp-constructor.js", [["default", [$h‍_a => (tameRegExpConstructor = $h‍_a)]]]],["./enable-property-overrides.js", [["default", [$h‍_a => (enablePropertyOverrides = $h‍_a)]]]],["./tame-locale-methods.js", [["default", [$h‍_a => (tameLocaleMethods = $h‍_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties", [$h‍_a => (setGlobalObjectConstantProperties = $h‍_a)]],["setGlobalObjectMutableProperties", [$h‍_a => (setGlobalObjectMutableProperties = $h‍_a)]],["setGlobalObjectEvaluators", [$h‍_a => (setGlobalObjectEvaluators = $h‍_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator", [$h‍_a => (makeSafeEvaluator = $h‍_a)]]]],["./whitelist.js", [["initialGlobalPropertyNames", [$h‍_a => (initialGlobalPropertyNames = $h‍_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./tame-domains.js", [["tameDomains", [$h‍_a => (tameDomains = $h‍_a)]]]],["./error/tame-console.js", [["tameConsole", [$h‍_a => (tameConsole = $h‍_a)]]]],["./error/tame-error-constructor.js", [["default", [$h‍_a => (tameErrorConstructor = $h‍_a)]]]],["./error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]],["makeAssert", [$h‍_a => (makeAssert = $h‍_a)]]]],["./environment-options.js", [["makeEnvironmentCaptor", [$h‍_a => (makeEnvironmentCaptor = $h‍_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics", [$h‍_a => (getAnonymousIntrinsics = $h‍_a)]]]],["./compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./tame-harden.js", [["tameHarden", [$h‍_a => (tameHarden = $h‍_a)]]]],["./tame-symbol-constructor.js", [["tameSymbolConstructor", [$h‍_a => (tameSymbolConstructor = $h‍_a)]]]]]); ++ + + + +@@ -9448,6 +9515,10 @@ const repairIntrinsics= (options= {})=> { + + tameDomains(domainTaming); + ++ const SharedSymbol= tameSymbolConstructor(); ++ // Must happen before `makeIntrinsicsCollector()` ++ globalThis.Symbol= SharedSymbol; ++ + const { addIntrinsics, completePrototypes, finalIntrinsics}= + makeIntrinsicsCollector(); + +@@ -9593,7 +9664,7 @@ const lockdown= (options= {})=> { + };$h‍_once.lockdown(lockdown); + }) + , +-// === functors[45] === ++// === functors[46] === + (({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let globalThis,TypeError,assign,tameFunctionToString,getGlobalIntrinsics,lockdown,makeCompartmentConstructor,assert;$h‍_imports([["./src/commons.js", [["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["assign", [$h‍_a => (assign = $h‍_a)]]]],["./src/tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./src/intrinsics.js", [["getGlobalIntrinsics", [$h‍_a => (getGlobalIntrinsics = $h‍_a)]]]],["./src/lockdown-shim.js", [["lockdown", [$h‍_a => (lockdown = $h‍_a)]]]],["./src/compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./src/error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]]]]]); + + +@@ -9680,6 +9751,7 @@ assign(globalThis, { + FERAL_REG_EXP: cell("FERAL_REG_EXP"), + Set: cell("Set"), + String: cell("String"), ++ Symbol: cell("Symbol"), + WeakMap: cell("WeakMap"), + WeakSet: cell("WeakSet"), + FERAL_ERROR: cell("FERAL_ERROR"), +@@ -9962,6 +10034,9 @@ assign(globalThis, { + { + default: cell("default"), + }, ++ { ++ tameSymbolConstructor: cell("tameSymbolConstructor"), ++ }, + { + default: cell("default"), + }, +@@ -10016,6 +10091,7 @@ function observeImports(map, importName, importIndex) { + FERAL_REG_EXP: cells[0].FERAL_REG_EXP.set, + Set: cells[0].Set.set, + String: cells[0].String.set, ++ Symbol: cells[0].Symbol.set, + WeakMap: cells[0].WeakMap.set, + WeakSet: cells[0].WeakSet.set, + FERAL_ERROR: cells[0].FERAL_ERROR.set, +@@ -10729,16 +10805,28 @@ function observeImports(map, importName, importIndex) { + imports(entries) { + const map = new Map(entries); + observeImports(map, "./commons.js", 0); +- observeImports(map, "./whitelist.js", 17); + }, + liveVar: { + }, + onceVar: { +- default: cells[43].default.set, ++ tameSymbolConstructor: cells[43].tameSymbolConstructor.set, + }, + importMeta: {}, + }); + functors[44]({ ++ imports(entries) { ++ const map = new Map(entries); ++ observeImports(map, "./commons.js", 0); ++ observeImports(map, "./whitelist.js", 17); ++ }, ++ liveVar: { ++ }, ++ onceVar: { ++ default: cells[44].default.set, ++ }, ++ importMeta: {}, ++ }); ++ functors[45]({ + imports(entries) { + const map = new Map(entries); + observeImports(map, "./commons.js", 0); +@@ -10762,25 +10850,26 @@ function observeImports(map, importName, importIndex) { + observeImports(map, "./tame-locale-methods.js", 40); + observeImports(map, "./tame-math-object.js", 41); + observeImports(map, "./tame-regexp-constructor.js", 42); +- observeImports(map, "./whitelist-intrinsics.js", 43); ++ observeImports(map, "./tame-symbol-constructor.js", 43); ++ observeImports(map, "./whitelist-intrinsics.js", 44); + observeImports(map, "./whitelist.js", 17); + }, + liveVar: { + }, + onceVar: { +- repairIntrinsics: cells[44].repairIntrinsics.set, +- lockdown: cells[44].lockdown.set, ++ repairIntrinsics: cells[45].repairIntrinsics.set, ++ lockdown: cells[45].lockdown.set, + }, + importMeta: {}, + }); +- functors[45]({ ++ functors[46]({ + imports(entries) { + const map = new Map(entries); + observeImports(map, "./src/commons.js", 0); + observeImports(map, "./src/compartment-shim.js", 23); + observeImports(map, "./src/error/assert.js", 5); + observeImports(map, "./src/intrinsics.js", 24); +- observeImports(map, "./src/lockdown-shim.js", 44); ++ observeImports(map, "./src/lockdown-shim.js", 45); + observeImports(map, "./src/tame-function-tostring.js", 38); + }, + liveVar: { +diff --git a/node_modules/ses/dist/ses.mjs b/node_modules/ses/dist/ses.mjs +index 9584dfb..43ee4f5 100644 +--- a/node_modules/ses/dist/ses.mjs ++++ b/node_modules/ses/dist/ses.mjs +@@ -37,9 +37,10 @@ const { + RegExp: FERAL_REG_EXP, + Set, + String, ++ Symbol, + WeakMap, + WeakSet}= +- globalThis;$h‍_once.Array(Array);$h‍_once.Date(Date);$h‍_once.FinalizationRegistry(FinalizationRegistry);$h‍_once.Float32Array(Float32Array);$h‍_once.JSON(JSON);$h‍_once.Map(Map);$h‍_once.Math(Math);$h‍_once.Number(Number);$h‍_once.Object(Object);$h‍_once.Promise(Promise);$h‍_once.Proxy(Proxy);$h‍_once.Reflect(Reflect);$h‍_once.FERAL_REG_EXP(FERAL_REG_EXP);$h‍_once.Set(Set);$h‍_once.String(String);$h‍_once.WeakMap(WeakMap);$h‍_once.WeakSet(WeakSet); ++ globalThis;$h‍_once.Array(Array);$h‍_once.Date(Date);$h‍_once.FinalizationRegistry(FinalizationRegistry);$h‍_once.Float32Array(Float32Array);$h‍_once.JSON(JSON);$h‍_once.Map(Map);$h‍_once.Math(Math);$h‍_once.Number(Number);$h‍_once.Object(Object);$h‍_once.Promise(Promise);$h‍_once.Proxy(Proxy);$h‍_once.Reflect(Reflect);$h‍_once.FERAL_REG_EXP(FERAL_REG_EXP);$h‍_once.Set(Set);$h‍_once.String(String);$h‍_once.Symbol(Symbol);$h‍_once.WeakMap(WeakMap);$h‍_once.WeakSet(WeakSet); + + const { + // The feral Error constructor is safe for internal use, but must not be +@@ -8865,6 +8866,71 @@ function tameRegExpConstructor(regExpTaming= 'safe') { + }) + , + // === functors[43] === ++(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let Symbol,entries,fromEntries,getOwnPropertyDescriptors,defineProperties,arrayMap;$h‍_imports([["./commons.js", [["Symbol", [$h‍_a => (Symbol = $h‍_a)]],["entries", [$h‍_a => (entries = $h‍_a)]],["fromEntries", [$h‍_a => (fromEntries = $h‍_a)]],["getOwnPropertyDescriptors", [$h‍_a => (getOwnPropertyDescriptors = $h‍_a)]],["defineProperties", [$h‍_a => (defineProperties = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]]]]]); ++ ++ ++ ++ ++ ++ ++ ++ ++/** ++ * This taming replaces the original `Symbol` constructor with one that seems ++ * identical, except that all its properties are "temporarily" configurable. ++ * This assumes two succeeding phases of processing: A whitelisting phase, that ++ * removes all properties not on the whitelist (which requires them to be ++ * configurable) and a global hardening step that freezes all primordials, ++ * returning these properties to their non-configurable status. ++ * ++ * However, the ses shim is constructed to enable vetter shims to run between ++ * repair and global hardening. Such vetter shims will see the replacement ++ * `Symbol` constructor with any "extra" properties that the whitelisting will ++ * remove, and with the well-known-symbol properties being configurable, in ++ * violation of the JavaScript spec. ++ * ++ * Note that the spec refers to the global `Symbol` function as the ++ * ["Symbol Constructor"](https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-symbol-constructor) ++ * even though it has a call behavior (can be called as a function) and does not ++ * not have a construct behavior (cannot be called with `new`). Accordingly, ++ * to tame it, we must replace it with a function without a construct ++ * behavior. ++ * ++ * @returns {SymbolConstructor} ++ */ ++const tameSymbolConstructor= ()=> { ++ const OriginalSymbol= Symbol; ++ const SymbolPrototype= OriginalSymbol.prototype; ++ ++ const SharedSymbol= { ++ Symbol(description) { ++ return OriginalSymbol(description); ++ }}. ++ Symbol; ++ ++ defineProperties(SymbolPrototype, { ++ constructor: { ++ value: SharedSymbol ++ // leave other `constructor` attributes as is ++}}); ++ ++ ++ const originalDescsEntries= entries( ++ getOwnPropertyDescriptors(OriginalSymbol)); ++ ++ const descs= fromEntries( ++ arrayMap(originalDescsEntries, ([name, desc])=> [ ++ name, ++ { ...desc, configurable: true}])); ++ ++ ++ defineProperties(SharedSymbol, descs); ++ ++ return (/** @type {SymbolConstructor} */ SharedSymbol); ++ };$h‍_once.tameSymbolConstructor(tameSymbolConstructor); ++}) ++, ++// === functors[44] === + (({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let whitelist,FunctionInstance,isAccessorPermit,Map,String,TypeError,arrayFilter,arrayIncludes,arrayMap,entries,getOwnPropertyDescriptor,getPrototypeOf,isObject,mapGet,objectHasOwnProperty,ownKeys,symbolKeyFor;$h‍_imports([["./whitelist.js", [["whitelist", [$h‍_a => (whitelist = $h‍_a)]],["FunctionInstance", [$h‍_a => (FunctionInstance = $h‍_a)]],["isAccessorPermit", [$h‍_a => (isAccessorPermit = $h‍_a)]]]],["./commons.js", [["Map", [$h‍_a => (Map = $h‍_a)]],["String", [$h‍_a => (String = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayIncludes", [$h‍_a => (arrayIncludes = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["entries", [$h‍_a => (entries = $h‍_a)]],["getOwnPropertyDescriptor", [$h‍_a => (getOwnPropertyDescriptor = $h‍_a)]],["getPrototypeOf", [$h‍_a => (getPrototypeOf = $h‍_a)]],["isObject", [$h‍_a => (isObject = $h‍_a)]],["mapGet", [$h‍_a => (mapGet = $h‍_a)]],["objectHasOwnProperty", [$h‍_a => (objectHasOwnProperty = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["symbolKeyFor", [$h‍_a => (symbolKeyFor = $h‍_a)]]]]]); + + +@@ -9182,8 +9248,9 @@ function whitelistIntrinsics( + }$h‍_once.default( whitelistIntrinsics); + }) + , +-// === functors[44] === +-(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden;$h‍_imports([["./commons.js", [["FERAL_FUNCTION", [$h‍_a => (FERAL_FUNCTION = $h‍_a)]],["FERAL_EVAL", [$h‍_a => (FERAL_EVAL = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["is", [$h‍_a => (is = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["stringSplit", [$h‍_a => (stringSplit = $h‍_a)]],["noEvalEvaluate", [$h‍_a => (noEvalEvaluate = $h‍_a)]]]],["./error/stringify-utils.js", [["enJoin", [$h‍_a => (enJoin = $h‍_a)]]]],["./make-hardener.js", [["makeHardener", [$h‍_a => (makeHardener = $h‍_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector", [$h‍_a => (makeIntrinsicsCollector = $h‍_a)]]]],["./whitelist-intrinsics.js", [["default", [$h‍_a => (whitelistIntrinsics = $h‍_a)]]]],["./tame-function-constructors.js", [["default", [$h‍_a => (tameFunctionConstructors = $h‍_a)]]]],["./tame-date-constructor.js", [["default", [$h‍_a => (tameDateConstructor = $h‍_a)]]]],["./tame-math-object.js", [["default", [$h‍_a => (tameMathObject = $h‍_a)]]]],["./tame-regexp-constructor.js", [["default", [$h‍_a => (tameRegExpConstructor = $h‍_a)]]]],["./enable-property-overrides.js", [["default", [$h‍_a => (enablePropertyOverrides = $h‍_a)]]]],["./tame-locale-methods.js", [["default", [$h‍_a => (tameLocaleMethods = $h‍_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties", [$h‍_a => (setGlobalObjectConstantProperties = $h‍_a)]],["setGlobalObjectMutableProperties", [$h‍_a => (setGlobalObjectMutableProperties = $h‍_a)]],["setGlobalObjectEvaluators", [$h‍_a => (setGlobalObjectEvaluators = $h‍_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator", [$h‍_a => (makeSafeEvaluator = $h‍_a)]]]],["./whitelist.js", [["initialGlobalPropertyNames", [$h‍_a => (initialGlobalPropertyNames = $h‍_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./tame-domains.js", [["tameDomains", [$h‍_a => (tameDomains = $h‍_a)]]]],["./error/tame-console.js", [["tameConsole", [$h‍_a => (tameConsole = $h‍_a)]]]],["./error/tame-error-constructor.js", [["default", [$h‍_a => (tameErrorConstructor = $h‍_a)]]]],["./error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]],["makeAssert", [$h‍_a => (makeAssert = $h‍_a)]]]],["./environment-options.js", [["makeEnvironmentCaptor", [$h‍_a => (makeEnvironmentCaptor = $h‍_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics", [$h‍_a => (getAnonymousIntrinsics = $h‍_a)]]]],["./compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./tame-harden.js", [["tameHarden", [$h‍_a => (tameHarden = $h‍_a)]]]]]); ++// === functors[45] === ++(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden,tameSymbolConstructor;$h‍_imports([["./commons.js", [["FERAL_FUNCTION", [$h‍_a => (FERAL_FUNCTION = $h‍_a)]],["FERAL_EVAL", [$h‍_a => (FERAL_EVAL = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["is", [$h‍_a => (is = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["stringSplit", [$h‍_a => (stringSplit = $h‍_a)]],["noEvalEvaluate", [$h‍_a => (noEvalEvaluate = $h‍_a)]]]],["./error/stringify-utils.js", [["enJoin", [$h‍_a => (enJoin = $h‍_a)]]]],["./make-hardener.js", [["makeHardener", [$h‍_a => (makeHardener = $h‍_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector", [$h‍_a => (makeIntrinsicsCollector = $h‍_a)]]]],["./whitelist-intrinsics.js", [["default", [$h‍_a => (whitelistIntrinsics = $h‍_a)]]]],["./tame-function-constructors.js", [["default", [$h‍_a => (tameFunctionConstructors = $h‍_a)]]]],["./tame-date-constructor.js", [["default", [$h‍_a => (tameDateConstructor = $h‍_a)]]]],["./tame-math-object.js", [["default", [$h‍_a => (tameMathObject = $h‍_a)]]]],["./tame-regexp-constructor.js", [["default", [$h‍_a => (tameRegExpConstructor = $h‍_a)]]]],["./enable-property-overrides.js", [["default", [$h‍_a => (enablePropertyOverrides = $h‍_a)]]]],["./tame-locale-methods.js", [["default", [$h‍_a => (tameLocaleMethods = $h‍_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties", [$h‍_a => (setGlobalObjectConstantProperties = $h‍_a)]],["setGlobalObjectMutableProperties", [$h‍_a => (setGlobalObjectMutableProperties = $h‍_a)]],["setGlobalObjectEvaluators", [$h‍_a => (setGlobalObjectEvaluators = $h‍_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator", [$h‍_a => (makeSafeEvaluator = $h‍_a)]]]],["./whitelist.js", [["initialGlobalPropertyNames", [$h‍_a => (initialGlobalPropertyNames = $h‍_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./tame-domains.js", [["tameDomains", [$h‍_a => (tameDomains = $h‍_a)]]]],["./error/tame-console.js", [["tameConsole", [$h‍_a => (tameConsole = $h‍_a)]]]],["./error/tame-error-constructor.js", [["default", [$h‍_a => (tameErrorConstructor = $h‍_a)]]]],["./error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]],["makeAssert", [$h‍_a => (makeAssert = $h‍_a)]]]],["./environment-options.js", [["makeEnvironmentCaptor", [$h‍_a => (makeEnvironmentCaptor = $h‍_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics", [$h‍_a => (getAnonymousIntrinsics = $h‍_a)]]]],["./compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./tame-harden.js", [["tameHarden", [$h‍_a => (tameHarden = $h‍_a)]]]],["./tame-symbol-constructor.js", [["tameSymbolConstructor", [$h‍_a => (tameSymbolConstructor = $h‍_a)]]]]]); ++ + + + +@@ -9448,6 +9515,10 @@ const repairIntrinsics= (options= {})=> { + + tameDomains(domainTaming); + ++ const SharedSymbol= tameSymbolConstructor(); ++ // Must happen before `makeIntrinsicsCollector()` ++ globalThis.Symbol= SharedSymbol; ++ + const { addIntrinsics, completePrototypes, finalIntrinsics}= + makeIntrinsicsCollector(); + +@@ -9593,7 +9664,7 @@ const lockdown= (options= {})=> { + };$h‍_once.lockdown(lockdown); + }) + , +-// === functors[45] === ++// === functors[46] === + (({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let globalThis,TypeError,assign,tameFunctionToString,getGlobalIntrinsics,lockdown,makeCompartmentConstructor,assert;$h‍_imports([["./src/commons.js", [["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["assign", [$h‍_a => (assign = $h‍_a)]]]],["./src/tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./src/intrinsics.js", [["getGlobalIntrinsics", [$h‍_a => (getGlobalIntrinsics = $h‍_a)]]]],["./src/lockdown-shim.js", [["lockdown", [$h‍_a => (lockdown = $h‍_a)]]]],["./src/compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./src/error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]]]]]); + + +@@ -9680,6 +9751,7 @@ assign(globalThis, { + FERAL_REG_EXP: cell("FERAL_REG_EXP"), + Set: cell("Set"), + String: cell("String"), ++ Symbol: cell("Symbol"), + WeakMap: cell("WeakMap"), + WeakSet: cell("WeakSet"), + FERAL_ERROR: cell("FERAL_ERROR"), +@@ -9962,6 +10034,9 @@ assign(globalThis, { + { + default: cell("default"), + }, ++ { ++ tameSymbolConstructor: cell("tameSymbolConstructor"), ++ }, + { + default: cell("default"), + }, +@@ -10016,6 +10091,7 @@ function observeImports(map, importName, importIndex) { + FERAL_REG_EXP: cells[0].FERAL_REG_EXP.set, + Set: cells[0].Set.set, + String: cells[0].String.set, ++ Symbol: cells[0].Symbol.set, + WeakMap: cells[0].WeakMap.set, + WeakSet: cells[0].WeakSet.set, + FERAL_ERROR: cells[0].FERAL_ERROR.set, +@@ -10729,16 +10805,28 @@ function observeImports(map, importName, importIndex) { + imports(entries) { + const map = new Map(entries); + observeImports(map, "./commons.js", 0); +- observeImports(map, "./whitelist.js", 17); + }, + liveVar: { + }, + onceVar: { +- default: cells[43].default.set, ++ tameSymbolConstructor: cells[43].tameSymbolConstructor.set, + }, + importMeta: {}, + }); + functors[44]({ ++ imports(entries) { ++ const map = new Map(entries); ++ observeImports(map, "./commons.js", 0); ++ observeImports(map, "./whitelist.js", 17); ++ }, ++ liveVar: { ++ }, ++ onceVar: { ++ default: cells[44].default.set, ++ }, ++ importMeta: {}, ++ }); ++ functors[45]({ + imports(entries) { + const map = new Map(entries); + observeImports(map, "./commons.js", 0); +@@ -10762,25 +10850,26 @@ function observeImports(map, importName, importIndex) { + observeImports(map, "./tame-locale-methods.js", 40); + observeImports(map, "./tame-math-object.js", 41); + observeImports(map, "./tame-regexp-constructor.js", 42); +- observeImports(map, "./whitelist-intrinsics.js", 43); ++ observeImports(map, "./tame-symbol-constructor.js", 43); ++ observeImports(map, "./whitelist-intrinsics.js", 44); + observeImports(map, "./whitelist.js", 17); + }, + liveVar: { + }, + onceVar: { +- repairIntrinsics: cells[44].repairIntrinsics.set, +- lockdown: cells[44].lockdown.set, ++ repairIntrinsics: cells[45].repairIntrinsics.set, ++ lockdown: cells[45].lockdown.set, + }, + importMeta: {}, + }); +- functors[45]({ ++ functors[46]({ + imports(entries) { + const map = new Map(entries); + observeImports(map, "./src/commons.js", 0); + observeImports(map, "./src/compartment-shim.js", 23); + observeImports(map, "./src/error/assert.js", 5); + observeImports(map, "./src/intrinsics.js", 24); +- observeImports(map, "./src/lockdown-shim.js", 44); ++ observeImports(map, "./src/lockdown-shim.js", 45); + observeImports(map, "./src/tame-function-tostring.js", 38); + }, + liveVar: { +diff --git a/node_modules/ses/dist/ses.umd.js b/node_modules/ses/dist/ses.umd.js +index 9584dfb..43ee4f5 100644 +--- a/node_modules/ses/dist/ses.umd.js ++++ b/node_modules/ses/dist/ses.umd.js +@@ -37,9 +37,10 @@ const { + RegExp: FERAL_REG_EXP, + Set, + String, ++ Symbol, + WeakMap, + WeakSet}= +- globalThis;$h‍_once.Array(Array);$h‍_once.Date(Date);$h‍_once.FinalizationRegistry(FinalizationRegistry);$h‍_once.Float32Array(Float32Array);$h‍_once.JSON(JSON);$h‍_once.Map(Map);$h‍_once.Math(Math);$h‍_once.Number(Number);$h‍_once.Object(Object);$h‍_once.Promise(Promise);$h‍_once.Proxy(Proxy);$h‍_once.Reflect(Reflect);$h‍_once.FERAL_REG_EXP(FERAL_REG_EXP);$h‍_once.Set(Set);$h‍_once.String(String);$h‍_once.WeakMap(WeakMap);$h‍_once.WeakSet(WeakSet); ++ globalThis;$h‍_once.Array(Array);$h‍_once.Date(Date);$h‍_once.FinalizationRegistry(FinalizationRegistry);$h‍_once.Float32Array(Float32Array);$h‍_once.JSON(JSON);$h‍_once.Map(Map);$h‍_once.Math(Math);$h‍_once.Number(Number);$h‍_once.Object(Object);$h‍_once.Promise(Promise);$h‍_once.Proxy(Proxy);$h‍_once.Reflect(Reflect);$h‍_once.FERAL_REG_EXP(FERAL_REG_EXP);$h‍_once.Set(Set);$h‍_once.String(String);$h‍_once.Symbol(Symbol);$h‍_once.WeakMap(WeakMap);$h‍_once.WeakSet(WeakSet); + + const { + // The feral Error constructor is safe for internal use, but must not be +@@ -8865,6 +8866,71 @@ function tameRegExpConstructor(regExpTaming= 'safe') { + }) + , + // === functors[43] === ++(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let Symbol,entries,fromEntries,getOwnPropertyDescriptors,defineProperties,arrayMap;$h‍_imports([["./commons.js", [["Symbol", [$h‍_a => (Symbol = $h‍_a)]],["entries", [$h‍_a => (entries = $h‍_a)]],["fromEntries", [$h‍_a => (fromEntries = $h‍_a)]],["getOwnPropertyDescriptors", [$h‍_a => (getOwnPropertyDescriptors = $h‍_a)]],["defineProperties", [$h‍_a => (defineProperties = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]]]]]); ++ ++ ++ ++ ++ ++ ++ ++ ++/** ++ * This taming replaces the original `Symbol` constructor with one that seems ++ * identical, except that all its properties are "temporarily" configurable. ++ * This assumes two succeeding phases of processing: A whitelisting phase, that ++ * removes all properties not on the whitelist (which requires them to be ++ * configurable) and a global hardening step that freezes all primordials, ++ * returning these properties to their non-configurable status. ++ * ++ * However, the ses shim is constructed to enable vetter shims to run between ++ * repair and global hardening. Such vetter shims will see the replacement ++ * `Symbol` constructor with any "extra" properties that the whitelisting will ++ * remove, and with the well-known-symbol properties being configurable, in ++ * violation of the JavaScript spec. ++ * ++ * Note that the spec refers to the global `Symbol` function as the ++ * ["Symbol Constructor"](https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-symbol-constructor) ++ * even though it has a call behavior (can be called as a function) and does not ++ * not have a construct behavior (cannot be called with `new`). Accordingly, ++ * to tame it, we must replace it with a function without a construct ++ * behavior. ++ * ++ * @returns {SymbolConstructor} ++ */ ++const tameSymbolConstructor= ()=> { ++ const OriginalSymbol= Symbol; ++ const SymbolPrototype= OriginalSymbol.prototype; ++ ++ const SharedSymbol= { ++ Symbol(description) { ++ return OriginalSymbol(description); ++ }}. ++ Symbol; ++ ++ defineProperties(SymbolPrototype, { ++ constructor: { ++ value: SharedSymbol ++ // leave other `constructor` attributes as is ++}}); ++ ++ ++ const originalDescsEntries= entries( ++ getOwnPropertyDescriptors(OriginalSymbol)); ++ ++ const descs= fromEntries( ++ arrayMap(originalDescsEntries, ([name, desc])=> [ ++ name, ++ { ...desc, configurable: true}])); ++ ++ ++ defineProperties(SharedSymbol, descs); ++ ++ return (/** @type {SymbolConstructor} */ SharedSymbol); ++ };$h‍_once.tameSymbolConstructor(tameSymbolConstructor); ++}) ++, ++// === functors[44] === + (({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let whitelist,FunctionInstance,isAccessorPermit,Map,String,TypeError,arrayFilter,arrayIncludes,arrayMap,entries,getOwnPropertyDescriptor,getPrototypeOf,isObject,mapGet,objectHasOwnProperty,ownKeys,symbolKeyFor;$h‍_imports([["./whitelist.js", [["whitelist", [$h‍_a => (whitelist = $h‍_a)]],["FunctionInstance", [$h‍_a => (FunctionInstance = $h‍_a)]],["isAccessorPermit", [$h‍_a => (isAccessorPermit = $h‍_a)]]]],["./commons.js", [["Map", [$h‍_a => (Map = $h‍_a)]],["String", [$h‍_a => (String = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayIncludes", [$h‍_a => (arrayIncludes = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["entries", [$h‍_a => (entries = $h‍_a)]],["getOwnPropertyDescriptor", [$h‍_a => (getOwnPropertyDescriptor = $h‍_a)]],["getPrototypeOf", [$h‍_a => (getPrototypeOf = $h‍_a)]],["isObject", [$h‍_a => (isObject = $h‍_a)]],["mapGet", [$h‍_a => (mapGet = $h‍_a)]],["objectHasOwnProperty", [$h‍_a => (objectHasOwnProperty = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["symbolKeyFor", [$h‍_a => (symbolKeyFor = $h‍_a)]]]]]); + + +@@ -9182,8 +9248,9 @@ function whitelistIntrinsics( + }$h‍_once.default( whitelistIntrinsics); + }) + , +-// === functors[44] === +-(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden;$h‍_imports([["./commons.js", [["FERAL_FUNCTION", [$h‍_a => (FERAL_FUNCTION = $h‍_a)]],["FERAL_EVAL", [$h‍_a => (FERAL_EVAL = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["is", [$h‍_a => (is = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["stringSplit", [$h‍_a => (stringSplit = $h‍_a)]],["noEvalEvaluate", [$h‍_a => (noEvalEvaluate = $h‍_a)]]]],["./error/stringify-utils.js", [["enJoin", [$h‍_a => (enJoin = $h‍_a)]]]],["./make-hardener.js", [["makeHardener", [$h‍_a => (makeHardener = $h‍_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector", [$h‍_a => (makeIntrinsicsCollector = $h‍_a)]]]],["./whitelist-intrinsics.js", [["default", [$h‍_a => (whitelistIntrinsics = $h‍_a)]]]],["./tame-function-constructors.js", [["default", [$h‍_a => (tameFunctionConstructors = $h‍_a)]]]],["./tame-date-constructor.js", [["default", [$h‍_a => (tameDateConstructor = $h‍_a)]]]],["./tame-math-object.js", [["default", [$h‍_a => (tameMathObject = $h‍_a)]]]],["./tame-regexp-constructor.js", [["default", [$h‍_a => (tameRegExpConstructor = $h‍_a)]]]],["./enable-property-overrides.js", [["default", [$h‍_a => (enablePropertyOverrides = $h‍_a)]]]],["./tame-locale-methods.js", [["default", [$h‍_a => (tameLocaleMethods = $h‍_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties", [$h‍_a => (setGlobalObjectConstantProperties = $h‍_a)]],["setGlobalObjectMutableProperties", [$h‍_a => (setGlobalObjectMutableProperties = $h‍_a)]],["setGlobalObjectEvaluators", [$h‍_a => (setGlobalObjectEvaluators = $h‍_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator", [$h‍_a => (makeSafeEvaluator = $h‍_a)]]]],["./whitelist.js", [["initialGlobalPropertyNames", [$h‍_a => (initialGlobalPropertyNames = $h‍_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./tame-domains.js", [["tameDomains", [$h‍_a => (tameDomains = $h‍_a)]]]],["./error/tame-console.js", [["tameConsole", [$h‍_a => (tameConsole = $h‍_a)]]]],["./error/tame-error-constructor.js", [["default", [$h‍_a => (tameErrorConstructor = $h‍_a)]]]],["./error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]],["makeAssert", [$h‍_a => (makeAssert = $h‍_a)]]]],["./environment-options.js", [["makeEnvironmentCaptor", [$h‍_a => (makeEnvironmentCaptor = $h‍_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics", [$h‍_a => (getAnonymousIntrinsics = $h‍_a)]]]],["./compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./tame-harden.js", [["tameHarden", [$h‍_a => (tameHarden = $h‍_a)]]]]]); ++// === functors[45] === ++(({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden,tameSymbolConstructor;$h‍_imports([["./commons.js", [["FERAL_FUNCTION", [$h‍_a => (FERAL_FUNCTION = $h‍_a)]],["FERAL_EVAL", [$h‍_a => (FERAL_EVAL = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["arrayFilter", [$h‍_a => (arrayFilter = $h‍_a)]],["arrayMap", [$h‍_a => (arrayMap = $h‍_a)]],["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["is", [$h‍_a => (is = $h‍_a)]],["ownKeys", [$h‍_a => (ownKeys = $h‍_a)]],["stringSplit", [$h‍_a => (stringSplit = $h‍_a)]],["noEvalEvaluate", [$h‍_a => (noEvalEvaluate = $h‍_a)]]]],["./error/stringify-utils.js", [["enJoin", [$h‍_a => (enJoin = $h‍_a)]]]],["./make-hardener.js", [["makeHardener", [$h‍_a => (makeHardener = $h‍_a)]]]],["./intrinsics.js", [["makeIntrinsicsCollector", [$h‍_a => (makeIntrinsicsCollector = $h‍_a)]]]],["./whitelist-intrinsics.js", [["default", [$h‍_a => (whitelistIntrinsics = $h‍_a)]]]],["./tame-function-constructors.js", [["default", [$h‍_a => (tameFunctionConstructors = $h‍_a)]]]],["./tame-date-constructor.js", [["default", [$h‍_a => (tameDateConstructor = $h‍_a)]]]],["./tame-math-object.js", [["default", [$h‍_a => (tameMathObject = $h‍_a)]]]],["./tame-regexp-constructor.js", [["default", [$h‍_a => (tameRegExpConstructor = $h‍_a)]]]],["./enable-property-overrides.js", [["default", [$h‍_a => (enablePropertyOverrides = $h‍_a)]]]],["./tame-locale-methods.js", [["default", [$h‍_a => (tameLocaleMethods = $h‍_a)]]]],["./global-object.js", [["setGlobalObjectConstantProperties", [$h‍_a => (setGlobalObjectConstantProperties = $h‍_a)]],["setGlobalObjectMutableProperties", [$h‍_a => (setGlobalObjectMutableProperties = $h‍_a)]],["setGlobalObjectEvaluators", [$h‍_a => (setGlobalObjectEvaluators = $h‍_a)]]]],["./make-safe-evaluator.js", [["makeSafeEvaluator", [$h‍_a => (makeSafeEvaluator = $h‍_a)]]]],["./whitelist.js", [["initialGlobalPropertyNames", [$h‍_a => (initialGlobalPropertyNames = $h‍_a)]]]],["./tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./tame-domains.js", [["tameDomains", [$h‍_a => (tameDomains = $h‍_a)]]]],["./error/tame-console.js", [["tameConsole", [$h‍_a => (tameConsole = $h‍_a)]]]],["./error/tame-error-constructor.js", [["default", [$h‍_a => (tameErrorConstructor = $h‍_a)]]]],["./error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]],["makeAssert", [$h‍_a => (makeAssert = $h‍_a)]]]],["./environment-options.js", [["makeEnvironmentCaptor", [$h‍_a => (makeEnvironmentCaptor = $h‍_a)]]]],["./get-anonymous-intrinsics.js", [["getAnonymousIntrinsics", [$h‍_a => (getAnonymousIntrinsics = $h‍_a)]]]],["./compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./tame-harden.js", [["tameHarden", [$h‍_a => (tameHarden = $h‍_a)]]]],["./tame-symbol-constructor.js", [["tameSymbolConstructor", [$h‍_a => (tameSymbolConstructor = $h‍_a)]]]]]); ++ + + + +@@ -9448,6 +9515,10 @@ const repairIntrinsics= (options= {})=> { + + tameDomains(domainTaming); + ++ const SharedSymbol= tameSymbolConstructor(); ++ // Must happen before `makeIntrinsicsCollector()` ++ globalThis.Symbol= SharedSymbol; ++ + const { addIntrinsics, completePrototypes, finalIntrinsics}= + makeIntrinsicsCollector(); + +@@ -9593,7 +9664,7 @@ const lockdown= (options= {})=> { + };$h‍_once.lockdown(lockdown); + }) + , +-// === functors[45] === ++// === functors[46] === + (({ imports: $h‍_imports, liveVar: $h‍_live, onceVar: $h‍_once, importMeta: $h‍____meta, }) => { let globalThis,TypeError,assign,tameFunctionToString,getGlobalIntrinsics,lockdown,makeCompartmentConstructor,assert;$h‍_imports([["./src/commons.js", [["globalThis", [$h‍_a => (globalThis = $h‍_a)]],["TypeError", [$h‍_a => (TypeError = $h‍_a)]],["assign", [$h‍_a => (assign = $h‍_a)]]]],["./src/tame-function-tostring.js", [["tameFunctionToString", [$h‍_a => (tameFunctionToString = $h‍_a)]]]],["./src/intrinsics.js", [["getGlobalIntrinsics", [$h‍_a => (getGlobalIntrinsics = $h‍_a)]]]],["./src/lockdown-shim.js", [["lockdown", [$h‍_a => (lockdown = $h‍_a)]]]],["./src/compartment-shim.js", [["makeCompartmentConstructor", [$h‍_a => (makeCompartmentConstructor = $h‍_a)]]]],["./src/error/assert.js", [["assert", [$h‍_a => (assert = $h‍_a)]]]]]); + + +@@ -9680,6 +9751,7 @@ assign(globalThis, { + FERAL_REG_EXP: cell("FERAL_REG_EXP"), + Set: cell("Set"), + String: cell("String"), ++ Symbol: cell("Symbol"), + WeakMap: cell("WeakMap"), + WeakSet: cell("WeakSet"), + FERAL_ERROR: cell("FERAL_ERROR"), +@@ -9962,6 +10034,9 @@ assign(globalThis, { + { + default: cell("default"), + }, ++ { ++ tameSymbolConstructor: cell("tameSymbolConstructor"), ++ }, + { + default: cell("default"), + }, +@@ -10016,6 +10091,7 @@ function observeImports(map, importName, importIndex) { + FERAL_REG_EXP: cells[0].FERAL_REG_EXP.set, + Set: cells[0].Set.set, + String: cells[0].String.set, ++ Symbol: cells[0].Symbol.set, + WeakMap: cells[0].WeakMap.set, + WeakSet: cells[0].WeakSet.set, + FERAL_ERROR: cells[0].FERAL_ERROR.set, +@@ -10729,16 +10805,28 @@ function observeImports(map, importName, importIndex) { + imports(entries) { + const map = new Map(entries); + observeImports(map, "./commons.js", 0); +- observeImports(map, "./whitelist.js", 17); + }, + liveVar: { + }, + onceVar: { +- default: cells[43].default.set, ++ tameSymbolConstructor: cells[43].tameSymbolConstructor.set, + }, + importMeta: {}, + }); + functors[44]({ ++ imports(entries) { ++ const map = new Map(entries); ++ observeImports(map, "./commons.js", 0); ++ observeImports(map, "./whitelist.js", 17); ++ }, ++ liveVar: { ++ }, ++ onceVar: { ++ default: cells[44].default.set, ++ }, ++ importMeta: {}, ++ }); ++ functors[45]({ + imports(entries) { + const map = new Map(entries); + observeImports(map, "./commons.js", 0); +@@ -10762,25 +10850,26 @@ function observeImports(map, importName, importIndex) { + observeImports(map, "./tame-locale-methods.js", 40); + observeImports(map, "./tame-math-object.js", 41); + observeImports(map, "./tame-regexp-constructor.js", 42); +- observeImports(map, "./whitelist-intrinsics.js", 43); ++ observeImports(map, "./tame-symbol-constructor.js", 43); ++ observeImports(map, "./whitelist-intrinsics.js", 44); + observeImports(map, "./whitelist.js", 17); + }, + liveVar: { + }, + onceVar: { +- repairIntrinsics: cells[44].repairIntrinsics.set, +- lockdown: cells[44].lockdown.set, ++ repairIntrinsics: cells[45].repairIntrinsics.set, ++ lockdown: cells[45].lockdown.set, + }, + importMeta: {}, + }); +- functors[45]({ ++ functors[46]({ + imports(entries) { + const map = new Map(entries); + observeImports(map, "./src/commons.js", 0); + observeImports(map, "./src/compartment-shim.js", 23); + observeImports(map, "./src/error/assert.js", 5); + observeImports(map, "./src/intrinsics.js", 24); +- observeImports(map, "./src/lockdown-shim.js", 44); ++ observeImports(map, "./src/lockdown-shim.js", 45); + observeImports(map, "./src/tame-function-tostring.js", 38); + }, + liveVar: { +diff --git a/node_modules/ses/dist/ses.umd.min.js b/node_modules/ses/dist/ses.umd.min.js +index 76e177a..4a64047 100644 +--- a/node_modules/ses/dist/ses.umd.min.js ++++ b/node_modules/ses/dist/ses.umd.min.js +@@ -1 +1 @@ +-"use strict";(()=>{const functors=[({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);const universalThis=globalThis;$h‍_once.universalThis(universalThis);const{Array:Array,Date:Date,FinalizationRegistry:FinalizationRegistry,Float32Array:Float32Array,JSON:JSON,Map:Map,Math:Math,Number:Number,Object:Object,Promise:Promise,Proxy:Proxy,Reflect:Reflect,RegExp:FERAL_REG_EXP,Set:Set,String:String,WeakMap:WeakMap,WeakSet:WeakSet}=globalThis;$h‍_once.Array(Array),$h‍_once.Date(Date),$h‍_once.FinalizationRegistry(FinalizationRegistry),$h‍_once.Float32Array(Float32Array),$h‍_once.JSON(JSON),$h‍_once.Map(Map),$h‍_once.Math(Math),$h‍_once.Number(Number),$h‍_once.Object(Object),$h‍_once.Promise(Promise),$h‍_once.Proxy(Proxy),$h‍_once.Reflect(Reflect),$h‍_once.FERAL_REG_EXP(FERAL_REG_EXP),$h‍_once.Set(Set),$h‍_once.String(String),$h‍_once.WeakMap(WeakMap),$h‍_once.WeakSet(WeakSet);const{Error:FERAL_ERROR,RangeError:RangeError,ReferenceError:ReferenceError,SyntaxError:SyntaxError,TypeError:TypeError}=globalThis;$h‍_once.FERAL_ERROR(FERAL_ERROR),$h‍_once.RangeError(RangeError),$h‍_once.ReferenceError(ReferenceError),$h‍_once.SyntaxError(SyntaxError),$h‍_once.TypeError(TypeError);const{assign:assign,create:create,defineProperties:defineProperties,entries:entries,freeze:freeze,getOwnPropertyDescriptor:getOwnPropertyDescriptor,getOwnPropertyDescriptors:getOwnPropertyDescriptors,getOwnPropertyNames:getOwnPropertyNames,getPrototypeOf:getPrototypeOf,is:is,isFrozen:isFrozen,isSealed:isSealed,isExtensible:isExtensible,keys:keys,prototype:objectPrototype,seal:seal,preventExtensions:preventExtensions,setPrototypeOf:setPrototypeOf,values:values,fromEntries:fromEntries}=Object;$h‍_once.assign(assign),$h‍_once.create(create),$h‍_once.defineProperties(defineProperties),$h‍_once.entries(entries),$h‍_once.freeze(freeze),$h‍_once.getOwnPropertyDescriptor(getOwnPropertyDescriptor),$h‍_once.getOwnPropertyDescriptors(getOwnPropertyDescriptors),$h‍_once.getOwnPropertyNames(getOwnPropertyNames),$h‍_once.getPrototypeOf(getPrototypeOf),$h‍_once.is(is),$h‍_once.isFrozen(isFrozen),$h‍_once.isSealed(isSealed),$h‍_once.isExtensible(isExtensible),$h‍_once.keys(keys),$h‍_once.objectPrototype(objectPrototype),$h‍_once.seal(seal),$h‍_once.preventExtensions(preventExtensions),$h‍_once.setPrototypeOf(setPrototypeOf),$h‍_once.values(values),$h‍_once.fromEntries(fromEntries);const{species:speciesSymbol,toStringTag:toStringTagSymbol,iterator:iteratorSymbol,matchAll:matchAllSymbol,unscopables:unscopablesSymbol,keyFor:symbolKeyFor,for:symbolFor}=Symbol;$h‍_once.speciesSymbol(speciesSymbol),$h‍_once.toStringTagSymbol(toStringTagSymbol),$h‍_once.iteratorSymbol(iteratorSymbol),$h‍_once.matchAllSymbol(matchAllSymbol),$h‍_once.unscopablesSymbol(unscopablesSymbol),$h‍_once.symbolKeyFor(symbolKeyFor),$h‍_once.symbolFor(symbolFor);const{isInteger:isInteger}=Number;$h‍_once.isInteger(isInteger);const{stringify:stringifyJson}=JSON;$h‍_once.stringifyJson(stringifyJson);const{defineProperty:originalDefineProperty}=Object;$h‍_once.defineProperty(((object,prop,descriptor)=>{const result=originalDefineProperty(object,prop,descriptor);if(result!==object)throw TypeError(`Please report that the original defineProperty silently failed to set ${stringifyJson(String(prop))}. (SES_DEFINE_PROPERTY_FAILED_SILENTLY)`);return result}));const{apply:apply,construct:construct,get:reflectGet,getOwnPropertyDescriptor:reflectGetOwnPropertyDescriptor,has:reflectHas,isExtensible:reflectIsExtensible,ownKeys:ownKeys,preventExtensions:reflectPreventExtensions,set:reflectSet}=Reflect;$h‍_once.apply(apply),$h‍_once.construct(construct),$h‍_once.reflectGet(reflectGet),$h‍_once.reflectGetOwnPropertyDescriptor(reflectGetOwnPropertyDescriptor),$h‍_once.reflectHas(reflectHas),$h‍_once.reflectIsExtensible(reflectIsExtensible),$h‍_once.ownKeys(ownKeys),$h‍_once.reflectPreventExtensions(reflectPreventExtensions),$h‍_once.reflectSet(reflectSet);const{isArray:isArray,prototype:arrayPrototype}=Array;$h‍_once.isArray(isArray),$h‍_once.arrayPrototype(arrayPrototype);const{prototype:mapPrototype}=Map;$h‍_once.mapPrototype(mapPrototype);const{revocable:proxyRevocable}=Proxy;$h‍_once.proxyRevocable(proxyRevocable);const{prototype:regexpPrototype}=RegExp;$h‍_once.regexpPrototype(regexpPrototype);const{prototype:setPrototype}=Set;$h‍_once.setPrototype(setPrototype);const{prototype:stringPrototype}=String;$h‍_once.stringPrototype(stringPrototype);const{prototype:weakmapPrototype}=WeakMap;$h‍_once.weakmapPrototype(weakmapPrototype);const{prototype:weaksetPrototype}=WeakSet;$h‍_once.weaksetPrototype(weaksetPrototype);const{prototype:functionPrototype}=Function;$h‍_once.functionPrototype(functionPrototype);const{prototype:promisePrototype}=Promise;$h‍_once.promisePrototype(promisePrototype);const typedArrayPrototype=getPrototypeOf(Uint8Array.prototype);$h‍_once.typedArrayPrototype(typedArrayPrototype);const{bind:bind}=functionPrototype,uncurryThis=bind.bind(bind.call);$h‍_once.uncurryThis(uncurryThis);const objectHasOwnProperty=uncurryThis(objectPrototype.hasOwnProperty);$h‍_once.objectHasOwnProperty(objectHasOwnProperty);const arrayFilter=uncurryThis(arrayPrototype.filter);$h‍_once.arrayFilter(arrayFilter);const arrayForEach=uncurryThis(arrayPrototype.forEach);$h‍_once.arrayForEach(arrayForEach);const arrayIncludes=uncurryThis(arrayPrototype.includes);$h‍_once.arrayIncludes(arrayIncludes);const arrayJoin=uncurryThis(arrayPrototype.join);$h‍_once.arrayJoin(arrayJoin);const arrayMap=uncurryThis(arrayPrototype.map);$h‍_once.arrayMap(arrayMap);const arrayPop=uncurryThis(arrayPrototype.pop);$h‍_once.arrayPop(arrayPop);const arrayPush=uncurryThis(arrayPrototype.push);$h‍_once.arrayPush(arrayPush);const arraySlice=uncurryThis(arrayPrototype.slice);$h‍_once.arraySlice(arraySlice);const arraySome=uncurryThis(arrayPrototype.some);$h‍_once.arraySome(arraySome);const arraySort=uncurryThis(arrayPrototype.sort);$h‍_once.arraySort(arraySort);const iterateArray=uncurryThis(arrayPrototype[iteratorSymbol]);$h‍_once.iterateArray(iterateArray);const mapSet=uncurryThis(mapPrototype.set);$h‍_once.mapSet(mapSet);const mapGet=uncurryThis(mapPrototype.get);$h‍_once.mapGet(mapGet);const mapHas=uncurryThis(mapPrototype.has);$h‍_once.mapHas(mapHas);const mapDelete=uncurryThis(mapPrototype.delete);$h‍_once.mapDelete(mapDelete);const mapEntries=uncurryThis(mapPrototype.entries);$h‍_once.mapEntries(mapEntries);const iterateMap=uncurryThis(mapPrototype[iteratorSymbol]);$h‍_once.iterateMap(iterateMap);const setAdd=uncurryThis(setPrototype.add);$h‍_once.setAdd(setAdd);const setDelete=uncurryThis(setPrototype.delete);$h‍_once.setDelete(setDelete);const setForEach=uncurryThis(setPrototype.forEach);$h‍_once.setForEach(setForEach);const setHas=uncurryThis(setPrototype.has);$h‍_once.setHas(setHas);const iterateSet=uncurryThis(setPrototype[iteratorSymbol]);$h‍_once.iterateSet(iterateSet);const regexpTest=uncurryThis(regexpPrototype.test);$h‍_once.regexpTest(regexpTest);const regexpExec=uncurryThis(regexpPrototype.exec);$h‍_once.regexpExec(regexpExec);const matchAllRegExp=uncurryThis(regexpPrototype[matchAllSymbol]);$h‍_once.matchAllRegExp(matchAllRegExp);const stringEndsWith=uncurryThis(stringPrototype.endsWith);$h‍_once.stringEndsWith(stringEndsWith);const stringIncludes=uncurryThis(stringPrototype.includes);$h‍_once.stringIncludes(stringIncludes);const stringIndexOf=uncurryThis(stringPrototype.indexOf);$h‍_once.stringIndexOf(stringIndexOf);const stringMatch=uncurryThis(stringPrototype.match);$h‍_once.stringMatch(stringMatch);const stringReplace=uncurryThis(stringPrototype.replace);$h‍_once.stringReplace(stringReplace);const stringSearch=uncurryThis(stringPrototype.search);$h‍_once.stringSearch(stringSearch);const stringSlice=uncurryThis(stringPrototype.slice);$h‍_once.stringSlice(stringSlice);const stringSplit=uncurryThis(stringPrototype.split);$h‍_once.stringSplit(stringSplit);const stringStartsWith=uncurryThis(stringPrototype.startsWith);$h‍_once.stringStartsWith(stringStartsWith);const iterateString=uncurryThis(stringPrototype[iteratorSymbol]);$h‍_once.iterateString(iterateString);const weakmapDelete=uncurryThis(weakmapPrototype.delete);$h‍_once.weakmapDelete(weakmapDelete);const weakmapGet=uncurryThis(weakmapPrototype.get);$h‍_once.weakmapGet(weakmapGet);const weakmapHas=uncurryThis(weakmapPrototype.has);$h‍_once.weakmapHas(weakmapHas);const weakmapSet=uncurryThis(weakmapPrototype.set);$h‍_once.weakmapSet(weakmapSet);const weaksetAdd=uncurryThis(weaksetPrototype.add);$h‍_once.weaksetAdd(weaksetAdd);const weaksetHas=uncurryThis(weaksetPrototype.has);$h‍_once.weaksetHas(weaksetHas);const functionToString=uncurryThis(functionPrototype.toString);$h‍_once.functionToString(functionToString);const{all:all}=Promise;$h‍_once.promiseAll((promises=>apply(all,Promise,[promises])));const promiseCatch=uncurryThis(promisePrototype.catch);$h‍_once.promiseCatch(promiseCatch);const promiseThen=uncurryThis(promisePrototype.then);$h‍_once.promiseThen(promiseThen);const finalizationRegistryRegister=FinalizationRegistry&&uncurryThis(FinalizationRegistry.prototype.register);$h‍_once.finalizationRegistryRegister(finalizationRegistryRegister);const finalizationRegistryUnregister=FinalizationRegistry&&uncurryThis(FinalizationRegistry.prototype.unregister);$h‍_once.finalizationRegistryUnregister(finalizationRegistryUnregister);$h‍_once.getConstructorOf((fn=>reflectGet(getPrototypeOf(fn),"constructor")));const immutableObject=freeze(create(null));$h‍_once.immutableObject(immutableObject);$h‍_once.isObject((value=>Object(value)===value));$h‍_once.isError((value=>value instanceof FERAL_ERROR));const FERAL_EVAL=eval;$h‍_once.FERAL_EVAL(FERAL_EVAL);const FERAL_FUNCTION=Function;$h‍_once.FERAL_FUNCTION(FERAL_FUNCTION);$h‍_once.noEvalEvaluate((()=>{throw new TypeError('Cannot eval with evalTaming set to "noEval" (SES_NO_EVAL)')}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([])},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([["./internal-types.js",[]]]);const{freeze:freeze}=Object,{isSafeInteger:isSafeInteger}=Number,makeSelfCell=data=>{const selfCell={next:void 0,prev:void 0,data:data};return selfCell.next=selfCell,selfCell.prev=selfCell,selfCell},spliceAfter=(prev,selfCell)=>{if(prev===selfCell)throw TypeError("Cannot splice a cell into itself");if(selfCell.next!==selfCell||selfCell.prev!==selfCell)throw TypeError("Expected self-linked cell");const cell=selfCell,next=prev.next;return cell.prev=prev,cell.next=next,prev.next=cell,next.prev=cell,cell},spliceOut=cell=>{const{prev:prev,next:next}=cell;prev.next=next,next.prev=prev,cell.prev=cell,cell.next=cell},makeLRUCacheMap=keysBudget=>{if(!isSafeInteger(keysBudget)||keysBudget<0)throw new TypeError("keysBudget must be a safe non-negative integer number");const keyToCell=new WeakMap;let size=0;const head=makeSelfCell(void 0),touchCell=key=>{const cell=keyToCell.get(key);if(void 0!==cell&&void 0!==cell.data)return spliceOut(cell),spliceAfter(head,cell),cell},has=key=>void 0!==touchCell(key);freeze(has);const get=key=>{const cell=touchCell(key);return cell&&cell.data&&cell.data.get(key)};freeze(get);const set=(key,value)=>{if(keysBudget<1)return lruCacheMap;let cell=touchCell(key);if(void 0===cell&&(cell=makeSelfCell(void 0),spliceAfter(head,cell)),!cell.data)for(size+=1,cell.data=new WeakMap,keyToCell.set(key,cell);size>keysBudget;){const condemned=head.prev;spliceOut(condemned),condemned.data=void 0,size-=1}return cell.data.set(key,value),lruCacheMap};freeze(set);const deleteIt=key=>{const cell=keyToCell.get(key);return void 0!==cell&&(spliceOut(cell),keyToCell.delete(key),void 0!==cell.data&&(cell.data=void 0,size-=1,!0))};freeze(deleteIt);const lruCacheMap=freeze({has:has,get:get,set:set,delete:deleteIt,[Symbol.toStringTag]:"LRUCacheMap"});return lruCacheMap};$h‍_once.makeLRUCacheMap(makeLRUCacheMap),freeze(makeLRUCacheMap);const makeNoteLogArgsArrayKit=(errorsBudget=1e3,argsPerErrorBudget=100)=>{if(!isSafeInteger(argsPerErrorBudget)||argsPerErrorBudget<1)throw new TypeError("argsPerErrorBudget must be a safe positive integer number");const noteLogArgsArrayMap=makeLRUCacheMap(errorsBudget),addLogArgs=(error,logArgs)=>{const logArgsArray=noteLogArgsArrayMap.get(error);void 0!==logArgsArray?(logArgsArray.length>=argsPerErrorBudget&&logArgsArray.shift(),logArgsArray.push(logArgs)):noteLogArgsArrayMap.set(error,[logArgs])};freeze(addLogArgs);const takeLogArgsArray=error=>{const result=noteLogArgsArrayMap.get(error);return noteLogArgsArrayMap.delete(error),result};return freeze(takeLogArgsArray),freeze({addLogArgs:addLogArgs,takeLogArgsArray:takeLogArgsArray})};$h‍_once.makeNoteLogArgsArrayKit(makeNoteLogArgsArrayKit),freeze(makeNoteLogArgsArrayKit)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Set,String,arrayJoin,arraySlice,freeze,is,isError,setAdd,setHas,stringIncludes,stringStartsWith,stringifyJson,toStringTagSymbol;$h‍_imports([["../commons.js",[["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arraySlice",[$h‍_a=>arraySlice=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["isError",[$h‍_a=>isError=$h‍_a]],["setAdd",[$h‍_a=>setAdd=$h‍_a]],["setHas",[$h‍_a=>setHas=$h‍_a]],["stringIncludes",[$h‍_a=>stringIncludes=$h‍_a]],["stringStartsWith",[$h‍_a=>stringStartsWith=$h‍_a]],["stringifyJson",[$h‍_a=>stringifyJson=$h‍_a]],["toStringTagSymbol",[$h‍_a=>toStringTagSymbol=$h‍_a]]]]]);$h‍_once.enJoin(((terms,conjunction)=>{if(0===terms.length)return"(none)";if(1===terms.length)return terms[0];if(2===terms.length){const[first,second]=terms;return`${first} ${conjunction} ${second}`}return`${arrayJoin(arraySlice(terms,0,-1),", ")}, ${conjunction} ${terms[terms.length-1]}`}));const an=str=>(str=`${str}`).length>=1&&stringIncludes("aeiouAEIOU",str[0])?`an ${str}`:`a ${str}`;$h‍_once.an(an),freeze(an);const bestEffortStringify=(payload,spaces=undefined)=>{const seenSet=new Set,replacer=(_,val)=>{switch(typeof val){case"object":return null===val?null:setHas(seenSet,val)?"[Seen]":(setAdd(seenSet,val),isError(val)?`[${val.name}: ${val.message}]`:toStringTagSymbol in val?`[${val[toStringTagSymbol]}]`:val);case"function":return`[Function ${val.name||""}]`;case"string":return stringStartsWith(val,"[")?`[${val}]`:val;case"undefined":case"symbol":return`[${String(val)}]`;case"bigint":return`[${val}n]`;case"number":return is(val,NaN)?"[NaN]":val===1/0?"[Infinity]":val===-1/0?"[-Infinity]":val;default:return val}};try{return stringifyJson(payload,replacer,spaces)}catch(_err){return"[Something that failed to stringify]"}};$h‍_once.bestEffortStringify(bestEffortStringify),freeze(bestEffortStringify)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([])},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let RangeError,TypeError,WeakMap,arrayJoin,arrayMap,arrayPop,arrayPush,assign,freeze,globalThis,is,isError,stringIndexOf,stringReplace,stringSlice,stringStartsWith,weakmapDelete,weakmapGet,weakmapHas,weakmapSet,an,bestEffortStringify,makeNoteLogArgsArrayKit;$h‍_imports([["../commons.js",[["RangeError",[$h‍_a=>RangeError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arrayPop",[$h‍_a=>arrayPop=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["isError",[$h‍_a=>isError=$h‍_a]],["stringIndexOf",[$h‍_a=>stringIndexOf=$h‍_a]],["stringReplace",[$h‍_a=>stringReplace=$h‍_a]],["stringSlice",[$h‍_a=>stringSlice=$h‍_a]],["stringStartsWith",[$h‍_a=>stringStartsWith=$h‍_a]],["weakmapDelete",[$h‍_a=>weakmapDelete=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapHas",[$h‍_a=>weakmapHas=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]]]],["./stringify-utils.js",[["an",[$h‍_a=>an=$h‍_a]],["bestEffortStringify",[$h‍_a=>bestEffortStringify=$h‍_a]]]],["./types.js",[]],["./internal-types.js",[]],["./note-log-args.js",[["makeNoteLogArgsArrayKit",[$h‍_a=>makeNoteLogArgsArrayKit=$h‍_a]]]]]);const declassifiers=new WeakMap,quote=(payload,spaces=undefined)=>{const result=freeze({toString:freeze((()=>bestEffortStringify(payload,spaces)))});return weakmapSet(declassifiers,result,payload),result};freeze(quote);const hiddenDetailsMap=new WeakMap,getMessageString=({template:template,args:args})=>{const parts=[template[0]];for(let i=0;i{const detailsToken=freeze({__proto__:DetailsTokenProto});return weakmapSet(hiddenDetailsMap,detailsToken,{template:template,args:args}),detailsToken};freeze(redactedDetails);const unredactedDetails=(template,...args)=>(args=arrayMap(args,(arg=>weakmapHas(declassifiers,arg)?arg:quote(arg))),redactedDetails(template,...args));$h‍_once.unredactedDetails(unredactedDetails),freeze(unredactedDetails);const getLogArgs=({template:template,args:args})=>{const logArgs=[template[0]];for(let i=0;i{let errorTag=weakmapGet(errorTags,err);return void 0!==errorTag||(errorTagNum+=1,errorTag=`${optErrorName}#${errorTagNum}`,weakmapSet(errorTags,err,errorTag)),errorTag},makeError=(optDetails=redactedDetails`Assert failed`,ErrorConstructor=globalThis.Error,{errorName:errorName}={})=>{"string"==typeof optDetails&&(optDetails=redactedDetails([optDetails]));const hiddenDetails=weakmapGet(hiddenDetailsMap,optDetails);if(void 0===hiddenDetails)throw new TypeError(`unrecognized details ${quote(optDetails)}`);const error=new ErrorConstructor(getMessageString(hiddenDetails));return weakmapSet(hiddenMessageLogArgs,error,getLogArgs(hiddenDetails)),void 0!==errorName&&tagError(error,errorName),error};freeze(makeError);const{addLogArgs:addLogArgs,takeLogArgsArray:takeLogArgsArray}=makeNoteLogArgsArrayKit(),hiddenNoteCallbackArrays=new WeakMap,note=(error,detailsNote)=>{"string"==typeof detailsNote&&(detailsNote=redactedDetails([detailsNote]));const hiddenDetails=weakmapGet(hiddenDetailsMap,detailsNote);if(void 0===hiddenDetails)throw new TypeError(`unrecognized details ${quote(detailsNote)}`);const logArgs=getLogArgs(hiddenDetails),callbacks=weakmapGet(hiddenNoteCallbackArrays,error);if(void 0!==callbacks)for(const callback of callbacks)callback(error,logArgs);else addLogArgs(error,logArgs)};freeze(note);const loggedErrorHandler={getStackString:globalThis.getStackString||(error=>{if(!("stack"in error))return"";const stackString=`${error.stack}`,pos=stringIndexOf(stackString,"\n");return stringStartsWith(stackString," ")||-1===pos?stackString:stringSlice(stackString,pos+1)}),tagError:error=>tagError(error),resetErrorTagNum:()=>{errorTagNum=0},getMessageLogArgs:error=>weakmapGet(hiddenMessageLogArgs,error),takeMessageLogArgs:error=>{const result=weakmapGet(hiddenMessageLogArgs,error);return weakmapDelete(hiddenMessageLogArgs,error),result},takeNoteLogArgsArray:(error,callback)=>{const result=takeLogArgsArray(error);if(void 0!==callback){const callbacks=weakmapGet(hiddenNoteCallbackArrays,error);callbacks?arrayPush(callbacks,callback):weakmapSet(hiddenNoteCallbackArrays,error,[callback])}return result||[]}};$h‍_once.loggedErrorHandler(loggedErrorHandler),freeze(loggedErrorHandler);const makeAssert=(optRaise=undefined,unredacted=!1)=>{const details=unredacted?unredactedDetails:redactedDetails,assertFailedDetails=details`Check failed`,fail=(optDetails=assertFailedDetails,ErrorConstructor=globalThis.Error)=>{const reason=makeError(optDetails,ErrorConstructor);throw void 0!==optRaise&&optRaise(reason),reason};freeze(fail);const Fail=(template,...args)=>fail(details(template,...args));const equal=(actual,expected,optDetails=undefined,ErrorConstructor=undefined)=>{is(actual,expected)||fail(optDetails||details`Expected ${actual} is same as ${expected}`,ErrorConstructor||RangeError)};freeze(equal);const assertTypeof=(specimen,typename,optDetails)=>{typeof specimen!==typename&&("string"==typeof typename||Fail`${quote(typename)} must be a string`,void 0===optDetails&&(optDetails=details(["",` must be ${an(typename)}`],specimen)),fail(optDetails,TypeError))};freeze(assertTypeof);const assert=assign((function(flag,optDetails=undefined,ErrorConstructor=undefined){flag||fail(optDetails,ErrorConstructor)}),{error:makeError,fail:fail,equal:equal,typeof:assertTypeof,string:(specimen,optDetails=undefined)=>assertTypeof(specimen,"string",optDetails),note:note,details:details,Fail:Fail,quote:quote,makeAssert:makeAssert});return freeze(assert)};$h‍_once.makeAssert(makeAssert),freeze(makeAssert);const assert=makeAssert();$h‍_once.assert(assert)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_EVAL,create,defineProperties,freeze,assert;$h‍_imports([["./commons.js",[["FERAL_EVAL",[$h‍_a=>FERAL_EVAL=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail}=assert;$h‍_once.makeEvalScopeKit((()=>{const evalScope=create(null),oneTimeEvalProperties=freeze({eval:{get:()=>(delete evalScope.eval,FERAL_EVAL),enumerable:!1,configurable:!0}}),evalScopeKit={evalScope:evalScope,allowNextEvalToBeUnsafe(){const{revoked:revoked}=evalScopeKit;null!==revoked&&Fail`a handler did not reset allowNextEvalToBeUnsafe ${revoked.err}`,defineProperties(evalScope,oneTimeEvalProperties)},revoked:null};return evalScopeKit}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let arrayFilter,arrayIncludes,getOwnPropertyDescriptor,getOwnPropertyNames,objectHasOwnProperty,regexpTest;$h‍_imports([["./commons.js",[["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayIncludes",[$h‍_a=>arrayIncludes=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyNames",[$h‍_a=>getOwnPropertyNames=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["regexpTest",[$h‍_a=>regexpTest=$h‍_a]]]]]);const keywords=["await","break","case","catch","class","const","continue","debugger","default","delete","do","else","export","extends","finally","for","function","if","import","in","instanceof","new","return","super","switch","this","throw","try","typeof","var","void","while","with","yield","let","static","enum","implements","package","protected","interface","private","public","await","null","true","false","this","arguments"],identifierPattern=/^[a-zA-Z_$][\w$]*$/,isValidIdentifierName=name=>"eval"!==name&&!arrayIncludes(keywords,name)&®expTest(identifierPattern,name);function isImmutableDataProperty(obj,name){const desc=getOwnPropertyDescriptor(obj,name);return desc&&!1===desc.configurable&&!1===desc.writable&&objectHasOwnProperty(desc,"value")}$h‍_once.isValidIdentifierName(isValidIdentifierName);$h‍_once.getScopeConstants(((globalObject,moduleLexicals={})=>{const globalObjectNames=getOwnPropertyNames(globalObject),moduleLexicalNames=getOwnPropertyNames(moduleLexicals),moduleLexicalConstants=arrayFilter(moduleLexicalNames,(name=>isValidIdentifierName(name)&&isImmutableDataProperty(moduleLexicals,name)));return{globalObjectConstants:arrayFilter(globalObjectNames,(name=>!arrayIncludes(moduleLexicalNames,name)&&isValidIdentifierName(name)&&isImmutableDataProperty(globalObject,name))),moduleLexicalConstants:moduleLexicalConstants}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,arrayJoin,apply,getScopeConstants;function buildOptimizer(constants,name){return 0===constants.length?"":`const {${arrayJoin(constants,",")}} = this.${name};`}$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]]]],["./scope-constants.js",[["getScopeConstants",[$h‍_a=>getScopeConstants=$h‍_a]]]]]);$h‍_once.makeEvaluate((context=>{const{globalObjectConstants:globalObjectConstants,moduleLexicalConstants:moduleLexicalConstants}=getScopeConstants(context.globalObject,context.moduleLexicals),globalObjectOptimizer=buildOptimizer(globalObjectConstants,"globalObject"),moduleLexicalOptimizer=buildOptimizer(moduleLexicalConstants,"moduleLexicals"),evaluateFactory=FERAL_FUNCTION(`\n with (this.scopeTerminator) {\n with (this.globalObject) {\n with (this.moduleLexicals) {\n with (this.evalScope) {\n ${globalObjectOptimizer}\n ${moduleLexicalOptimizer}\n return function() {\n 'use strict';\n return eval(arguments[0]);\n };\n }\n }\n }\n }\n `);return apply(evaluateFactory,context,[])}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Proxy,String,TypeError,ReferenceError,create,freeze,getOwnPropertyDescriptors,globalThis,immutableObject,assert;$h‍_imports([["./commons.js",[["Proxy",[$h‍_a=>Proxy=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["immutableObject",[$h‍_a=>immutableObject=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,alwaysThrowHandler=new Proxy(immutableObject,freeze({get(_shadow,prop){Fail`Please report unexpected scope handler trap: ${q(String(prop))}`}}));$h‍_once.alwaysThrowHandler(alwaysThrowHandler);const strictScopeTerminatorHandler=freeze(create(alwaysThrowHandler,getOwnPropertyDescriptors({get(_shadow,_prop){},set(_shadow,prop,_value){throw new ReferenceError(`${String(prop)} is not defined`)},has:(_shadow,prop)=>prop in globalThis,getPrototypeOf:()=>null,getOwnPropertyDescriptor(_target,prop){const quotedProp=q(String(prop));console.warn(`getOwnPropertyDescriptor trap on scopeTerminatorHandler for ${quotedProp}`,(new TypeError).stack)}})));$h‍_once.strictScopeTerminatorHandler(strictScopeTerminatorHandler);const strictScopeTerminator=new Proxy(immutableObject,strictScopeTerminatorHandler);$h‍_once.strictScopeTerminator(strictScopeTerminator)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Proxy,create,freeze,getOwnPropertyDescriptors,immutableObject,reflectSet,strictScopeTerminatorHandler,alwaysThrowHandler;$h‍_imports([["./commons.js",[["Proxy",[$h‍_a=>Proxy=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["immutableObject",[$h‍_a=>immutableObject=$h‍_a]],["reflectSet",[$h‍_a=>reflectSet=$h‍_a]]]],["./strict-scope-terminator.js",[["strictScopeTerminatorHandler",[$h‍_a=>strictScopeTerminatorHandler=$h‍_a]],["alwaysThrowHandler",[$h‍_a=>alwaysThrowHandler=$h‍_a]]]]]);const createSloppyGlobalsScopeTerminator=globalObject=>{const scopeProxyHandlerProperties={...strictScopeTerminatorHandler,set:(_shadow,prop,value)=>reflectSet(globalObject,prop,value),has:(_shadow,_prop)=>!0},sloppyGlobalsScopeTerminatorHandler=freeze(create(alwaysThrowHandler,getOwnPropertyDescriptors(scopeProxyHandlerProperties)));return new Proxy(immutableObject,sloppyGlobalsScopeTerminatorHandler)};$h‍_once.createSloppyGlobalsScopeTerminator(createSloppyGlobalsScopeTerminator),freeze(createSloppyGlobalsScopeTerminator)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_REG_EXP,regexpExec,stringSlice;$h‍_imports([["./commons.js",[["FERAL_REG_EXP",[$h‍_a=>FERAL_REG_EXP=$h‍_a]],["regexpExec",[$h‍_a=>regexpExec=$h‍_a]],["stringSlice",[$h‍_a=>stringSlice=$h‍_a]]]]]);const sourceMetaEntriesRegExp=new FERAL_REG_EXP("(?:\\s*//\\s*[@#]\\s*([a-zA-Z][a-zA-Z0-9]*)\\s*=\\s*([^\\s\\*]*)|/\\*\\s*[@#]\\s*([a-zA-Z][a-zA-Z0-9]*)\\s*=\\s*([^\\s\\*]*)\\s*\\*/)\\s*$");$h‍_once.getSourceURL((src=>{let sourceURL="";for(;src.length>0;){const match=regexpExec(sourceMetaEntriesRegExp,src);if(null===match)break;src=stringSlice(src,0,src.length-match[0].length),"sourceURL"===match[3]?sourceURL=match[4]:"sourceURL"===match[1]&&(sourceURL=match[2])}return sourceURL}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_REG_EXP,SyntaxError,stringReplace,stringSearch,stringSlice,stringSplit,freeze,getSourceURL;function getLineNumber(src,pattern){const index=stringSearch(src,pattern);if(index<0)return-1;const adjustment="\n"===src[index]?1:0;return stringSplit(stringSlice(src,0,index),"\n").length+adjustment}$h‍_imports([["./commons.js",[["FERAL_REG_EXP",[$h‍_a=>FERAL_REG_EXP=$h‍_a]],["SyntaxError",[$h‍_a=>SyntaxError=$h‍_a]],["stringReplace",[$h‍_a=>stringReplace=$h‍_a]],["stringSearch",[$h‍_a=>stringSearch=$h‍_a]],["stringSlice",[$h‍_a=>stringSlice=$h‍_a]],["stringSplit",[$h‍_a=>stringSplit=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./get-source-url.js",[["getSourceURL",[$h‍_a=>getSourceURL=$h‍_a]]]]]);const htmlCommentPattern=new FERAL_REG_EXP("(?:\x3c!--|--\x3e)","g"),rejectHtmlComments=src=>{const lineNumber=getLineNumber(src,htmlCommentPattern);if(lineNumber<0)return src;const name=getSourceURL(src);throw new SyntaxError(`Possible HTML comment rejected at ${name}:${lineNumber}. (SES_HTML_COMMENT_REJECTED)`)};$h‍_once.rejectHtmlComments(rejectHtmlComments);const evadeHtmlCommentTest=src=>stringReplace(src,htmlCommentPattern,(match=>"<"===match[0]?"< ! --":"-- >"));$h‍_once.evadeHtmlCommentTest(evadeHtmlCommentTest);const importPattern=new FERAL_REG_EXP("(^|[^.])\\bimport(\\s*(?:\\(|/[/*]))","g"),rejectImportExpressions=src=>{const lineNumber=getLineNumber(src,importPattern);if(lineNumber<0)return src;const name=getSourceURL(src);throw new SyntaxError(`Possible import expression rejected at ${name}:${lineNumber}. (SES_IMPORT_REJECTED)`)};$h‍_once.rejectImportExpressions(rejectImportExpressions);const evadeImportExpressionTest=src=>stringReplace(src,importPattern,((_,p1,p2)=>`${p1}__import__${p2}`));$h‍_once.evadeImportExpressionTest(evadeImportExpressionTest);const someDirectEvalPattern=new FERAL_REG_EXP("(^|[^.])\\beval(\\s*\\()","g"),rejectSomeDirectEvalExpressions=src=>{const lineNumber=getLineNumber(src,someDirectEvalPattern);if(lineNumber<0)return src;const name=getSourceURL(src);throw new SyntaxError(`Possible direct eval expression rejected at ${name}:${lineNumber}. (SES_EVAL_REJECTED)`)};$h‍_once.rejectSomeDirectEvalExpressions(rejectSomeDirectEvalExpressions);const mandatoryTransforms=source=>(source=rejectHtmlComments(source),source=rejectImportExpressions(source));$h‍_once.mandatoryTransforms(mandatoryTransforms);const applyTransforms=(source,transforms)=>{for(const transform of transforms)source=transform(source);return source};$h‍_once.applyTransforms(applyTransforms);const transforms=freeze({rejectHtmlComments:freeze(rejectHtmlComments),evadeHtmlCommentTest:freeze(evadeHtmlCommentTest),rejectImportExpressions:freeze(rejectImportExpressions),evadeImportExpressionTest:freeze(evadeImportExpressionTest),rejectSomeDirectEvalExpressions:freeze(rejectSomeDirectEvalExpressions),mandatoryTransforms:freeze(mandatoryTransforms),applyTransforms:freeze(applyTransforms)});$h‍_once.transforms(transforms)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let apply,freeze,strictScopeTerminator,createSloppyGlobalsScopeTerminator,makeEvalScopeKit,applyTransforms,mandatoryTransforms,makeEvaluate,assert;$h‍_imports([["./commons.js",[["apply",[$h‍_a=>apply=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./strict-scope-terminator.js",[["strictScopeTerminator",[$h‍_a=>strictScopeTerminator=$h‍_a]]]],["./sloppy-globals-scope-terminator.js",[["createSloppyGlobalsScopeTerminator",[$h‍_a=>createSloppyGlobalsScopeTerminator=$h‍_a]]]],["./eval-scope.js",[["makeEvalScopeKit",[$h‍_a=>makeEvalScopeKit=$h‍_a]]]],["./transforms.js",[["applyTransforms",[$h‍_a=>applyTransforms=$h‍_a]],["mandatoryTransforms",[$h‍_a=>mandatoryTransforms=$h‍_a]]]],["./make-evaluate.js",[["makeEvaluate",[$h‍_a=>makeEvaluate=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail}=assert;$h‍_once.makeSafeEvaluator((({globalObject:globalObject,moduleLexicals:moduleLexicals={},globalTransforms:globalTransforms=[],sloppyGlobalsMode:sloppyGlobalsMode=!1})=>{const scopeTerminator=sloppyGlobalsMode?createSloppyGlobalsScopeTerminator(globalObject):strictScopeTerminator,evalScopeKit=makeEvalScopeKit(),{evalScope:evalScope}=evalScopeKit,evaluateContext=freeze({evalScope:evalScope,moduleLexicals:moduleLexicals,globalObject:globalObject,scopeTerminator:scopeTerminator});let evaluate;return{safeEvaluate:(source,options)=>{const{localTransforms:localTransforms=[]}=options||{};let err;evaluate||(evaluate=makeEvaluate(evaluateContext)),source=applyTransforms(source,[...localTransforms,...globalTransforms,mandatoryTransforms]);try{return evalScopeKit.allowNextEvalToBeUnsafe(),apply(evaluate,globalObject,[source])}catch(e){throw err=e,e}finally{const unsafeEvalWasStillExposed="eval"in evalScope;delete evalScope.eval,unsafeEvalWasStillExposed&&(evalScopeKit.revoked={err:err},Fail`handler did not reset allowNextEvalToBeUnsafe ${err}`)}}}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,arrayPush,create,getOwnPropertyDescriptors,evadeHtmlCommentTest,evadeImportExpressionTest,rejectSomeDirectEvalExpressions,makeSafeEvaluator;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]]]],["./transforms.js",[["evadeHtmlCommentTest",[$h‍_a=>evadeHtmlCommentTest=$h‍_a]],["evadeImportExpressionTest",[$h‍_a=>evadeImportExpressionTest=$h‍_a]],["rejectSomeDirectEvalExpressions",[$h‍_a=>rejectSomeDirectEvalExpressions=$h‍_a]]]],["./make-safe-evaluator.js",[["makeSafeEvaluator",[$h‍_a=>makeSafeEvaluator=$h‍_a]]]]]);const provideCompartmentEvaluator=(compartmentFields,options)=>{const{sloppyGlobalsMode:sloppyGlobalsMode=!1,__moduleShimLexicals__:__moduleShimLexicals__}=options;let safeEvaluate;if(void 0!==__moduleShimLexicals__||sloppyGlobalsMode){let{globalTransforms:globalTransforms}=compartmentFields;const{globalObject:globalObject}=compartmentFields;let moduleLexicals;void 0!==__moduleShimLexicals__&&(globalTransforms=void 0,moduleLexicals=create(null,getOwnPropertyDescriptors(__moduleShimLexicals__))),({safeEvaluate:safeEvaluate}=makeSafeEvaluator({globalObject:globalObject,moduleLexicals:moduleLexicals,globalTransforms:globalTransforms,sloppyGlobalsMode:sloppyGlobalsMode}))}else({safeEvaluate:safeEvaluate}=compartmentFields);return{safeEvaluate:safeEvaluate}};$h‍_once.provideCompartmentEvaluator(provideCompartmentEvaluator);$h‍_once.compartmentEvaluate(((compartmentFields,source,options)=>{if("string"!=typeof source)throw new TypeError("first argument of evaluate() must be a string");const{transforms:transforms=[],__evadeHtmlCommentTest__:__evadeHtmlCommentTest__=!1,__evadeImportExpressionTest__:__evadeImportExpressionTest__=!1,__rejectSomeDirectEvalExpressions__:__rejectSomeDirectEvalExpressions__=!0}=options,localTransforms=[...transforms];!0===__evadeHtmlCommentTest__&&arrayPush(localTransforms,evadeHtmlCommentTest),!0===__evadeImportExpressionTest__&&arrayPush(localTransforms,evadeImportExpressionTest),!0===__rejectSomeDirectEvalExpressions__&&arrayPush(localTransforms,rejectSomeDirectEvalExpressions);const{safeEvaluate:safeEvaluate}=provideCompartmentEvaluator(compartmentFields,options);return safeEvaluate(source,{localTransforms:localTransforms})}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);$h‍_once.makeEvalFunction((safeEvaluate=>source=>"string"!=typeof source?source:safeEvaluate(source)))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,arrayJoin,arrayPop,defineProperties,getPrototypeOf,assert;$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayPop",[$h‍_a=>arrayPop=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail}=assert;$h‍_once.makeFunctionConstructor((safeEvaluate=>{const newFunction=function(_body){const bodyText=`${arrayPop(arguments)||""}`,parameters=`${arrayJoin(arguments,",")}`;new FERAL_FUNCTION(parameters,""),new FERAL_FUNCTION(bodyText);return safeEvaluate(`(function anonymous(${parameters}\n) {\n${bodyText}\n})`)};return defineProperties(newFunction,{prototype:{value:FERAL_FUNCTION.prototype,writable:!1,enumerable:!1,configurable:!1}}),getPrototypeOf(FERAL_FUNCTION)===FERAL_FUNCTION.prototype||Fail`Function prototype is the same accross compartments`,getPrototypeOf(newFunction)===FERAL_FUNCTION.prototype||Fail`Function constructor prototype is the same accross compartments`,newFunction}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);const constantProperties={Infinity:1/0,NaN:NaN,undefined:void 0};$h‍_once.constantProperties(constantProperties);$h‍_once.universalPropertyNames({isFinite:"isFinite",isNaN:"isNaN",parseFloat:"parseFloat",parseInt:"parseInt",decodeURI:"decodeURI",decodeURIComponent:"decodeURIComponent",encodeURI:"encodeURI",encodeURIComponent:"encodeURIComponent",Array:"Array",ArrayBuffer:"ArrayBuffer",BigInt:"BigInt",BigInt64Array:"BigInt64Array",BigUint64Array:"BigUint64Array",Boolean:"Boolean",DataView:"DataView",EvalError:"EvalError",Float32Array:"Float32Array",Float64Array:"Float64Array",Int8Array:"Int8Array",Int16Array:"Int16Array",Int32Array:"Int32Array",Map:"Map",Number:"Number",Object:"Object",Promise:"Promise",Proxy:"Proxy",RangeError:"RangeError",ReferenceError:"ReferenceError",Set:"Set",String:"String",Symbol:"Symbol",SyntaxError:"SyntaxError",TypeError:"TypeError",Uint8Array:"Uint8Array",Uint8ClampedArray:"Uint8ClampedArray",Uint16Array:"Uint16Array",Uint32Array:"Uint32Array",URIError:"URIError",WeakMap:"WeakMap",WeakSet:"WeakSet",JSON:"JSON",Reflect:"Reflect",escape:"escape",unescape:"unescape",lockdown:"lockdown",harden:"harden",HandledPromise:"HandledPromise"});$h‍_once.initialGlobalPropertyNames({Date:"%InitialDate%",Error:"%InitialError%",RegExp:"%InitialRegExp%",Math:"%InitialMath%",getStackString:"%InitialGetStackString%"});$h‍_once.sharedGlobalPropertyNames({Date:"%SharedDate%",Error:"%SharedError%",RegExp:"%SharedRegExp%",Math:"%SharedMath%"});$h‍_once.uniqueGlobalPropertyNames({globalThis:"%UniqueGlobalThis%",eval:"%UniqueEval%",Function:"%UniqueFunction%",Compartment:"%UniqueCompartment%"});const NativeErrors=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError];$h‍_once.NativeErrors(NativeErrors);const FunctionInstance={"[[Proto]]":"%FunctionPrototype%",length:"number",name:"string"};$h‍_once.FunctionInstance(FunctionInstance);const fn=FunctionInstance,asyncFn={"[[Proto]]":"%AsyncFunctionPrototype%"},getter={get:fn,set:"undefined"},accessor={get:fn,set:fn};function NativeError(prototype){return{"[[Proto]]":"%SharedError%",prototype:prototype}}function NativeErrorPrototype(constructor){return{"[[Proto]]":"%ErrorPrototype%",constructor:constructor,message:"string",name:"string",toString:!1,cause:!1}}function TypedArray(prototype){return{"[[Proto]]":"%TypedArray%",BYTES_PER_ELEMENT:"number",prototype:prototype}}function TypedArrayPrototype(constructor){return{"[[Proto]]":"%TypedArrayPrototype%",BYTES_PER_ELEMENT:"number",constructor:constructor}}$h‍_once.isAccessorPermit((permit=>permit===getter||permit===accessor));const SharedMath={E:"number",LN10:"number",LN2:"number",LOG10E:"number",LOG2E:"number",PI:"number",SQRT1_2:"number",SQRT2:"number","@@toStringTag":"string",abs:fn,acos:fn,acosh:fn,asin:fn,asinh:fn,atan:fn,atanh:fn,atan2:fn,cbrt:fn,ceil:fn,clz32:fn,cos:fn,cosh:fn,exp:fn,expm1:fn,floor:fn,fround:fn,hypot:fn,imul:fn,log:fn,log1p:fn,log10:fn,log2:fn,max:fn,min:fn,pow:fn,round:fn,sign:fn,sin:fn,sinh:fn,sqrt:fn,tan:fn,tanh:fn,trunc:fn,idiv:!1,idivmod:!1,imod:!1,imuldiv:!1,irem:!1,mod:!1},whitelist={"[[Proto]]":null,"%ThrowTypeError%":fn,Infinity:"number",NaN:"number",undefined:"undefined","%UniqueEval%":fn,isFinite:fn,isNaN:fn,parseFloat:fn,parseInt:fn,decodeURI:fn,decodeURIComponent:fn,encodeURI:fn,encodeURIComponent:fn,Object:{"[[Proto]]":"%FunctionPrototype%",assign:fn,create:fn,defineProperties:fn,defineProperty:fn,entries:fn,freeze:fn,fromEntries:fn,getOwnPropertyDescriptor:fn,getOwnPropertyDescriptors:fn,getOwnPropertyNames:fn,getOwnPropertySymbols:fn,getPrototypeOf:fn,hasOwn:fn,is:fn,isExtensible:fn,isFrozen:fn,isSealed:fn,keys:fn,preventExtensions:fn,prototype:"%ObjectPrototype%",seal:fn,setPrototypeOf:fn,values:fn},"%ObjectPrototype%":{"[[Proto]]":null,constructor:"Object",hasOwnProperty:fn,isPrototypeOf:fn,propertyIsEnumerable:fn,toLocaleString:fn,toString:fn,valueOf:fn,"--proto--":accessor,__defineGetter__:fn,__defineSetter__:fn,__lookupGetter__:fn,__lookupSetter__:fn},"%UniqueFunction%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%FunctionPrototype%"},"%InertFunction%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%FunctionPrototype%"},"%FunctionPrototype%":{apply:fn,bind:fn,call:fn,constructor:"%InertFunction%",toString:fn,"@@hasInstance":fn,caller:!1,arguments:!1},Boolean:{"[[Proto]]":"%FunctionPrototype%",prototype:"%BooleanPrototype%"},"%BooleanPrototype%":{constructor:"Boolean",toString:fn,valueOf:fn},Symbol:{"[[Proto]]":"%FunctionPrototype%",asyncIterator:"symbol",for:fn,hasInstance:"symbol",isConcatSpreadable:"symbol",iterator:"symbol",keyFor:fn,match:"symbol",matchAll:"symbol",prototype:"%SymbolPrototype%",replace:"symbol",search:"symbol",species:"symbol",split:"symbol",toPrimitive:"symbol",toStringTag:"symbol",unscopables:"symbol"},"%SymbolPrototype%":{constructor:"Symbol",description:getter,toString:fn,valueOf:fn,"@@toPrimitive":fn,"@@toStringTag":"string"},"%InitialError%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%ErrorPrototype%",captureStackTrace:fn,stackTraceLimit:accessor,prepareStackTrace:accessor},"%SharedError%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%ErrorPrototype%",captureStackTrace:fn,stackTraceLimit:accessor,prepareStackTrace:accessor},"%ErrorPrototype%":{constructor:"%SharedError%",message:"string",name:"string",toString:fn,at:!1,stack:accessor,cause:!1},EvalError:NativeError("%EvalErrorPrototype%"),RangeError:NativeError("%RangeErrorPrototype%"),ReferenceError:NativeError("%ReferenceErrorPrototype%"),SyntaxError:NativeError("%SyntaxErrorPrototype%"),TypeError:NativeError("%TypeErrorPrototype%"),URIError:NativeError("%URIErrorPrototype%"),"%EvalErrorPrototype%":NativeErrorPrototype("EvalError"),"%RangeErrorPrototype%":NativeErrorPrototype("RangeError"),"%ReferenceErrorPrototype%":NativeErrorPrototype("ReferenceError"),"%SyntaxErrorPrototype%":NativeErrorPrototype("SyntaxError"),"%TypeErrorPrototype%":NativeErrorPrototype("TypeError"),"%URIErrorPrototype%":NativeErrorPrototype("URIError"),Number:{"[[Proto]]":"%FunctionPrototype%",EPSILON:"number",isFinite:fn,isInteger:fn,isNaN:fn,isSafeInteger:fn,MAX_SAFE_INTEGER:"number",MAX_VALUE:"number",MIN_SAFE_INTEGER:"number",MIN_VALUE:"number",NaN:"number",NEGATIVE_INFINITY:"number",parseFloat:fn,parseInt:fn,POSITIVE_INFINITY:"number",prototype:"%NumberPrototype%"},"%NumberPrototype%":{constructor:"Number",toExponential:fn,toFixed:fn,toLocaleString:fn,toPrecision:fn,toString:fn,valueOf:fn},BigInt:{"[[Proto]]":"%FunctionPrototype%",asIntN:fn,asUintN:fn,prototype:"%BigIntPrototype%",bitLength:!1,fromArrayBuffer:!1},"%BigIntPrototype%":{constructor:"BigInt",toLocaleString:fn,toString:fn,valueOf:fn,"@@toStringTag":"string"},"%InitialMath%":{...SharedMath,random:fn},"%SharedMath%":SharedMath,"%InitialDate%":{"[[Proto]]":"%FunctionPrototype%",now:fn,parse:fn,prototype:"%DatePrototype%",UTC:fn},"%SharedDate%":{"[[Proto]]":"%FunctionPrototype%",now:fn,parse:fn,prototype:"%DatePrototype%",UTC:fn},"%DatePrototype%":{constructor:"%SharedDate%",getDate:fn,getDay:fn,getFullYear:fn,getHours:fn,getMilliseconds:fn,getMinutes:fn,getMonth:fn,getSeconds:fn,getTime:fn,getTimezoneOffset:fn,getUTCDate:fn,getUTCDay:fn,getUTCFullYear:fn,getUTCHours:fn,getUTCMilliseconds:fn,getUTCMinutes:fn,getUTCMonth:fn,getUTCSeconds:fn,setDate:fn,setFullYear:fn,setHours:fn,setMilliseconds:fn,setMinutes:fn,setMonth:fn,setSeconds:fn,setTime:fn,setUTCDate:fn,setUTCFullYear:fn,setUTCHours:fn,setUTCMilliseconds:fn,setUTCMinutes:fn,setUTCMonth:fn,setUTCSeconds:fn,toDateString:fn,toISOString:fn,toJSON:fn,toLocaleDateString:fn,toLocaleString:fn,toLocaleTimeString:fn,toString:fn,toTimeString:fn,toUTCString:fn,valueOf:fn,"@@toPrimitive":fn,getYear:fn,setYear:fn,toGMTString:fn},String:{"[[Proto]]":"%FunctionPrototype%",fromCharCode:fn,fromCodePoint:fn,prototype:"%StringPrototype%",raw:fn,fromArrayBuffer:!1},"%StringPrototype%":{length:"number",at:fn,charAt:fn,charCodeAt:fn,codePointAt:fn,concat:fn,constructor:"String",endsWith:fn,includes:fn,indexOf:fn,lastIndexOf:fn,localeCompare:fn,match:fn,matchAll:fn,normalize:fn,padEnd:fn,padStart:fn,repeat:fn,replace:fn,replaceAll:fn,search:fn,slice:fn,split:fn,startsWith:fn,substring:fn,toLocaleLowerCase:fn,toLocaleUpperCase:fn,toLowerCase:fn,toString:fn,toUpperCase:fn,trim:fn,trimEnd:fn,trimStart:fn,valueOf:fn,"@@iterator":fn,substr:fn,anchor:fn,big:fn,blink:fn,bold:fn,fixed:fn,fontcolor:fn,fontsize:fn,italics:fn,link:fn,small:fn,strike:fn,sub:fn,sup:fn,trimLeft:fn,trimRight:fn,compare:!1},"%StringIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},"%InitialRegExp%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%RegExpPrototype%","@@species":getter,input:!1,$_:!1,lastMatch:!1,"$&":!1,lastParen:!1,"$+":!1,leftContext:!1,"$`":!1,rightContext:!1,"$'":!1,$1:!1,$2:!1,$3:!1,$4:!1,$5:!1,$6:!1,$7:!1,$8:!1,$9:!1},"%SharedRegExp%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%RegExpPrototype%","@@species":getter},"%RegExpPrototype%":{constructor:"%SharedRegExp%",exec:fn,dotAll:getter,flags:getter,global:getter,ignoreCase:getter,"@@match":fn,"@@matchAll":fn,multiline:getter,"@@replace":fn,"@@search":fn,source:getter,"@@split":fn,sticky:getter,test:fn,toString:fn,unicode:getter,compile:!1,hasIndices:!1},"%RegExpStringIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},Array:{"[[Proto]]":"%FunctionPrototype%",from:fn,isArray:fn,of:fn,prototype:"%ArrayPrototype%","@@species":getter,at:fn},"%ArrayPrototype%":{at:fn,length:"number",concat:fn,constructor:"Array",copyWithin:fn,entries:fn,every:fn,fill:fn,filter:fn,find:fn,findIndex:fn,flat:fn,flatMap:fn,forEach:fn,includes:fn,indexOf:fn,join:fn,keys:fn,lastIndexOf:fn,map:fn,pop:fn,push:fn,reduce:fn,reduceRight:fn,reverse:fn,shift:fn,slice:fn,some:fn,sort:fn,splice:fn,toLocaleString:fn,toString:fn,unshift:fn,values:fn,"@@iterator":fn,"@@unscopables":{"[[Proto]]":null,copyWithin:"boolean",entries:"boolean",fill:"boolean",find:"boolean",findIndex:"boolean",flat:"boolean",flatMap:"boolean",includes:"boolean",keys:"boolean",values:"boolean",at:!1,findLast:"boolean",findLastIndex:"boolean"},findLast:fn,findLastIndex:fn},"%ArrayIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},"%TypedArray%":{"[[Proto]]":"%FunctionPrototype%",from:fn,of:fn,prototype:"%TypedArrayPrototype%","@@species":getter},"%TypedArrayPrototype%":{at:fn,buffer:getter,byteLength:getter,byteOffset:getter,constructor:"%TypedArray%",copyWithin:fn,entries:fn,every:fn,fill:fn,filter:fn,find:fn,findIndex:fn,forEach:fn,includes:fn,indexOf:fn,join:fn,keys:fn,lastIndexOf:fn,length:getter,map:fn,reduce:fn,reduceRight:fn,reverse:fn,set:fn,slice:fn,some:fn,sort:fn,subarray:fn,toLocaleString:fn,toString:fn,values:fn,"@@iterator":fn,"@@toStringTag":getter,findLast:fn,findLastIndex:fn},BigInt64Array:TypedArray("%BigInt64ArrayPrototype%"),BigUint64Array:TypedArray("%BigUint64ArrayPrototype%"),Float32Array:TypedArray("%Float32ArrayPrototype%"),Float64Array:TypedArray("%Float64ArrayPrototype%"),Int16Array:TypedArray("%Int16ArrayPrototype%"),Int32Array:TypedArray("%Int32ArrayPrototype%"),Int8Array:TypedArray("%Int8ArrayPrototype%"),Uint16Array:TypedArray("%Uint16ArrayPrototype%"),Uint32Array:TypedArray("%Uint32ArrayPrototype%"),Uint8Array:TypedArray("%Uint8ArrayPrototype%"),Uint8ClampedArray:TypedArray("%Uint8ClampedArrayPrototype%"),"%BigInt64ArrayPrototype%":TypedArrayPrototype("BigInt64Array"),"%BigUint64ArrayPrototype%":TypedArrayPrototype("BigUint64Array"),"%Float32ArrayPrototype%":TypedArrayPrototype("Float32Array"),"%Float64ArrayPrototype%":TypedArrayPrototype("Float64Array"),"%Int16ArrayPrototype%":TypedArrayPrototype("Int16Array"),"%Int32ArrayPrototype%":TypedArrayPrototype("Int32Array"),"%Int8ArrayPrototype%":TypedArrayPrototype("Int8Array"),"%Uint16ArrayPrototype%":TypedArrayPrototype("Uint16Array"),"%Uint32ArrayPrototype%":TypedArrayPrototype("Uint32Array"),"%Uint8ArrayPrototype%":TypedArrayPrototype("Uint8Array"),"%Uint8ClampedArrayPrototype%":TypedArrayPrototype("Uint8ClampedArray"),Map:{"[[Proto]]":"%FunctionPrototype%","@@species":getter,prototype:"%MapPrototype%"},"%MapPrototype%":{clear:fn,constructor:"Map",delete:fn,entries:fn,forEach:fn,get:fn,has:fn,keys:fn,set:fn,size:getter,values:fn,"@@iterator":fn,"@@toStringTag":"string"},"%MapIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},Set:{"[[Proto]]":"%FunctionPrototype%",prototype:"%SetPrototype%","@@species":getter},"%SetPrototype%":{add:fn,clear:fn,constructor:"Set",delete:fn,entries:fn,forEach:fn,has:fn,keys:fn,size:getter,values:fn,"@@iterator":fn,"@@toStringTag":"string"},"%SetIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},WeakMap:{"[[Proto]]":"%FunctionPrototype%",prototype:"%WeakMapPrototype%"},"%WeakMapPrototype%":{constructor:"WeakMap",delete:fn,get:fn,has:fn,set:fn,"@@toStringTag":"string"},WeakSet:{"[[Proto]]":"%FunctionPrototype%",prototype:"%WeakSetPrototype%"},"%WeakSetPrototype%":{add:fn,constructor:"WeakSet",delete:fn,has:fn,"@@toStringTag":"string"},ArrayBuffer:{"[[Proto]]":"%FunctionPrototype%",isView:fn,prototype:"%ArrayBufferPrototype%","@@species":getter,fromString:!1,fromBigInt:!1},"%ArrayBufferPrototype%":{byteLength:getter,constructor:"ArrayBuffer",slice:fn,"@@toStringTag":"string",concat:!1,transfer:fn,resize:fn,resizable:getter,maxByteLength:getter},SharedArrayBuffer:!1,"%SharedArrayBufferPrototype%":!1,DataView:{"[[Proto]]":"%FunctionPrototype%",BYTES_PER_ELEMENT:"number",prototype:"%DataViewPrototype%"},"%DataViewPrototype%":{buffer:getter,byteLength:getter,byteOffset:getter,constructor:"DataView",getBigInt64:fn,getBigUint64:fn,getFloat32:fn,getFloat64:fn,getInt8:fn,getInt16:fn,getInt32:fn,getUint8:fn,getUint16:fn,getUint32:fn,setBigInt64:fn,setBigUint64:fn,setFloat32:fn,setFloat64:fn,setInt8:fn,setInt16:fn,setInt32:fn,setUint8:fn,setUint16:fn,setUint32:fn,"@@toStringTag":"string"},Atomics:!1,JSON:{parse:fn,stringify:fn,"@@toStringTag":"string"},"%IteratorPrototype%":{"@@iterator":fn},"%AsyncIteratorPrototype%":{"@@asyncIterator":fn},"%InertGeneratorFunction%":{"[[Proto]]":"%InertFunction%",prototype:"%Generator%"},"%Generator%":{"[[Proto]]":"%FunctionPrototype%",constructor:"%InertGeneratorFunction%",prototype:"%GeneratorPrototype%","@@toStringTag":"string"},"%InertAsyncGeneratorFunction%":{"[[Proto]]":"%InertFunction%",prototype:"%AsyncGenerator%"},"%AsyncGenerator%":{"[[Proto]]":"%FunctionPrototype%",constructor:"%InertAsyncGeneratorFunction%",prototype:"%AsyncGeneratorPrototype%",length:"number","@@toStringTag":"string"},"%GeneratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",constructor:"%Generator%",next:fn,return:fn,throw:fn,"@@toStringTag":"string"},"%AsyncGeneratorPrototype%":{"[[Proto]]":"%AsyncIteratorPrototype%",constructor:"%AsyncGenerator%",next:fn,return:fn,throw:fn,"@@toStringTag":"string"},HandledPromise:{"[[Proto]]":"Promise",applyFunction:fn,applyFunctionSendOnly:fn,applyMethod:fn,applyMethodSendOnly:fn,get:fn,getSendOnly:fn,prototype:"%PromisePrototype%",resolve:fn},Promise:{"[[Proto]]":"%FunctionPrototype%",all:fn,allSettled:fn,any:!1,prototype:"%PromisePrototype%",race:fn,reject:fn,resolve:fn,"@@species":getter},"%PromisePrototype%":{catch:fn,constructor:"Promise",finally:fn,then:fn,"@@toStringTag":"string","UniqueSymbol(async_id_symbol)":accessor,"UniqueSymbol(trigger_async_id_symbol)":accessor,"UniqueSymbol(destroyed)":accessor},"%InertAsyncFunction%":{"[[Proto]]":"%InertFunction%",prototype:"%AsyncFunctionPrototype%"},"%AsyncFunctionPrototype%":{"[[Proto]]":"%FunctionPrototype%",constructor:"%InertAsyncFunction%",length:"number","@@toStringTag":"string"},Reflect:{apply:fn,construct:fn,defineProperty:fn,deleteProperty:fn,get:fn,getOwnPropertyDescriptor:fn,getPrototypeOf:fn,has:fn,isExtensible:fn,ownKeys:fn,preventExtensions:fn,set:fn,setPrototypeOf:fn,"@@toStringTag":"string"},Proxy:{"[[Proto]]":"%FunctionPrototype%",revocable:fn},escape:fn,unescape:fn,"%UniqueCompartment%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%CompartmentPrototype%",toString:fn},"%InertCompartment%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%CompartmentPrototype%",toString:fn},"%CompartmentPrototype%":{constructor:"%InertCompartment%",evaluate:fn,globalThis:getter,name:getter,toString:fn,import:asyncFn,load:asyncFn,importNow:fn,module:fn},lockdown:fn,harden:{...fn,isFake:"boolean"},"%InitialGetStackString%":fn};$h‍_once.whitelist(whitelist)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,assign,create,defineProperty,entries,freeze,objectHasOwnProperty,unscopablesSymbol,makeEvalFunction,makeFunctionConstructor,constantProperties,universalPropertyNames;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["unscopablesSymbol",[$h‍_a=>unscopablesSymbol=$h‍_a]]]],["./make-eval-function.js",[["makeEvalFunction",[$h‍_a=>makeEvalFunction=$h‍_a]]]],["./make-function-constructor.js",[["makeFunctionConstructor",[$h‍_a=>makeFunctionConstructor=$h‍_a]]]],["./whitelist.js",[["constantProperties",[$h‍_a=>constantProperties=$h‍_a]],["universalPropertyNames",[$h‍_a=>universalPropertyNames=$h‍_a]]]]]);$h‍_once.setGlobalObjectSymbolUnscopables((globalObject=>{defineProperty(globalObject,unscopablesSymbol,freeze(assign(create(null),{set:freeze((()=>{throw new TypeError("Cannot set Symbol.unscopables of a Compartment's globalThis")})),enumerable:!1,configurable:!1})))}));$h‍_once.setGlobalObjectConstantProperties((globalObject=>{for(const[name,constant]of entries(constantProperties))defineProperty(globalObject,name,{value:constant,writable:!1,enumerable:!1,configurable:!1})}));$h‍_once.setGlobalObjectMutableProperties(((globalObject,{intrinsics:intrinsics,newGlobalPropertyNames:newGlobalPropertyNames,makeCompartmentConstructor:makeCompartmentConstructor,markVirtualizedNativeFunction:markVirtualizedNativeFunction})=>{for(const[name,intrinsicName]of entries(universalPropertyNames))objectHasOwnProperty(intrinsics,intrinsicName)&&defineProperty(globalObject,name,{value:intrinsics[intrinsicName],writable:!0,enumerable:!1,configurable:!0});for(const[name,intrinsicName]of entries(newGlobalPropertyNames))objectHasOwnProperty(intrinsics,intrinsicName)&&defineProperty(globalObject,name,{value:intrinsics[intrinsicName],writable:!0,enumerable:!1,configurable:!0});const perCompartmentGlobals={globalThis:globalObject};perCompartmentGlobals.Compartment=makeCompartmentConstructor(makeCompartmentConstructor,intrinsics,markVirtualizedNativeFunction);for(const[name,value]of entries(perCompartmentGlobals))defineProperty(globalObject,name,{value:value,writable:!0,enumerable:!1,configurable:!0}),"function"==typeof value&&markVirtualizedNativeFunction(value)}));$h‍_once.setGlobalObjectEvaluators(((globalObject,evaluator,markVirtualizedNativeFunction)=>{{const f=makeEvalFunction(evaluator);markVirtualizedNativeFunction(f),defineProperty(globalObject,"eval",{value:f,writable:!0,enumerable:!1,configurable:!0})}{const f=makeFunctionConstructor(evaluator);markVirtualizedNativeFunction(f),defineProperty(globalObject,"Function",{value:f,writable:!0,enumerable:!1,configurable:!0})}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let ReferenceError,TypeError,Map,Set,arrayJoin,arrayMap,arrayPush,create,freeze,mapGet,mapHas,mapSet,setAdd,promiseCatch,promiseThen,values,weakmapGet,assert;$h‍_imports([["./commons.js",[["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["Map",[$h‍_a=>Map=$h‍_a]],["Set",[$h‍_a=>Set=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["setAdd",[$h‍_a=>setAdd=$h‍_a]],["promiseCatch",[$h‍_a=>promiseCatch=$h‍_a]],["promiseThen",[$h‍_a=>promiseThen=$h‍_a]],["values",[$h‍_a=>values=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,details:d,quote:q}=assert,noop=()=>{};$h‍_once.makeAlias(((compartment,specifier)=>freeze({compartment:compartment,specifier:specifier})));const loadRecord=(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,staticModuleRecord,pendingJobs,moduleLoads,errors,importMeta)=>{const{resolveHook:resolveHook,moduleRecords:moduleRecords}=weakmapGet(compartmentPrivateFields,compartment),resolvedImports=((imports,resolveHook,fullReferrerSpecifier)=>{const resolvedImports=create(null);for(const importSpecifier of imports){const fullSpecifier=resolveHook(importSpecifier,fullReferrerSpecifier);resolvedImports[importSpecifier]=fullSpecifier}return freeze(resolvedImports)})(staticModuleRecord.imports,resolveHook,moduleSpecifier),moduleRecord=freeze({compartment:compartment,staticModuleRecord:staticModuleRecord,moduleSpecifier:moduleSpecifier,resolvedImports:resolvedImports,importMeta:importMeta});for(const fullSpecifier of values(resolvedImports)){const dependencyLoaded=memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,compartment,fullSpecifier,pendingJobs,moduleLoads,errors);setAdd(pendingJobs,promiseThen(dependencyLoaded,noop,(error=>{arrayPush(errors,error)})))}return mapSet(moduleRecords,moduleSpecifier,moduleRecord),moduleRecord},memoizedLoadWithErrorAnnotation=async(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors)=>{const{name:compartmentName}=weakmapGet(compartmentPrivateFields,compartment);let compartmentLoading=mapGet(moduleLoads,compartment);void 0===compartmentLoading&&(compartmentLoading=new Map,mapSet(moduleLoads,compartment,compartmentLoading));let moduleLoading=mapGet(compartmentLoading,moduleSpecifier);return void 0!==moduleLoading||(moduleLoading=promiseCatch((async(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors)=>{const{importHook:importHook,moduleMap:moduleMap,moduleMapHook:moduleMapHook,moduleRecords:moduleRecords}=weakmapGet(compartmentPrivateFields,compartment);let aliasNamespace=moduleMap[moduleSpecifier];if(void 0===aliasNamespace&&void 0!==moduleMapHook&&(aliasNamespace=moduleMapHook(moduleSpecifier)),"string"==typeof aliasNamespace)assert.fail(d`Cannot map module ${q(moduleSpecifier)} to ${q(aliasNamespace)} in parent compartment, not yet implemented`,TypeError);else if(void 0!==aliasNamespace){const alias=weakmapGet(moduleAliases,aliasNamespace);void 0===alias&&assert.fail(d`Cannot map module ${q(moduleSpecifier)} because the value is not a module exports namespace, or is from another realm`,ReferenceError);const aliasRecord=await memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,alias.compartment,alias.specifier,pendingJobs,moduleLoads,errors);return mapSet(moduleRecords,moduleSpecifier,aliasRecord),aliasRecord}if(mapHas(moduleRecords,moduleSpecifier))return mapGet(moduleRecords,moduleSpecifier);const staticModuleRecord=await importHook(moduleSpecifier);if(null!==staticModuleRecord&&"object"==typeof staticModuleRecord||Fail`importHook must return a promise for an object, for module ${q(moduleSpecifier)} in compartment ${q(compartment.name)}`,void 0!==staticModuleRecord.specifier){if(void 0!==staticModuleRecord.record){if(void 0!==staticModuleRecord.compartment)throw new TypeError("Cannot redirect to an explicit record with a specified compartment");const{compartment:aliasCompartment=compartment,specifier:aliasSpecifier=moduleSpecifier,record:aliasModuleRecord,importMeta:importMeta}=staticModuleRecord,aliasRecord=loadRecord(compartmentPrivateFields,moduleAliases,aliasCompartment,aliasSpecifier,aliasModuleRecord,pendingJobs,moduleLoads,errors,importMeta);return mapSet(moduleRecords,moduleSpecifier,aliasRecord),aliasRecord}if(void 0!==staticModuleRecord.compartment){if(void 0!==staticModuleRecord.importMeta)throw new TypeError("Cannot redirect to an implicit record with a specified importMeta");const aliasRecord=await memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,staticModuleRecord.compartment,staticModuleRecord.specifier,pendingJobs,moduleLoads,errors);return mapSet(moduleRecords,moduleSpecifier,aliasRecord),aliasRecord}throw new TypeError("Unnexpected RedirectStaticModuleInterface record shape")}return loadRecord(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,staticModuleRecord,pendingJobs,moduleLoads,errors)})(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors),(error=>{throw assert.note(error,d`${error.message}, loading ${q(moduleSpecifier)} in compartment ${q(compartmentName)}`),error})),mapSet(compartmentLoading,moduleSpecifier,moduleLoading)),moduleLoading};$h‍_once.load((async(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier)=>{const{name:compartmentName}=weakmapGet(compartmentPrivateFields,compartment),pendingJobs=new Set,moduleLoads=new Map,errors=[],dependencyLoaded=memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors);setAdd(pendingJobs,promiseThen(dependencyLoaded,noop,(error=>{arrayPush(errors,error)})));for(const job of pendingJobs)await job;if(errors.length>0)throw new TypeError(`Failed to load module ${q(moduleSpecifier)} in package ${q(compartmentName)} (${errors.length} underlying failures: ${arrayJoin(arrayMap(errors,(error=>error.message)),", ")}`)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let makeAlias,Proxy,TypeError,create,freeze,mapGet,mapHas,mapSet,ownKeys,reflectGet,reflectGetOwnPropertyDescriptor,reflectHas,reflectIsExtensible,reflectPreventExtensions,weakmapSet,assert;$h‍_imports([["./module-load.js",[["makeAlias",[$h‍_a=>makeAlias=$h‍_a]]]],["./commons.js",[["Proxy",[$h‍_a=>Proxy=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["reflectGet",[$h‍_a=>reflectGet=$h‍_a]],["reflectGetOwnPropertyDescriptor",[$h‍_a=>reflectGetOwnPropertyDescriptor=$h‍_a]],["reflectHas",[$h‍_a=>reflectHas=$h‍_a]],["reflectIsExtensible",[$h‍_a=>reflectIsExtensible=$h‍_a]],["reflectPreventExtensions",[$h‍_a=>reflectPreventExtensions=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{quote:q}=assert,deferExports=()=>{let active=!1;const proxiedExports=create(null);return freeze({activate(){active=!0},proxiedExports:proxiedExports,exportsProxy:new Proxy(proxiedExports,{get(_target,name,receiver){if(!active)throw new TypeError(`Cannot get property ${q(name)} of module exports namespace, the module has not yet begun to execute`);return reflectGet(proxiedExports,name,receiver)},set(_target,name,_value){throw new TypeError(`Cannot set property ${q(name)} of module exports namespace`)},has(_target,name){if(!active)throw new TypeError(`Cannot check property ${q(name)}, the module has not yet begun to execute`);return reflectHas(proxiedExports,name)},deleteProperty(_target,name){throw new TypeError(`Cannot delete property ${q(name)}s of module exports namespace`)},ownKeys(_target){if(!active)throw new TypeError("Cannot enumerate keys, the module has not yet begun to execute");return ownKeys(proxiedExports)},getOwnPropertyDescriptor(_target,name){if(!active)throw new TypeError(`Cannot get own property descriptor ${q(name)}, the module has not yet begun to execute`);return reflectGetOwnPropertyDescriptor(proxiedExports,name)},preventExtensions(_target){if(!active)throw new TypeError("Cannot prevent extensions of module exports namespace, the module has not yet begun to execute");return reflectPreventExtensions(proxiedExports)},isExtensible(){if(!active)throw new TypeError("Cannot check extensibility of module exports namespace, the module has not yet begun to execute");return reflectIsExtensible(proxiedExports)},getPrototypeOf:_target=>null,setPrototypeOf(_target,_proto){throw new TypeError("Cannot set prototype of module exports namespace")},defineProperty(_target,name,_descriptor){throw new TypeError(`Cannot define property ${q(name)} of module exports namespace`)},apply(_target,_thisArg,_args){throw new TypeError("Cannot call module exports namespace, it is not a function")},construct(_target,_args){throw new TypeError("Cannot construct module exports namespace, it is not a constructor")}})})};$h‍_once.deferExports(deferExports);$h‍_once.getDeferredExports(((compartment,compartmentPrivateFields,moduleAliases,specifier)=>{const{deferredExports:deferredExports}=compartmentPrivateFields;if(!mapHas(deferredExports,specifier)){const deferred=deferExports();weakmapSet(moduleAliases,deferred.exportsProxy,makeAlias(compartment,specifier)),mapSet(deferredExports,specifier,deferred)}return mapGet(deferredExports,specifier)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let assert,getDeferredExports,ReferenceError,SyntaxError,TypeError,arrayForEach,arrayIncludes,arrayPush,arraySome,arraySort,create,defineProperty,entries,freeze,isArray,keys,mapGet,weakmapGet,reflectHas,assign,compartmentEvaluate;$h‍_imports([["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]],["./module-proxy.js",[["getDeferredExports",[$h‍_a=>getDeferredExports=$h‍_a]]]],["./commons.js",[["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["SyntaxError",[$h‍_a=>SyntaxError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayForEach",[$h‍_a=>arrayForEach=$h‍_a]],["arrayIncludes",[$h‍_a=>arrayIncludes=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["arraySome",[$h‍_a=>arraySome=$h‍_a]],["arraySort",[$h‍_a=>arraySort=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["isArray",[$h‍_a=>isArray=$h‍_a]],["keys",[$h‍_a=>keys=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["reflectHas",[$h‍_a=>reflectHas=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]]]],["./compartment-evaluate.js",[["compartmentEvaluate",[$h‍_a=>compartmentEvaluate=$h‍_a]]]]]);const{quote:q}=assert;$h‍_once.makeThirdPartyModuleInstance(((compartmentPrivateFields,staticModuleRecord,compartment,moduleAliases,moduleSpecifier,resolvedImports)=>{const{exportsProxy:exportsProxy,proxiedExports:proxiedExports,activate:activate}=getDeferredExports(compartment,weakmapGet(compartmentPrivateFields,compartment),moduleAliases,moduleSpecifier),notifiers=create(null);if(staticModuleRecord.exports){if(!isArray(staticModuleRecord.exports)||arraySome(staticModuleRecord.exports,(name=>"string"!=typeof name)))throw new TypeError(`SES third-party static module record "exports" property must be an array of strings for module ${moduleSpecifier}`);arrayForEach(staticModuleRecord.exports,(name=>{let value=proxiedExports[name];const updaters=[];defineProperty(proxiedExports,name,{get:()=>value,set:newValue=>{value=newValue;for(const updater of updaters)updater(newValue)},enumerable:!0,configurable:!1}),notifiers[name]=update=>{arrayPush(updaters,update),update(value)}})),notifiers["*"]=update=>{update(proxiedExports)}}const localState={activated:!1};return freeze({notifiers:notifiers,exportsProxy:exportsProxy,execute(){if(reflectHas(localState,"errorFromExecute"))throw localState.errorFromExecute;if(!localState.activated){activate(),localState.activated=!0;try{staticModuleRecord.execute(proxiedExports,compartment,resolvedImports)}catch(err){throw localState.errorFromExecute=err,err}}}})}));$h‍_once.makeModuleInstance(((privateFields,moduleAliases,moduleRecord,importedInstances)=>{const{compartment:compartment,moduleSpecifier:moduleSpecifier,staticModuleRecord:staticModuleRecord,importMeta:moduleRecordMeta}=moduleRecord,{reexports:exportAlls=[],__syncModuleProgram__:functorSource,__fixedExportMap__:fixedExportMap={},__liveExportMap__:liveExportMap={},__reexportMap__:reexportMap={},__needsImportMeta__:needsImportMeta=!1,__syncModuleFunctor__:__syncModuleFunctor__}=staticModuleRecord,compartmentFields=weakmapGet(privateFields,compartment),{__shimTransforms__:__shimTransforms__,importMetaHook:importMetaHook}=compartmentFields,{exportsProxy:exportsProxy,proxiedExports:proxiedExports,activate:activate}=getDeferredExports(compartment,compartmentFields,moduleAliases,moduleSpecifier),exportsProps=create(null),moduleLexicals=create(null),onceVar=create(null),liveVar=create(null),importMeta=create(null);moduleRecordMeta&&assign(importMeta,moduleRecordMeta),needsImportMeta&&importMetaHook&&importMetaHook(moduleSpecifier,importMeta);const localGetNotify=create(null),notifiers=create(null);arrayForEach(entries(fixedExportMap),(([fixedExportName,[localName]])=>{let fixedGetNotify=localGetNotify[localName];if(!fixedGetNotify){let value,tdz=!0,optUpdaters=[];const get=()=>{if(tdz)throw new ReferenceError(`binding ${q(localName)} not yet initialized`);return value},init=freeze((initValue=>{if(!tdz)throw new TypeError(`Internal: binding ${q(localName)} already initialized`);value=initValue;const updaters=optUpdaters;optUpdaters=null,tdz=!1;for(const updater of updaters||[])updater(initValue);return initValue}));fixedGetNotify={get:get,notify:updater=>{updater!==init&&(tdz?arrayPush(optUpdaters||[],updater):updater(value))}},localGetNotify[localName]=fixedGetNotify,onceVar[localName]=init}exportsProps[fixedExportName]={get:fixedGetNotify.get,set:void 0,enumerable:!0,configurable:!1},notifiers[fixedExportName]=fixedGetNotify.notify})),arrayForEach(entries(liveExportMap),(([liveExportName,[localName,setProxyTrap]])=>{let liveGetNotify=localGetNotify[localName];if(!liveGetNotify){let value,tdz=!0;const updaters=[],get=()=>{if(tdz)throw new ReferenceError(`binding ${q(liveExportName)} not yet initialized`);return value},update=freeze((newValue=>{value=newValue,tdz=!1;for(const updater of updaters)updater(newValue)})),set=newValue=>{if(tdz)throw new ReferenceError(`binding ${q(localName)} not yet initialized`);value=newValue;for(const updater of updaters)updater(newValue)};liveGetNotify={get:get,notify:updater=>{updater!==update&&(arrayPush(updaters,updater),tdz||updater(value))}},localGetNotify[localName]=liveGetNotify,setProxyTrap&&defineProperty(moduleLexicals,localName,{get:get,set:set,enumerable:!0,configurable:!1}),liveVar[localName]=update}exportsProps[liveExportName]={get:liveGetNotify.get,set:void 0,enumerable:!0,configurable:!1},notifiers[liveExportName]=liveGetNotify.notify}));function imports(updateRecord){const candidateAll=create(null);candidateAll.default=!1;for(const[specifier,importUpdaters]of updateRecord){const instance=mapGet(importedInstances,specifier);instance.execute();const{notifiers:importNotifiers}=instance;for(const[importName,updaters]of importUpdaters){const importNotify=importNotifiers[importName];if(!importNotify)throw SyntaxError(`The requested module '${specifier}' does not provide an export named '${importName}'`);for(const updater of updaters)importNotify(updater)}if(arrayIncludes(exportAlls,specifier))for(const[importAndExportName,importNotify]of entries(importNotifiers))void 0===candidateAll[importAndExportName]?candidateAll[importAndExportName]=importNotify:candidateAll[importAndExportName]=!1;if(reexportMap[specifier])for(const[localName,exportedName]of reexportMap[specifier])candidateAll[exportedName]=importNotifiers[localName]}for(const[exportName,notify]of entries(candidateAll))if(!notifiers[exportName]&&!1!==notify){let value;notifiers[exportName]=notify;notify((newValue=>value=newValue)),exportsProps[exportName]={get:()=>value,set:void 0,enumerable:!0,configurable:!1}}arrayForEach(arraySort(keys(exportsProps)),(k=>defineProperty(proxiedExports,k,exportsProps[k]))),freeze(proxiedExports),activate()}let optFunctor;notifiers["*"]=update=>{update(proxiedExports)},optFunctor=void 0!==__syncModuleFunctor__?__syncModuleFunctor__:compartmentEvaluate(compartmentFields,functorSource,{globalObject:compartment.globalThis,transforms:__shimTransforms__,__moduleShimLexicals__:moduleLexicals});let thrownError,didThrow=!1;return freeze({notifiers:notifiers,exportsProxy:exportsProxy,execute:function(){if(optFunctor){const functor=optFunctor;optFunctor=null;try{functor(freeze({imports:freeze(imports),onceVar:freeze(onceVar),liveVar:freeze(liveVar),importMeta:importMeta}))}catch(e){didThrow=!0,thrownError=e}}if(didThrow)throw thrownError}})}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let assert,makeModuleInstance,makeThirdPartyModuleInstance,Map,ReferenceError,TypeError,entries,isArray,isObject,mapGet,mapHas,mapSet,weakmapGet;$h‍_imports([["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]],["./module-instance.js",[["makeModuleInstance",[$h‍_a=>makeModuleInstance=$h‍_a]],["makeThirdPartyModuleInstance",[$h‍_a=>makeThirdPartyModuleInstance=$h‍_a]]]],["./commons.js",[["Map",[$h‍_a=>Map=$h‍_a]],["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["isArray",[$h‍_a=>isArray=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,link=(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier)=>{const{name:compartmentName,moduleRecords:moduleRecords}=weakmapGet(compartmentPrivateFields,compartment),moduleRecord=mapGet(moduleRecords,moduleSpecifier);if(void 0===moduleRecord)throw new ReferenceError(`Missing link to module ${q(moduleSpecifier)} from compartment ${q(compartmentName)}`);return instantiate(compartmentPrivateFields,moduleAliases,moduleRecord)};$h‍_once.link(link);const instantiate=(compartmentPrivateFields,moduleAliases,moduleRecord)=>{const{compartment:compartment,moduleSpecifier:moduleSpecifier,resolvedImports:resolvedImports,staticModuleRecord:staticModuleRecord}=moduleRecord,{instances:instances}=weakmapGet(compartmentPrivateFields,compartment);if(mapHas(instances,moduleSpecifier))return mapGet(instances,moduleSpecifier);!function(staticModuleRecord,moduleSpecifier){isObject(staticModuleRecord)||Fail`Static module records must be of type object, got ${q(staticModuleRecord)}, for module ${q(moduleSpecifier)}`;const{imports:imports,exports:exports,reexports:reexports=[]}=staticModuleRecord;isArray(imports)||Fail`Property 'imports' of a static module record must be an array, got ${q(imports)}, for module ${q(moduleSpecifier)}`,isArray(exports)||Fail`Property 'exports' of a precompiled module record must be an array, got ${q(exports)}, for module ${q(moduleSpecifier)}`,isArray(reexports)||Fail`Property 'reexports' of a precompiled module record must be an array if present, got ${q(reexports)}, for module ${q(moduleSpecifier)}`}(staticModuleRecord,moduleSpecifier);const importedInstances=new Map;let moduleInstance;if(function(staticModuleRecord){return"string"==typeof staticModuleRecord.__syncModuleProgram__}(staticModuleRecord))!function(staticModuleRecord,moduleSpecifier){const{__fixedExportMap__:__fixedExportMap__,__liveExportMap__:__liveExportMap__}=staticModuleRecord;isObject(__fixedExportMap__)||Fail`Property '__fixedExportMap__' of a precompiled module record must be an object, got ${q(__fixedExportMap__)}, for module ${q(moduleSpecifier)}`,isObject(__liveExportMap__)||Fail`Property '__liveExportMap__' of a precompiled module record must be an object, got ${q(__liveExportMap__)}, for module ${q(moduleSpecifier)}`}(staticModuleRecord,moduleSpecifier),moduleInstance=makeModuleInstance(compartmentPrivateFields,moduleAliases,moduleRecord,importedInstances);else{if(!function(staticModuleRecord){return"function"==typeof staticModuleRecord.execute}(staticModuleRecord))throw new TypeError(`importHook must return a static module record, got ${q(staticModuleRecord)}`);!function(staticModuleRecord,moduleSpecifier){const{exports:exports}=staticModuleRecord;isArray(exports)||Fail`Property 'exports' of a third-party static module record must be an array, got ${q(exports)}, for module ${q(moduleSpecifier)}`}(staticModuleRecord,moduleSpecifier),moduleInstance=makeThirdPartyModuleInstance(compartmentPrivateFields,staticModuleRecord,compartment,moduleAliases,moduleSpecifier,resolvedImports)}mapSet(instances,moduleSpecifier,moduleInstance);for(const[importSpecifier,resolvedSpecifier]of entries(resolvedImports)){const importedInstance=link(compartmentPrivateFields,moduleAliases,compartment,resolvedSpecifier);mapSet(importedInstances,importSpecifier,importedInstance)}return moduleInstance};$h‍_once.instantiate(instantiate)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Map,ReferenceError,TypeError,WeakMap,assign,defineProperties,entries,promiseThen,weakmapGet,weakmapSet,setGlobalObjectSymbolUnscopables,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,sharedGlobalPropertyNames,load,link,getDeferredExports,assert,compartmentEvaluate,makeSafeEvaluator;$h‍_imports([["./commons.js",[["Map",[$h‍_a=>Map=$h‍_a]],["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["promiseThen",[$h‍_a=>promiseThen=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]]]],["./global-object.js",[["setGlobalObjectSymbolUnscopables",[$h‍_a=>setGlobalObjectSymbolUnscopables=$h‍_a]],["setGlobalObjectConstantProperties",[$h‍_a=>setGlobalObjectConstantProperties=$h‍_a]],["setGlobalObjectMutableProperties",[$h‍_a=>setGlobalObjectMutableProperties=$h‍_a]],["setGlobalObjectEvaluators",[$h‍_a=>setGlobalObjectEvaluators=$h‍_a]]]],["./whitelist.js",[["sharedGlobalPropertyNames",[$h‍_a=>sharedGlobalPropertyNames=$h‍_a]]]],["./module-load.js",[["load",[$h‍_a=>load=$h‍_a]]]],["./module-link.js",[["link",[$h‍_a=>link=$h‍_a]]]],["./module-proxy.js",[["getDeferredExports",[$h‍_a=>getDeferredExports=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]],["./compartment-evaluate.js",[["compartmentEvaluate",[$h‍_a=>compartmentEvaluate=$h‍_a]]]],["./make-safe-evaluator.js",[["makeSafeEvaluator",[$h‍_a=>makeSafeEvaluator=$h‍_a]]]]]);const{quote:q}=assert,moduleAliases=new WeakMap,privateFields=new WeakMap,assertModuleHooks=compartment=>{const{importHook:importHook,resolveHook:resolveHook}=weakmapGet(privateFields,compartment);if("function"!=typeof importHook||"function"!=typeof resolveHook)throw new TypeError("Compartment must be constructed with an importHook and a resolveHook for it to be able to load modules")},InertCompartment=function(_endowments={},_modules={},_options={}){throw new TypeError("Compartment.prototype.constructor is not a valid constructor.")};$h‍_once.InertCompartment(InertCompartment);const compartmentImportNow=(compartment,specifier)=>{const{execute:execute,exportsProxy:exportsProxy}=link(privateFields,moduleAliases,compartment,specifier);return execute(),exportsProxy},CompartmentPrototype={constructor:InertCompartment,get globalThis(){return weakmapGet(privateFields,this).globalObject},get name(){return weakmapGet(privateFields,this).name},evaluate(source,options={}){const compartmentFields=weakmapGet(privateFields,this);return compartmentEvaluate(compartmentFields,source,options)},toString:()=>"[object Compartment]",module(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of module() must be a string");assertModuleHooks(this);const{exportsProxy:exportsProxy}=getDeferredExports(this,weakmapGet(privateFields,this),moduleAliases,specifier);return exportsProxy},async import(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of import() must be a string");return assertModuleHooks(this),promiseThen(load(privateFields,moduleAliases,this,specifier),(()=>({namespace:compartmentImportNow(this,specifier)})))},async load(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of load() must be a string");return assertModuleHooks(this),load(privateFields,moduleAliases,this,specifier)},importNow(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of importNow() must be a string");return assertModuleHooks(this),compartmentImportNow(this,specifier)}};$h‍_once.CompartmentPrototype(CompartmentPrototype),defineProperties(InertCompartment,{prototype:{value:CompartmentPrototype}});$h‍_once.makeCompartmentConstructor(((targetMakeCompartmentConstructor,intrinsics,markVirtualizedNativeFunction)=>{function Compartment(endowments={},moduleMap={},options={}){if(void 0===new.target)throw new TypeError("Class constructor Compartment cannot be invoked without 'new'");const{name:name="",transforms:transforms=[],__shimTransforms__:__shimTransforms__=[],resolveHook:resolveHook,importHook:importHook,moduleMapHook:moduleMapHook,importMetaHook:importMetaHook}=options,globalTransforms=[...transforms,...__shimTransforms__],moduleRecords=new Map,instances=new Map,deferredExports=new Map;for(const[specifier,aliasNamespace]of entries(moduleMap||{})){if("string"==typeof aliasNamespace)throw new TypeError(`Cannot map module ${q(specifier)} to ${q(aliasNamespace)} in parent compartment`);if(void 0===weakmapGet(moduleAliases,aliasNamespace))throw ReferenceError(`Cannot map module ${q(specifier)} because it has no known compartment in this realm`)}const globalObject={};setGlobalObjectSymbolUnscopables(globalObject),setGlobalObjectConstantProperties(globalObject);const{safeEvaluate:safeEvaluate}=makeSafeEvaluator({globalObject:globalObject,globalTransforms:globalTransforms,sloppyGlobalsMode:!1});setGlobalObjectMutableProperties(globalObject,{intrinsics:intrinsics,newGlobalPropertyNames:sharedGlobalPropertyNames,makeCompartmentConstructor:targetMakeCompartmentConstructor,markVirtualizedNativeFunction:markVirtualizedNativeFunction}),setGlobalObjectEvaluators(globalObject,safeEvaluate,markVirtualizedNativeFunction),assign(globalObject,endowments),weakmapSet(privateFields,this,{name:`${name}`,globalTransforms:globalTransforms,globalObject:globalObject,safeEvaluate:safeEvaluate,resolveHook:resolveHook,importHook:importHook,moduleMap:moduleMap,moduleMapHook:moduleMapHook,importMetaHook:importMetaHook,moduleRecords:moduleRecords,__shimTransforms__:__shimTransforms__,deferredExports:deferredExports,instances:instances})}return Compartment.prototype=CompartmentPrototype,Compartment}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,WeakSet,arrayFilter,create,defineProperty,entries,freeze,getOwnPropertyDescriptor,getOwnPropertyDescriptors,globalThis,is,isObject,objectHasOwnProperty,values,weaksetHas,constantProperties,sharedGlobalPropertyNames,universalPropertyNames,whitelist;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["values",[$h‍_a=>values=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]],["./whitelist.js",[["constantProperties",[$h‍_a=>constantProperties=$h‍_a]],["sharedGlobalPropertyNames",[$h‍_a=>sharedGlobalPropertyNames=$h‍_a]],["universalPropertyNames",[$h‍_a=>universalPropertyNames=$h‍_a]],["whitelist",[$h‍_a=>whitelist=$h‍_a]]]]]);const isFunction=obj=>"function"==typeof obj;function initProperty(obj,name,desc){if(objectHasOwnProperty(obj,name)){const preDesc=getOwnPropertyDescriptor(obj,name);if(!preDesc||!is(preDesc.value,desc.value)||preDesc.get!==desc.get||preDesc.set!==desc.set||preDesc.writable!==desc.writable||preDesc.enumerable!==desc.enumerable||preDesc.configurable!==desc.configurable)throw new TypeError(`Conflicting definitions of ${name}`)}defineProperty(obj,name,desc)}function sampleGlobals(globalObject,newPropertyNames){const newIntrinsics={__proto__:null};for(const[globalName,intrinsicName]of entries(newPropertyNames))objectHasOwnProperty(globalObject,globalName)&&(newIntrinsics[intrinsicName]=globalObject[globalName]);return newIntrinsics}const makeIntrinsicsCollector=()=>{const intrinsics=create(null);let pseudoNatives;const addIntrinsics=newIntrinsics=>{!function(obj,descs){for(const[name,desc]of entries(descs))initProperty(obj,name,desc)}(intrinsics,getOwnPropertyDescriptors(newIntrinsics))};freeze(addIntrinsics);const completePrototypes=()=>{for(const[name,intrinsic]of entries(intrinsics)){if(!isObject(intrinsic))continue;if(!objectHasOwnProperty(intrinsic,"prototype"))continue;const permit=whitelist[name];if("object"!=typeof permit)throw new TypeError(`Expected permit object at whitelist.${name}`);const namePrototype=permit.prototype;if(!namePrototype)throw new TypeError(`${name}.prototype property not whitelisted`);if("string"!=typeof namePrototype||!objectHasOwnProperty(whitelist,namePrototype))throw new TypeError(`Unrecognized ${name}.prototype whitelist entry`);const intrinsicPrototype=intrinsic.prototype;if(objectHasOwnProperty(intrinsics,namePrototype)){if(intrinsics[namePrototype]!==intrinsicPrototype)throw new TypeError(`Conflicting bindings of ${namePrototype}`)}else intrinsics[namePrototype]=intrinsicPrototype}};freeze(completePrototypes);const finalIntrinsics=()=>(freeze(intrinsics),pseudoNatives=new WeakSet(arrayFilter(values(intrinsics),isFunction)),intrinsics);freeze(finalIntrinsics);const isPseudoNative=obj=>{if(!pseudoNatives)throw new TypeError("isPseudoNative can only be called after finalIntrinsics");return weaksetHas(pseudoNatives,obj)};freeze(isPseudoNative);const intrinsicsCollector={addIntrinsics:addIntrinsics,completePrototypes:completePrototypes,finalIntrinsics:finalIntrinsics,isPseudoNative:isPseudoNative};return freeze(intrinsicsCollector),addIntrinsics(constantProperties),addIntrinsics(sampleGlobals(globalThis,universalPropertyNames)),intrinsicsCollector};$h‍_once.makeIntrinsicsCollector(makeIntrinsicsCollector);$h‍_once.getGlobalIntrinsics((globalObject=>{const{addIntrinsics:addIntrinsics,finalIntrinsics:finalIntrinsics}=makeIntrinsicsCollector();return addIntrinsics(sampleGlobals(globalObject,sharedGlobalPropertyNames)),finalIntrinsics()}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);$h‍_once.minEnablements({"%ObjectPrototype%":{toString:!0},"%FunctionPrototype%":{toString:!0},"%ErrorPrototype%":{name:!0}});const moderateEnablements={"%ObjectPrototype%":{toString:!0,valueOf:!0},"%ArrayPrototype%":{toString:!0,push:!0},"%FunctionPrototype%":{constructor:!0,bind:!0,toString:!0},"%ErrorPrototype%":{constructor:!0,message:!0,name:!0,toString:!0},"%TypeErrorPrototype%":{constructor:!0,message:!0,name:!0},"%SyntaxErrorPrototype%":{message:!0,name:!0},"%RangeErrorPrototype%":{message:!0,name:!0},"%URIErrorPrototype%":{message:!0,name:!0},"%EvalErrorPrototype%":{message:!0,name:!0},"%ReferenceErrorPrototype%":{message:!0,name:!0},"%PromisePrototype%":{constructor:!0},"%TypedArrayPrototype%":"*","%Generator%":{constructor:!0,name:!0,toString:!0},"%IteratorPrototype%":{toString:!0}};$h‍_once.moderateEnablements(moderateEnablements);const severeEnablements={...moderateEnablements,"%ObjectPrototype%":"*","%TypedArrayPrototype%":"*","%MapPrototype%":"*","%SetPrototype%":"*"};$h‍_once.severeEnablements(severeEnablements)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Set,String,TypeError,arrayForEach,defineProperty,getOwnPropertyDescriptor,getOwnPropertyDescriptors,getOwnPropertyNames,isObject,objectHasOwnProperty,ownKeys,setHas,minEnablements,moderateEnablements,severeEnablements;$h‍_imports([["./commons.js",[["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayForEach",[$h‍_a=>arrayForEach=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["getOwnPropertyNames",[$h‍_a=>getOwnPropertyNames=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["setHas",[$h‍_a=>setHas=$h‍_a]]]],["./enablements.js",[["minEnablements",[$h‍_a=>minEnablements=$h‍_a]],["moderateEnablements",[$h‍_a=>moderateEnablements=$h‍_a]],["severeEnablements",[$h‍_a=>severeEnablements=$h‍_a]]]]]),$h‍_once.default((function(intrinsics,overrideTaming,overrideDebug=[]){const debugProperties=new Set(overrideDebug);function enable(path,obj,prop,desc){if("value"in desc&&desc.configurable){const{value:value}=desc;function getter(){return value}defineProperty(getter,"originalValue",{value:value,writable:!1,enumerable:!1,configurable:!1});const isDebug=setHas(debugProperties,prop);function setter(newValue){if(obj===this)throw new TypeError(`Cannot assign to read only property '${String(prop)}' of '${path}'`);objectHasOwnProperty(this,prop)?this[prop]=newValue:(isDebug&&console.error(new TypeError(`Override property ${prop}`)),defineProperty(this,prop,{value:newValue,writable:!0,enumerable:!0,configurable:!0}))}defineProperty(obj,prop,{get:getter,set:setter,enumerable:desc.enumerable,configurable:desc.configurable})}}function enableProperty(path,obj,prop){const desc=getOwnPropertyDescriptor(obj,prop);desc&&enable(path,obj,prop,desc)}function enableAllProperties(path,obj){const descs=getOwnPropertyDescriptors(obj);descs&&arrayForEach(ownKeys(descs),(prop=>enable(path,obj,prop,descs[prop])))}let plan;switch(overrideTaming){case"min":plan=minEnablements;break;case"moderate":plan=moderateEnablements;break;case"severe":plan=severeEnablements;break;default:throw new TypeError(`unrecognized overrideTaming ${overrideTaming}`)}!function enableProperties(path,obj,plan){for(const prop of getOwnPropertyNames(plan)){const desc=getOwnPropertyDescriptor(obj,prop);if(!desc||desc.get||desc.set)continue;const subPath=`${path}.${String(prop)}`,subPlan=plan[prop];if(!0===subPlan)enableProperty(subPath,obj,prop);else if("*"===subPlan)enableAllProperties(subPath,desc.value);else{if(!isObject(subPlan))throw new TypeError(`Unexpected override enablement plan ${subPath}`);enableProperties(subPath,desc.value,subPlan)}}}("root",intrinsics,plan)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let arrayPush,freeze,assert;$h‍_imports([["./commons.js",[["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,makeEnvironmentCaptor=aGlobal=>{const capturedEnvironmentOptionNames=[],getEnvironmentOption=(optionName,defaultSetting)=>{"string"==typeof optionName||Fail`Environment option name ${q(optionName)} must be a string.`,"string"==typeof defaultSetting||Fail`Environment option default setting ${q(defaultSetting)} must be a string.`;let setting=defaultSetting;const globalProcess=aGlobal.process;if(globalProcess&&"object"==typeof globalProcess){const globalEnv=globalProcess.env;if(globalEnv&&"object"==typeof globalEnv&&optionName in globalEnv){arrayPush(capturedEnvironmentOptionNames,optionName);const optionValue=globalEnv[optionName];"string"==typeof optionValue||Fail`Environment option named ${q(optionName)}, if present, must have a corresponding string value, got ${q(optionValue)}`,setting=optionValue}}return void 0===setting||"string"==typeof setting||Fail`Environment option value ${q(setting)}, if present, must be a string.`,setting};freeze(getEnvironmentOption);const getCapturedEnvironmentOptionNames=()=>freeze([...capturedEnvironmentOptionNames]);return freeze(getCapturedEnvironmentOptionNames),freeze({getEnvironmentOption:getEnvironmentOption,getCapturedEnvironmentOptionNames:getCapturedEnvironmentOptionNames})};$h‍_once.makeEnvironmentCaptor(makeEnvironmentCaptor),freeze(makeEnvironmentCaptor)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let WeakSet,arrayFilter,arrayMap,arrayPush,defineProperty,freeze,fromEntries,isError,stringEndsWith,weaksetAdd,weaksetHas;$h‍_imports([["../commons.js",[["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["fromEntries",[$h‍_a=>fromEntries=$h‍_a]],["isError",[$h‍_a=>isError=$h‍_a]],["stringEndsWith",[$h‍_a=>stringEndsWith=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]],["./types.js",[]],["./internal-types.js",[]]]);const consoleLevelMethods=freeze([["debug","debug"],["log","log"],["info","info"],["warn","warn"],["error","error"],["trace","log"],["dirxml","log"],["group","log"],["groupCollapsed","log"]]),consoleOtherMethods=freeze([["assert","error"],["timeLog","log"],["clear",void 0],["count","info"],["countReset",void 0],["dir","log"],["groupEnd","log"],["table","log"],["time","info"],["timeEnd","info"],["profile",void 0],["profileEnd",void 0],["timeStamp",void 0]]),consoleWhitelist=freeze([...consoleLevelMethods,...consoleOtherMethods]);$h‍_once.consoleWhitelist(consoleWhitelist);const makeLoggingConsoleKit=(loggedErrorHandler,{shouldResetForDebugging:shouldResetForDebugging=!1}={})=>{shouldResetForDebugging&&loggedErrorHandler.resetErrorTagNum();let logArray=[];const loggingConsole=fromEntries(arrayMap(consoleWhitelist,(([name,_])=>{const method=(...args)=>{arrayPush(logArray,[name,...args])};return defineProperty(method,"name",{value:name}),[name,freeze(method)]})));freeze(loggingConsole);const takeLog=()=>{const result=freeze(logArray);return logArray=[],result};freeze(takeLog);return freeze({loggingConsole:loggingConsole,takeLog:takeLog})};$h‍_once.makeLoggingConsoleKit(makeLoggingConsoleKit),freeze(makeLoggingConsoleKit);const ErrorInfo={NOTE:"ERROR_NOTE:",MESSAGE:"ERROR_MESSAGE:"};freeze(ErrorInfo);const makeCausalConsole=(baseConsole,loggedErrorHandler)=>{const{getStackString:getStackString,tagError:tagError,takeMessageLogArgs:takeMessageLogArgs,takeNoteLogArgsArray:takeNoteLogArgsArray}=loggedErrorHandler,extractErrorArgs=(logArgs,subErrorsSink)=>arrayMap(logArgs,(arg=>isError(arg)?(arrayPush(subErrorsSink,arg),`(${tagError(arg)})`):arg)),logErrorInfo=(severity,error,kind,logArgs,subErrorsSink)=>{const errorTag=tagError(error),errorName=kind===ErrorInfo.MESSAGE?`${errorTag}:`:`${errorTag} ${kind}`,argTags=extractErrorArgs(logArgs,subErrorsSink);baseConsole[severity](errorName,...argTags)},logSubErrors=(severity,subErrors,optTag=undefined)=>{if(0===subErrors.length)return;if(1===subErrors.length&&void 0===optTag)return void logError(severity,subErrors[0]);let label;label=1===subErrors.length?"Nested error":`Nested ${subErrors.length} errors`,void 0!==optTag&&(label=`${label} under ${optTag}`),baseConsole.group(label);try{for(const subError of subErrors)logError(severity,subError)}finally{baseConsole.groupEnd()}},errorsLogged=new WeakSet,logError=(severity,error)=>{if(weaksetHas(errorsLogged,error))return;const errorTag=tagError(error);weaksetAdd(errorsLogged,error);const subErrors=[],messageLogArgs=takeMessageLogArgs(error),noteLogArgsArray=takeNoteLogArgsArray(error,(severity=>(error,noteLogArgs)=>{const subErrors=[];logErrorInfo(severity,error,ErrorInfo.NOTE,noteLogArgs,subErrors),logSubErrors(severity,subErrors,tagError(error))})(severity));void 0===messageLogArgs?baseConsole[severity](`${errorTag}:`,error.message):logErrorInfo(severity,error,ErrorInfo.MESSAGE,messageLogArgs,subErrors);let stackString=getStackString(error);"string"==typeof stackString&&stackString.length>=1&&!stringEndsWith(stackString,"\n")&&(stackString+="\n"),baseConsole[severity](stackString);for(const noteLogArgs of noteLogArgsArray)logErrorInfo(severity,error,ErrorInfo.NOTE,noteLogArgs,subErrors);logSubErrors(severity,subErrors,errorTag)},levelMethods=arrayMap(consoleLevelMethods,(([level,_])=>{const levelMethod=(...logArgs)=>{const subErrors=[],argTags=extractErrorArgs(logArgs,subErrors);baseConsole[level](...argTags),logSubErrors(level,subErrors)};return defineProperty(levelMethod,"name",{value:level}),[level,freeze(levelMethod)]})),otherMethodNames=arrayFilter(consoleOtherMethods,(([name,_])=>name in baseConsole)),otherMethods=arrayMap(otherMethodNames,(([name,_])=>{const otherMethod=(...args)=>{baseConsole[name](...args)};return defineProperty(otherMethod,"name",{value:name}),[name,freeze(otherMethod)]})),causalConsole=fromEntries([...levelMethods,...otherMethods]);return freeze(causalConsole)};$h‍_once.makeCausalConsole(makeCausalConsole),freeze(makeCausalConsole);const filterConsole=(baseConsole,filter,_topic=undefined)=>{const whitelist=arrayFilter(consoleWhitelist,(([name,_])=>name in baseConsole)),methods=arrayMap(whitelist,(([name,severity])=>[name,freeze(((...args)=>{(void 0===severity||filter.canLog(severity))&&baseConsole[name](...args)}))])),filteringConsole=fromEntries(methods);return freeze(filteringConsole)};$h‍_once.filterConsole(filterConsole),freeze(filterConsole)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FinalizationRegistry,Map,mapGet,mapDelete,WeakMap,mapSet,finalizationRegistryRegister,weakmapSet,weakmapGet,mapEntries,mapHas;$h‍_imports([["../commons.js",[["FinalizationRegistry",[$h‍_a=>FinalizationRegistry=$h‍_a]],["Map",[$h‍_a=>Map=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapDelete",[$h‍_a=>mapDelete=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["finalizationRegistryRegister",[$h‍_a=>finalizationRegistryRegister=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["mapEntries",[$h‍_a=>mapEntries=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]]]]]);$h‍_once.makeRejectionHandlers((reportReason=>{if(void 0===FinalizationRegistry)return;let lastReasonId=0;const idToReason=new Map;let cancelChecking;const removeReasonId=reasonId=>{mapDelete(idToReason,reasonId),cancelChecking&&0===idToReason.size&&(cancelChecking(),cancelChecking=void 0)},promiseToReasonId=new WeakMap,promiseToReason=new FinalizationRegistry((heldReasonId=>{if(mapHas(idToReason,heldReasonId)){const reason=mapGet(idToReason,heldReasonId);removeReasonId(heldReasonId),reportReason(reason)}}));return{rejectionHandledHandler:pr=>{const reasonId=weakmapGet(promiseToReasonId,pr);removeReasonId(reasonId)},unhandledRejectionHandler:(reason,pr)=>{lastReasonId+=1;const reasonId=lastReasonId;mapSet(idToReason,reasonId,reason),weakmapSet(promiseToReasonId,pr,reasonId),finalizationRegistryRegister(promiseToReason,pr,reasonId,pr)},processTerminationHandler:()=>{for(const[reasonId,reason]of mapEntries(idToReason))removeReasonId(reasonId),reportReason(reason)}}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,globalThis,defaultHandler,makeCausalConsole,makeRejectionHandlers;$h‍_imports([["../commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]]]],["./assert.js",[["loggedErrorHandler",[$h‍_a=>defaultHandler=$h‍_a]]]],["./console.js",[["makeCausalConsole",[$h‍_a=>makeCausalConsole=$h‍_a]]]],["./unhandled-rejection.js",[["makeRejectionHandlers",[$h‍_a=>makeRejectionHandlers=$h‍_a]]]],["./types.js",[]],["./internal-types.js",[]]]);const originalConsole=console;$h‍_once.tameConsole(((consoleTaming="safe",errorTrapping="platform",unhandledRejectionTrapping="report",optGetStackString=undefined)=>{if("safe"!==consoleTaming&&"unsafe"!==consoleTaming)throw new TypeError(`unrecognized consoleTaming ${consoleTaming}`);let loggedErrorHandler;loggedErrorHandler=void 0===optGetStackString?defaultHandler:{...defaultHandler,getStackString:optGetStackString};const ourConsole="unsafe"===consoleTaming?originalConsole:makeCausalConsole(originalConsole,loggedErrorHandler);if("none"!==errorTrapping&&void 0!==globalThis.process&&globalThis.process.on("uncaughtException",(error=>{ourConsole.error(error),"platform"===errorTrapping||"exit"===errorTrapping?globalThis.process.exit(globalThis.process.exitCode||-1):"abort"===errorTrapping&&globalThis.process.abort()})),"none"!==unhandledRejectionTrapping&&void 0!==globalThis.process){const h=makeRejectionHandlers((reason=>{ourConsole.error("SES_UNHANDLED_REJECTION:",reason)}));h&&(globalThis.process.on("unhandledRejection",h.unhandledRejectionHandler),globalThis.process.on("rejectionHandled",h.rejectionHandledHandler),globalThis.process.on("exit",h.processTerminationHandler))}if("none"!==errorTrapping&&void 0!==globalThis.window&&void 0!==globalThis.window.addEventListener&&globalThis.window.addEventListener("error",(event=>{event.preventDefault(),ourConsole.error(event.error),"exit"!==errorTrapping&&"abort"!==errorTrapping||(globalThis.window.location.href="about:blank")})),"none"!==unhandledRejectionTrapping&&void 0!==globalThis.window&&void 0!==globalThis.window.addEventListener){const h=makeRejectionHandlers((reason=>{ourConsole.error("SES_UNHANDLED_REJECTION:",reason)}));h&&(globalThis.window.addEventListener("unhandledrejection",(event=>{event.preventDefault(),h.unhandledRejectionHandler(event.reason,event.promise)})),globalThis.window.addEventListener("rejectionhandled",(event=>{event.preventDefault(),h.rejectionHandledHandler(event.promise)})),globalThis.window.addEventListener("beforeunload",(_event=>{h.processTerminationHandler()})))}return{console:ourConsole}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let WeakMap,WeakSet,apply,arrayFilter,arrayJoin,arrayMap,arraySlice,create,defineProperties,fromEntries,reflectSet,regexpExec,regexpTest,weakmapGet,weakmapSet,weaksetAdd,weaksetHas;$h‍_imports([["../commons.js",[["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arraySlice",[$h‍_a=>arraySlice=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["fromEntries",[$h‍_a=>fromEntries=$h‍_a]],["reflectSet",[$h‍_a=>reflectSet=$h‍_a]],["regexpExec",[$h‍_a=>regexpExec=$h‍_a]],["regexpTest",[$h‍_a=>regexpTest=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]]]);const safeV8CallSiteMethodNames=["getTypeName","getFunctionName","getMethodName","getFileName","getLineNumber","getColumnNumber","getEvalOrigin","isToplevel","isEval","isNative","isConstructor","isAsync","getPosition","getScriptNameOrSourceURL","toString"],safeV8CallSiteFacet=callSite=>{const o=fromEntries(arrayMap(safeV8CallSiteMethodNames,(name=>{const method=callSite[name];return[name,()=>apply(method,callSite,[])]})));return create(o,{})},FILENAME_CENSORS=[/\/node_modules\//,/^(?:node:)?internal\//,/\/packages\/ses\/src\/error\/assert.js$/,/\/packages\/eventual-send\/src\//],filterFileName=fileName=>{if(!fileName)return!0;for(const filter of FILENAME_CENSORS)if(regexpTest(filter,fileName))return!1;return!0};$h‍_once.filterFileName(filterFileName);const CALLSITE_PATTERNS=[/^((?:.*[( ])?)[:/\w_-]*\/\.\.\.\/(.+)$/,/^((?:.*[( ])?)[:/\w_-]*\/(packages\/.+)$/],shortenCallSiteString=callSiteString=>{for(const filter of CALLSITE_PATTERNS){const match=regexpExec(filter,callSiteString);if(match)return arrayJoin(arraySlice(match,1),"")}return callSiteString};$h‍_once.shortenCallSiteString(shortenCallSiteString);$h‍_once.tameV8ErrorConstructor(((OriginalError,InitialError,errorTaming,stackFiltering)=>{const originalCaptureStackTrace=OriginalError.captureStackTrace,callSiteFilter=callSite=>"verbose"===stackFiltering||filterFileName(callSite.getFileName()),callSiteStringifier=callSite=>{let callSiteString=`${callSite}`;return"concise"===stackFiltering&&(callSiteString=shortenCallSiteString(callSiteString)),`\n at ${callSiteString}`},stackStringFromSST=(_error,sst)=>arrayJoin(arrayMap(arrayFilter(sst,callSiteFilter),callSiteStringifier),""),stackInfos=new WeakMap,tamedMethods={captureStackTrace(error,optFn=tamedMethods.captureStackTrace){"function"!=typeof originalCaptureStackTrace?reflectSet(error,"stack",""):apply(originalCaptureStackTrace,OriginalError,[error,optFn])},getStackString(error){let stackInfo=weakmapGet(stackInfos,error);if(void 0===stackInfo&&(error.stack,stackInfo=weakmapGet(stackInfos,error),stackInfo||(stackInfo={stackString:""},weakmapSet(stackInfos,error,stackInfo))),void 0!==stackInfo.stackString)return stackInfo.stackString;const stackString=stackStringFromSST(0,stackInfo.callSites);return weakmapSet(stackInfos,error,{stackString:stackString}),stackString},prepareStackTrace(error,sst){if("unsafe"===errorTaming){const stackString=stackStringFromSST(0,sst);return weakmapSet(stackInfos,error,{stackString:stackString}),`${error}${stackString}`}return weakmapSet(stackInfos,error,{callSites:sst}),""}},defaultPrepareFn=tamedMethods.prepareStackTrace;OriginalError.prepareStackTrace=defaultPrepareFn;const systemPrepareFnSet=new WeakSet([defaultPrepareFn]),systemPrepareFnFor=inputPrepareFn=>{if(weaksetHas(systemPrepareFnSet,inputPrepareFn))return inputPrepareFn;const systemMethods={prepareStackTrace:(error,sst)=>(weakmapSet(stackInfos,error,{callSites:sst}),inputPrepareFn(error,(sst=>arrayMap(sst,safeV8CallSiteFacet))(sst)))};return weaksetAdd(systemPrepareFnSet,systemMethods.prepareStackTrace),systemMethods.prepareStackTrace};return defineProperties(InitialError,{captureStackTrace:{value:tamedMethods.captureStackTrace,writable:!0,enumerable:!1,configurable:!0},prepareStackTrace:{get:()=>OriginalError.prepareStackTrace,set(inputPrepareStackTraceFn){if("function"==typeof inputPrepareStackTraceFn){const systemPrepareFn=systemPrepareFnFor(inputPrepareStackTraceFn);OriginalError.prepareStackTrace=systemPrepareFn}else OriginalError.prepareStackTrace=defaultPrepareFn},enumerable:!1,configurable:!0}}),tamedMethods.getStackString}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_ERROR,TypeError,apply,construct,defineProperties,setPrototypeOf,getOwnPropertyDescriptor,defineProperty,NativeErrors,tameV8ErrorConstructor;$h‍_imports([["../commons.js",[["FERAL_ERROR",[$h‍_a=>FERAL_ERROR=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["construct",[$h‍_a=>construct=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["setPrototypeOf",[$h‍_a=>setPrototypeOf=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]]]],["../whitelist.js",[["NativeErrors",[$h‍_a=>NativeErrors=$h‍_a]]]],["./tame-v8-error-constructor.js",[["tameV8ErrorConstructor",[$h‍_a=>tameV8ErrorConstructor=$h‍_a]]]]]);const stackDesc=getOwnPropertyDescriptor(FERAL_ERROR.prototype,"stack"),stackGetter=stackDesc&&stackDesc.get,tamedMethods={getStackString:error=>"function"==typeof stackGetter?apply(stackGetter,error,[]):"stack"in error?`${error.stack}`:""};$h‍_once.default((function(errorTaming="safe",stackFiltering="concise"){if("safe"!==errorTaming&&"unsafe"!==errorTaming)throw new TypeError(`unrecognized errorTaming ${errorTaming}`);if("concise"!==stackFiltering&&"verbose"!==stackFiltering)throw new TypeError(`unrecognized stackFiltering ${stackFiltering}`);const ErrorPrototype=FERAL_ERROR.prototype,platform="function"==typeof FERAL_ERROR.captureStackTrace?"v8":"unknown",{captureStackTrace:originalCaptureStackTrace}=FERAL_ERROR,makeErrorConstructor=(_={})=>{const ResultError=function(...rest){let error;return error=void 0===new.target?apply(FERAL_ERROR,this,rest):construct(FERAL_ERROR,rest,new.target),"v8"===platform&&apply(originalCaptureStackTrace,FERAL_ERROR,[error,ResultError]),error};return defineProperties(ResultError,{length:{value:1},prototype:{value:ErrorPrototype,writable:!1,enumerable:!1,configurable:!1}}),ResultError},InitialError=makeErrorConstructor({powers:"original"}),SharedError=makeErrorConstructor({powers:"none"});defineProperties(ErrorPrototype,{constructor:{value:SharedError}});for(const NativeError of NativeErrors)setPrototypeOf(NativeError,SharedError);defineProperties(InitialError,{stackTraceLimit:{get(){if("number"==typeof FERAL_ERROR.stackTraceLimit)return FERAL_ERROR.stackTraceLimit},set(newLimit){"number"==typeof newLimit&&("number"!=typeof FERAL_ERROR.stackTraceLimit||(FERAL_ERROR.stackTraceLimit=newLimit))},enumerable:!1,configurable:!0}}),defineProperties(SharedError,{stackTraceLimit:{get(){},set(_newLimit){},enumerable:!1,configurable:!0}}),"v8"===platform&&defineProperties(SharedError,{prepareStackTrace:{get:()=>()=>"",set(_prepareFn){},enumerable:!1,configurable:!0},captureStackTrace:{value:(errorish,_constructorOpt)=>{defineProperty(errorish,"stack",{value:""})},writable:!1,enumerable:!1,configurable:!0}});let initialGetStackString=tamedMethods.getStackString;return"v8"===platform?initialGetStackString=tameV8ErrorConstructor(FERAL_ERROR,InitialError,errorTaming,stackFiltering):defineProperties(ErrorPrototype,"unsafe"===errorTaming?{stack:{get(){return initialGetStackString(this)},set(newValue){defineProperties(this,{stack:{value:newValue,writable:!0,enumerable:!0,configurable:!0}})}}}:{stack:{get(){return`${this}`},set(newValue){defineProperties(this,{stack:{value:newValue,writable:!0,enumerable:!0,configurable:!0}})}}}),{"%InitialGetStackString%":initialGetStackString,"%InitialError%":InitialError,"%SharedError%":SharedError}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,Float32Array,Map,Set,String,getOwnPropertyDescriptor,getPrototypeOf,iterateArray,iterateMap,iterateSet,iterateString,matchAllRegExp,matchAllSymbol,regexpPrototype,InertCompartment;function getConstructorOf(obj){return getPrototypeOf(obj).constructor}$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["Float32Array",[$h‍_a=>Float32Array=$h‍_a]],["Map",[$h‍_a=>Map=$h‍_a]],["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["iterateArray",[$h‍_a=>iterateArray=$h‍_a]],["iterateMap",[$h‍_a=>iterateMap=$h‍_a]],["iterateSet",[$h‍_a=>iterateSet=$h‍_a]],["iterateString",[$h‍_a=>iterateString=$h‍_a]],["matchAllRegExp",[$h‍_a=>matchAllRegExp=$h‍_a]],["matchAllSymbol",[$h‍_a=>matchAllSymbol=$h‍_a]],["regexpPrototype",[$h‍_a=>regexpPrototype=$h‍_a]]]],["./compartment-shim.js",[["InertCompartment",[$h‍_a=>InertCompartment=$h‍_a]]]]]);$h‍_once.getAnonymousIntrinsics((()=>{const InertFunction=FERAL_FUNCTION.prototype.constructor,argsCalleeDesc=getOwnPropertyDescriptor(function(){return arguments}(),"callee"),ThrowTypeError=argsCalleeDesc&&argsCalleeDesc.get,StringIteratorObject=iterateString(new String),StringIteratorPrototype=getPrototypeOf(StringIteratorObject),RegExpStringIterator=regexpPrototype[matchAllSymbol]&&matchAllRegExp(/./),RegExpStringIteratorPrototype=RegExpStringIterator&&getPrototypeOf(RegExpStringIterator),ArrayIteratorObject=iterateArray([]),ArrayIteratorPrototype=getPrototypeOf(ArrayIteratorObject),TypedArray=getPrototypeOf(Float32Array),MapIteratorObject=iterateMap(new Map),MapIteratorPrototype=getPrototypeOf(MapIteratorObject),SetIteratorObject=iterateSet(new Set),SetIteratorPrototype=getPrototypeOf(SetIteratorObject),IteratorPrototype=getPrototypeOf(ArrayIteratorPrototype);const GeneratorFunction=getConstructorOf((function*(){})),Generator=GeneratorFunction.prototype;const AsyncGeneratorFunction=getConstructorOf((async function*(){})),AsyncGenerator=AsyncGeneratorFunction.prototype,AsyncGeneratorPrototype=AsyncGenerator.prototype,AsyncIteratorPrototype=getPrototypeOf(AsyncGeneratorPrototype);return{"%InertFunction%":InertFunction,"%ArrayIteratorPrototype%":ArrayIteratorPrototype,"%InertAsyncFunction%":getConstructorOf((async function(){})),"%AsyncGenerator%":AsyncGenerator,"%InertAsyncGeneratorFunction%":AsyncGeneratorFunction,"%AsyncGeneratorPrototype%":AsyncGeneratorPrototype,"%AsyncIteratorPrototype%":AsyncIteratorPrototype,"%Generator%":Generator,"%InertGeneratorFunction%":GeneratorFunction,"%IteratorPrototype%":IteratorPrototype,"%MapIteratorPrototype%":MapIteratorPrototype,"%RegExpStringIteratorPrototype%":RegExpStringIteratorPrototype,"%SetIteratorPrototype%":SetIteratorPrototype,"%StringIteratorPrototype%":StringIteratorPrototype,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%InertCompartment%":InertCompartment}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Set,String,TypeError,WeakMap,WeakSet,globalThis,apply,arrayForEach,defineProperty,freeze,getOwnPropertyDescriptor,getOwnPropertyDescriptors,getPrototypeOf,isInteger,isObject,objectHasOwnProperty,ownKeys,preventExtensions,setAdd,setForEach,setHas,toStringTagSymbol,typedArrayPrototype,weakmapGet,weakmapSet,weaksetAdd,weaksetHas,assert;$h‍_imports([["./commons.js",[["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["arrayForEach",[$h‍_a=>arrayForEach=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["isInteger",[$h‍_a=>isInteger=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["preventExtensions",[$h‍_a=>preventExtensions=$h‍_a]],["setAdd",[$h‍_a=>setAdd=$h‍_a]],["setForEach",[$h‍_a=>setForEach=$h‍_a]],["setHas",[$h‍_a=>setHas=$h‍_a]],["toStringTagSymbol",[$h‍_a=>toStringTagSymbol=$h‍_a]],["typedArrayPrototype",[$h‍_a=>typedArrayPrototype=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const typedArrayToStringTag=getOwnPropertyDescriptor(typedArrayPrototype,toStringTagSymbol);assert(typedArrayToStringTag);const getTypedArrayToStringTag=typedArrayToStringTag.get;assert(getTypedArrayToStringTag);const isTypedArray=object=>void 0!==apply(getTypedArrayToStringTag,object,[]);$h‍_once.isTypedArray(isTypedArray);const freezeTypedArray=array=>{preventExtensions(array),arrayForEach(ownKeys(array),(name=>{const desc=getOwnPropertyDescriptor(array,name);assert(desc),(propertyKey=>{const n=+String(propertyKey);return isInteger(n)&&String(n)===propertyKey})(name)||defineProperty(array,name,{...desc,writable:!1,configurable:!1})}))};$h‍_once.makeHardener((()=>{if("function"==typeof globalThis.harden){return globalThis.harden}const hardened=new WeakSet,{harden:harden}={harden(root){const toFreeze=new Set,paths=new WeakMap;function enqueue(val,path=undefined){if(!isObject(val))return;const type=typeof val;if("object"!==type&&"function"!==type)throw new TypeError(`Unexpected typeof: ${type}`);weaksetHas(hardened,val)||setHas(toFreeze,val)||(setAdd(toFreeze,val),weakmapSet(paths,val,path))}function freezeAndTraverse(obj){isTypedArray(obj)?freezeTypedArray(obj):freeze(obj);const path=weakmapGet(paths,obj)||"unknown",descs=getOwnPropertyDescriptors(obj);enqueue(getPrototypeOf(obj),`${path}.__proto__`),arrayForEach(ownKeys(descs),(name=>{const pathname=`${path}.${String(name)}`,desc=descs[name];objectHasOwnProperty(desc,"value")?enqueue(desc.value,`${pathname}`):(enqueue(desc.get,`${pathname}(get)`),enqueue(desc.set,`${pathname}(set)`))}))}function markHardened(value){weaksetAdd(hardened,value)}return enqueue(root),setForEach(toFreeze,freezeAndTraverse),setForEach(toFreeze,markHardened),root}};return harden}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Date,TypeError,apply,construct,defineProperties;$h‍_imports([["./commons.js",[["Date",[$h‍_a=>Date=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["construct",[$h‍_a=>construct=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]]]]]),$h‍_once.default((function(dateTaming="safe"){if("safe"!==dateTaming&&"unsafe"!==dateTaming)throw new TypeError(`unrecognized dateTaming ${dateTaming}`);const OriginalDate=Date,DatePrototype=OriginalDate.prototype,tamedMethods={now:()=>NaN},makeDateConstructor=({powers:powers="none"}={})=>{let ResultDate;return ResultDate="original"===powers?function(...rest){return void 0===new.target?apply(OriginalDate,void 0,rest):construct(OriginalDate,rest,new.target)}:function(...rest){return void 0===new.target?"Invalid Date":(0===rest.length&&(rest=[NaN]),construct(OriginalDate,rest,new.target))},defineProperties(ResultDate,{length:{value:7},prototype:{value:DatePrototype,writable:!1,enumerable:!1,configurable:!1},parse:{value:Date.parse,writable:!0,enumerable:!1,configurable:!0},UTC:{value:Date.UTC,writable:!0,enumerable:!1,configurable:!0}}),ResultDate},InitialDate=makeDateConstructor({powers:"original"}),SharedDate=makeDateConstructor({powers:"none"});return defineProperties(InitialDate,{now:{value:Date.now,writable:!0,enumerable:!1,configurable:!0}}),defineProperties(SharedDate,{now:{value:tamedMethods.now,writable:!0,enumerable:!1,configurable:!0}}),defineProperties(DatePrototype,{constructor:{value:SharedDate}}),{"%InitialDate%":InitialDate,"%SharedDate%":SharedDate}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,globalThis,getOwnPropertyDescriptor,defineProperty;function tameDomains(domainTaming="safe"){if("safe"!==domainTaming&&"unsafe"!==domainTaming)throw new TypeError(`unrecognized domainTaming ${domainTaming}`);if("unsafe"!==domainTaming&&"object"==typeof globalThis.process&&null!==globalThis.process){const domainDescriptor=getOwnPropertyDescriptor(globalThis.process,"domain");if(void 0!==domainDescriptor&&void 0!==domainDescriptor.get)throw new TypeError("SES failed to lockdown, Node.js domains have been initialized (SES_NO_DOMAINS)");defineProperty(globalThis.process,"domain",{value:null,configurable:!1,writable:!1,enumerable:!1})}}$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]]]]]),Object.defineProperty(tameDomains,"name",{value:"tameDomains"}),$h‍_once.tameDomains(tameDomains)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,SyntaxError,TypeError,defineProperties,getPrototypeOf,setPrototypeOf,freeze;$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["SyntaxError",[$h‍_a=>SyntaxError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["setPrototypeOf",[$h‍_a=>setPrototypeOf=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]]]),$h‍_once.default((function(){try{FERAL_FUNCTION.prototype.constructor("return 1")}catch(ignore){return freeze({})}const newIntrinsics={};function repairFunction(name,intrinsicName,declaration){let FunctionInstance;try{FunctionInstance=(0,eval)(declaration)}catch(e){if(e instanceof SyntaxError)return;throw e}const FunctionPrototype=getPrototypeOf(FunctionInstance),InertConstructor=function(){throw new TypeError("Function.prototype.constructor is not a valid constructor.")};defineProperties(InertConstructor,{prototype:{value:FunctionPrototype},name:{value:name,writable:!1,enumerable:!1,configurable:!0}}),defineProperties(FunctionPrototype,{constructor:{value:InertConstructor}}),InertConstructor!==FERAL_FUNCTION.prototype.constructor&&setPrototypeOf(InertConstructor,FERAL_FUNCTION.prototype.constructor),newIntrinsics[intrinsicName]=InertConstructor}return repairFunction("Function","%InertFunction%","(function(){})"),repairFunction("GeneratorFunction","%InertGeneratorFunction%","(function*(){})"),repairFunction("AsyncFunction","%InertAsyncFunction%","(async function(){})"),repairFunction("AsyncGeneratorFunction","%InertAsyncGeneratorFunction%","(async function*(){})"),newIntrinsics}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let WeakSet,defineProperty,freeze,functionPrototype,functionToString,stringEndsWith,weaksetAdd,weaksetHas;$h‍_imports([["./commons.js",[["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["functionPrototype",[$h‍_a=>functionPrototype=$h‍_a]],["functionToString",[$h‍_a=>functionToString=$h‍_a]],["stringEndsWith",[$h‍_a=>stringEndsWith=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]]]);let markVirtualizedNativeFunction;$h‍_once.tameFunctionToString((()=>{if(void 0===markVirtualizedNativeFunction){const virtualizedNativeFunctions=new WeakSet;defineProperty(functionPrototype,"toString",{value:{toString(){const str=functionToString(this);return stringEndsWith(str,") { [native code] }")||!weaksetHas(virtualizedNativeFunctions,this)?str:`function ${this.name}() { [native code] }`}}.toString}),markVirtualizedNativeFunction=freeze((func=>weaksetAdd(virtualizedNativeFunctions,func)))}return markVirtualizedNativeFunction}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,freeze;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]]]);const tameHarden=(safeHarden,hardenTaming)=>{if("safe"!==hardenTaming&&"unsafe"!==hardenTaming)throw new TypeError(`unrecognized fakeHardenOption ${hardenTaming}`);if("safe"===hardenTaming)return safeHarden;if(Object.isExtensible=()=>!1,Object.isFrozen=()=>!0,Object.isSealed=()=>!0,Reflect.isExtensible=()=>!1,safeHarden.isFake)return safeHarden;const fakeHarden=arg=>arg;return fakeHarden.isFake=!0,freeze(fakeHarden)};$h‍_once.tameHarden(tameHarden),freeze(tameHarden)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Number,String,TypeError,defineProperty,getOwnPropertyNames,isObject,regexpExec,assert;$h‍_imports([["./commons.js",[["Number",[$h‍_a=>Number=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["getOwnPropertyNames",[$h‍_a=>getOwnPropertyNames=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["regexpExec",[$h‍_a=>regexpExec=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,localePattern=/^(\w*[a-z])Locale([A-Z]\w*)$/,tamedMethods={localeCompare(arg){if(null==this)throw new TypeError('Cannot localeCompare with null or undefined "this" value');const s=`${this}`,that=`${arg}`;return sthat?1:(s===that||Fail`expected ${q(s)} and ${q(that)} to compare`,0)},toString(){return`${this}`}},nonLocaleCompare=tamedMethods.localeCompare,numberToString=tamedMethods.toString;$h‍_once.default((function(intrinsics,localeTaming="safe"){if("safe"!==localeTaming&&"unsafe"!==localeTaming)throw new TypeError(`unrecognized localeTaming ${localeTaming}`);if("unsafe"!==localeTaming){defineProperty(String.prototype,"localeCompare",{value:nonLocaleCompare});for(const intrinsicName of getOwnPropertyNames(intrinsics)){const intrinsic=intrinsics[intrinsicName];if(isObject(intrinsic))for(const methodName of getOwnPropertyNames(intrinsic)){const match=regexpExec(localePattern,methodName);if(match){"function"==typeof intrinsic[methodName]||Fail`expected ${q(methodName)} to be a function`;const nonLocaleMethodName=`${match[1]}${match[2]}`,method=intrinsic[nonLocaleMethodName];"function"==typeof method||Fail`function ${q(nonLocaleMethodName)} not found`,defineProperty(intrinsic,methodName,{value:method})}}}defineProperty(Number.prototype,"toLocaleString",{value:numberToString})}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Math,TypeError,create,getOwnPropertyDescriptors,objectPrototype;$h‍_imports([["./commons.js",[["Math",[$h‍_a=>Math=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["objectPrototype",[$h‍_a=>objectPrototype=$h‍_a]]]]]),$h‍_once.default((function(mathTaming="safe"){if("safe"!==mathTaming&&"unsafe"!==mathTaming)throw new TypeError(`unrecognized mathTaming ${mathTaming}`);const originalMath=Math,initialMath=originalMath,{random:_,...otherDescriptors}=getOwnPropertyDescriptors(originalMath);return{"%InitialMath%":initialMath,"%SharedMath%":create(objectPrototype,otherDescriptors)}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_REG_EXP,TypeError,construct,defineProperties,getOwnPropertyDescriptor,speciesSymbol;$h‍_imports([["./commons.js",[["FERAL_REG_EXP",[$h‍_a=>FERAL_REG_EXP=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["construct",[$h‍_a=>construct=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["speciesSymbol",[$h‍_a=>speciesSymbol=$h‍_a]]]]]),$h‍_once.default((function(regExpTaming="safe"){if("safe"!==regExpTaming&&"unsafe"!==regExpTaming)throw new TypeError(`unrecognized regExpTaming ${regExpTaming}`);const RegExpPrototype=FERAL_REG_EXP.prototype,makeRegExpConstructor=(_={})=>{const ResultRegExp=function(...rest){return void 0===new.target?FERAL_REG_EXP(...rest):construct(FERAL_REG_EXP,rest,new.target)},speciesDesc=getOwnPropertyDescriptor(FERAL_REG_EXP,speciesSymbol);if(!speciesDesc)throw new TypeError("no RegExp[Symbol.species] descriptor");return defineProperties(ResultRegExp,{length:{value:2},prototype:{value:RegExpPrototype,writable:!1,enumerable:!1,configurable:!1},[speciesSymbol]:speciesDesc}),ResultRegExp},InitialRegExp=makeRegExpConstructor(),SharedRegExp=makeRegExpConstructor();return"unsafe"!==regExpTaming&&delete RegExpPrototype.compile,defineProperties(RegExpPrototype,{constructor:{value:SharedRegExp}}),{"%InitialRegExp%":InitialRegExp,"%SharedRegExp%":SharedRegExp}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let whitelist,FunctionInstance,isAccessorPermit,Map,String,TypeError,arrayFilter,arrayIncludes,arrayMap,entries,getOwnPropertyDescriptor,getPrototypeOf,isObject,mapGet,objectHasOwnProperty,ownKeys,symbolKeyFor;$h‍_imports([["./whitelist.js",[["whitelist",[$h‍_a=>whitelist=$h‍_a]],["FunctionInstance",[$h‍_a=>FunctionInstance=$h‍_a]],["isAccessorPermit",[$h‍_a=>isAccessorPermit=$h‍_a]]]],["./commons.js",[["Map",[$h‍_a=>Map=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayIncludes",[$h‍_a=>arrayIncludes=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["symbolKeyFor",[$h‍_a=>symbolKeyFor=$h‍_a]]]]]),$h‍_once.default((function(intrinsics,markVirtualizedNativeFunction){const primitives=["undefined","boolean","number","string","symbol"],wellKnownSymbolNames=new Map(intrinsics.Symbol?arrayMap(arrayFilter(entries(whitelist.Symbol),(([name,permit])=>"symbol"===permit&&"symbol"==typeof intrinsics.Symbol[name])),(([name])=>[intrinsics.Symbol[name],`@@${name}`])):[]);function asStringPropertyName(path,prop){if("string"==typeof prop)return prop;const wellKnownSymbol=mapGet(wellKnownSymbolNames,prop);if("symbol"==typeof prop){if(wellKnownSymbol)return wellKnownSymbol;{const registeredKey=symbolKeyFor(prop);return void 0!==registeredKey?`RegisteredSymbol(${registeredKey})`:`Unique${String(prop)}`}}throw new TypeError(`Unexpected property name type ${path} ${prop}`)}function isAllowedPropertyValue(path,value,prop,permit){if("object"==typeof permit)return visitProperties(path,value,permit),!0;if(!1===permit)return!1;if("string"==typeof permit)if("prototype"===prop||"constructor"===prop){if(objectHasOwnProperty(intrinsics,permit)){if(value!==intrinsics[permit])throw new TypeError(`Does not match whitelist ${path}`);return!0}}else if(arrayIncludes(primitives,permit)){if(typeof value!==permit)throw new TypeError(`At ${path} expected ${permit} not ${typeof value}`);return!0}throw new TypeError(`Unexpected whitelist permit ${permit} at ${path}`)}function isAllowedProperty(path,obj,prop,permit){const desc=getOwnPropertyDescriptor(obj,prop);if(!desc)throw new TypeError(`Property ${prop} not found at ${path}`);if(objectHasOwnProperty(desc,"value")){if(isAccessorPermit(permit))throw new TypeError(`Accessor expected at ${path}`);return isAllowedPropertyValue(path,desc.value,prop,permit)}if(!isAccessorPermit(permit))throw new TypeError(`Accessor not expected at ${path}`);return isAllowedPropertyValue(`${path}`,desc.get,prop,permit.get)&&isAllowedPropertyValue(`${path}`,desc.set,prop,permit.set)}function getSubPermit(obj,permit,prop){const permitProp="__proto__"===prop?"--proto--":prop;return objectHasOwnProperty(permit,permitProp)?permit[permitProp]:"function"==typeof obj&&(markVirtualizedNativeFunction(obj),objectHasOwnProperty(FunctionInstance,permitProp))?FunctionInstance[permitProp]:void 0}function visitProperties(path,obj,permit){if(void 0===obj)return;!function(path,obj,protoName){if(!isObject(obj))throw new TypeError(`Object expected: ${path}, ${obj}, ${protoName}`);const proto=getPrototypeOf(obj);if(null!==proto||null!==protoName){if(void 0!==protoName&&"string"!=typeof protoName)throw new TypeError(`Malformed whitelist permit ${path}.__proto__`);if(proto!==intrinsics[protoName||"%ObjectPrototype%"])throw new TypeError(`Unexpected intrinsic ${path}.__proto__ at ${protoName}`)}}(path,obj,permit["[[Proto]]"]);for(const prop of ownKeys(obj)){const propString=asStringPropertyName(path,prop),subPath=`${path}.${propString}`,subPermit=getSubPermit(obj,permit,propString);if(!subPermit||!isAllowedProperty(subPath,obj,prop,subPermit)){!1!==subPermit&&console.warn(`Removing ${subPath}`);try{delete obj[prop]}catch(err){if(prop in obj){if("function"==typeof obj&&"prototype"===prop&&(obj.prototype=void 0,void 0===obj.prototype)){console.warn(`Tolerating undeletable ${subPath} === undefined`);continue}console.error(`failed to delete ${subPath}`,err)}else console.error(`deleting ${subPath} threw`,err);throw err}}}}visitProperties("intrinsics",intrinsics,whitelist)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden;$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["FERAL_EVAL",[$h‍_a=>FERAL_EVAL=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["stringSplit",[$h‍_a=>stringSplit=$h‍_a]],["noEvalEvaluate",[$h‍_a=>noEvalEvaluate=$h‍_a]]]],["./error/stringify-utils.js",[["enJoin",[$h‍_a=>enJoin=$h‍_a]]]],["./make-hardener.js",[["makeHardener",[$h‍_a=>makeHardener=$h‍_a]]]],["./intrinsics.js",[["makeIntrinsicsCollector",[$h‍_a=>makeIntrinsicsCollector=$h‍_a]]]],["./whitelist-intrinsics.js",[["default",[$h‍_a=>whitelistIntrinsics=$h‍_a]]]],["./tame-function-constructors.js",[["default",[$h‍_a=>tameFunctionConstructors=$h‍_a]]]],["./tame-date-constructor.js",[["default",[$h‍_a=>tameDateConstructor=$h‍_a]]]],["./tame-math-object.js",[["default",[$h‍_a=>tameMathObject=$h‍_a]]]],["./tame-regexp-constructor.js",[["default",[$h‍_a=>tameRegExpConstructor=$h‍_a]]]],["./enable-property-overrides.js",[["default",[$h‍_a=>enablePropertyOverrides=$h‍_a]]]],["./tame-locale-methods.js",[["default",[$h‍_a=>tameLocaleMethods=$h‍_a]]]],["./global-object.js",[["setGlobalObjectConstantProperties",[$h‍_a=>setGlobalObjectConstantProperties=$h‍_a]],["setGlobalObjectMutableProperties",[$h‍_a=>setGlobalObjectMutableProperties=$h‍_a]],["setGlobalObjectEvaluators",[$h‍_a=>setGlobalObjectEvaluators=$h‍_a]]]],["./make-safe-evaluator.js",[["makeSafeEvaluator",[$h‍_a=>makeSafeEvaluator=$h‍_a]]]],["./whitelist.js",[["initialGlobalPropertyNames",[$h‍_a=>initialGlobalPropertyNames=$h‍_a]]]],["./tame-function-tostring.js",[["tameFunctionToString",[$h‍_a=>tameFunctionToString=$h‍_a]]]],["./tame-domains.js",[["tameDomains",[$h‍_a=>tameDomains=$h‍_a]]]],["./error/tame-console.js",[["tameConsole",[$h‍_a=>tameConsole=$h‍_a]]]],["./error/tame-error-constructor.js",[["default",[$h‍_a=>tameErrorConstructor=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]],["makeAssert",[$h‍_a=>makeAssert=$h‍_a]]]],["./environment-options.js",[["makeEnvironmentCaptor",[$h‍_a=>makeEnvironmentCaptor=$h‍_a]]]],["./get-anonymous-intrinsics.js",[["getAnonymousIntrinsics",[$h‍_a=>getAnonymousIntrinsics=$h‍_a]]]],["./compartment-shim.js",[["makeCompartmentConstructor",[$h‍_a=>makeCompartmentConstructor=$h‍_a]]]],["./tame-harden.js",[["tameHarden",[$h‍_a=>tameHarden=$h‍_a]]]]]);const{Fail:Fail,details:d,quote:q}=assert;let priorLockdown;const safeHarden=makeHardener(),repairIntrinsics=(options={})=>{const{getEnvironmentOption:getenv,getCapturedEnvironmentOptionNames:getCapturedEnvironmentOptionNames}=makeEnvironmentCaptor(globalThis),{errorTaming:errorTaming=getenv("LOCKDOWN_ERROR_TAMING","safe"),errorTrapping:errorTrapping=getenv("LOCKDOWN_ERROR_TRAPPING","platform"),unhandledRejectionTrapping:unhandledRejectionTrapping=getenv("LOCKDOWN_UNHANDLED_REJECTION_TRAPPING","report"),regExpTaming:regExpTaming=getenv("LOCKDOWN_REGEXP_TAMING","safe"),localeTaming:localeTaming=getenv("LOCKDOWN_LOCALE_TAMING","safe"),consoleTaming:consoleTaming=getenv("LOCKDOWN_CONSOLE_TAMING","safe"),overrideTaming:overrideTaming=getenv("LOCKDOWN_OVERRIDE_TAMING","moderate"),stackFiltering:stackFiltering=getenv("LOCKDOWN_STACK_FILTERING","concise"),domainTaming:domainTaming=getenv("LOCKDOWN_DOMAIN_TAMING","safe"),evalTaming:evalTaming=getenv("LOCKDOWN_EVAL_TAMING","safeEval"),overrideDebug:overrideDebug=arrayFilter(stringSplit(getenv("LOCKDOWN_OVERRIDE_DEBUG",""),","),(debugName=>""!==debugName)),__hardenTaming__:__hardenTaming__=getenv("LOCKDOWN_HARDEN_TAMING","safe"),dateTaming:dateTaming="safe",mathTaming:mathTaming="safe",...extraOptions}=options,capturedEnvironmentOptionNames=getCapturedEnvironmentOptionNames();capturedEnvironmentOptionNames.length>0&&console.warn(`SES Lockdown using options from environment variables ${enJoin(arrayMap(capturedEnvironmentOptionNames,q),"and")}`),"unsafeEval"===evalTaming||"safeEval"===evalTaming||"noEval"===evalTaming||Fail`lockdown(): non supported option evalTaming: ${q(evalTaming)}`;const extraOptionsNames=ownKeys(extraOptions);0===extraOptionsNames.length||Fail`lockdown(): non supported option ${q(extraOptionsNames)}`,void 0===priorLockdown||assert.fail(d`Already locked down at ${priorLockdown} (SES_ALREADY_LOCKED_DOWN)`,TypeError),priorLockdown=new TypeError("Prior lockdown (SES_ALREADY_LOCKED_DOWN)"),priorLockdown.stack,(()=>{let allowed=!1;try{allowed=FERAL_FUNCTION("eval","SES_changed",' eval("SES_changed = true");\n return SES_changed;\n ')(FERAL_EVAL,!1),allowed||delete globalThis.SES_changed}catch(_error){allowed=!0}if(!allowed)throw new TypeError("SES cannot initialize unless 'eval' is the original intrinsic 'eval', suitable for direct-eval (dynamically scoped eval) (SES_DIRECT_EVAL)")})();if(globalThis.Function.prototype.constructor!==globalThis.Function&&"function"==typeof globalThis.harden&&"function"==typeof globalThis.lockdown&&globalThis.Date.prototype.constructor!==globalThis.Date&&"function"==typeof globalThis.Date.now&&is(globalThis.Date.prototype.constructor.now(),NaN))throw new TypeError("Already locked down but not by this SES instance (SES_MULTIPLE_INSTANCES)");tameDomains(domainTaming);const{addIntrinsics:addIntrinsics,completePrototypes:completePrototypes,finalIntrinsics:finalIntrinsics}=makeIntrinsicsCollector(),tamedHarden=tameHarden(safeHarden,__hardenTaming__);addIntrinsics({harden:tamedHarden}),addIntrinsics(tameFunctionConstructors()),addIntrinsics(tameDateConstructor(dateTaming)),addIntrinsics(tameErrorConstructor(errorTaming,stackFiltering)),addIntrinsics(tameMathObject(mathTaming)),addIntrinsics(tameRegExpConstructor(regExpTaming)),addIntrinsics(getAnonymousIntrinsics()),completePrototypes();const intrinsics=finalIntrinsics();let optGetStackString;"unsafe"!==errorTaming&&(optGetStackString=intrinsics["%InitialGetStackString%"]);const consoleRecord=tameConsole(consoleTaming,errorTrapping,unhandledRejectionTrapping,optGetStackString);globalThis.console=consoleRecord.console,"unsafe"===errorTaming&&globalThis.assert===assert&&(globalThis.assert=makeAssert(void 0,!0)),tameLocaleMethods(intrinsics,localeTaming);const markVirtualizedNativeFunction=tameFunctionToString();if(whitelistIntrinsics(intrinsics,markVirtualizedNativeFunction),setGlobalObjectConstantProperties(globalThis),setGlobalObjectMutableProperties(globalThis,{intrinsics:intrinsics,newGlobalPropertyNames:initialGlobalPropertyNames,makeCompartmentConstructor:makeCompartmentConstructor,markVirtualizedNativeFunction:markVirtualizedNativeFunction}),"noEval"===evalTaming)setGlobalObjectEvaluators(globalThis,noEvalEvaluate,markVirtualizedNativeFunction);else if("safeEval"===evalTaming){const{safeEvaluate:safeEvaluate}=makeSafeEvaluator({globalObject:globalThis});setGlobalObjectEvaluators(globalThis,safeEvaluate,markVirtualizedNativeFunction)}return function(){return enablePropertyOverrides(intrinsics,overrideTaming,overrideDebug),tamedHarden(intrinsics),globalThis.harden=tamedHarden,!0}};$h‍_once.repairIntrinsics(repairIntrinsics);$h‍_once.lockdown(((options={})=>{repairIntrinsics(options)()}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let globalThis,TypeError,assign,tameFunctionToString,getGlobalIntrinsics,lockdown,makeCompartmentConstructor,assert;if($h‍_imports([["./src/commons.js",[["globalThis",[$h‍_a=>globalThis=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]]]],["./src/tame-function-tostring.js",[["tameFunctionToString",[$h‍_a=>tameFunctionToString=$h‍_a]]]],["./src/intrinsics.js",[["getGlobalIntrinsics",[$h‍_a=>getGlobalIntrinsics=$h‍_a]]]],["./src/lockdown-shim.js",[["lockdown",[$h‍_a=>lockdown=$h‍_a]]]],["./src/compartment-shim.js",[["makeCompartmentConstructor",[$h‍_a=>makeCompartmentConstructor=$h‍_a]]]],["./src/error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]),function(){return this}())throw new TypeError("SES failed to initialize, sloppy mode (SES_NO_SLOPPY)");const markVirtualizedNativeFunction=tameFunctionToString(),Compartment=makeCompartmentConstructor(makeCompartmentConstructor,getGlobalIntrinsics(globalThis),markVirtualizedNativeFunction);assign(globalThis,{lockdown:lockdown,Compartment:Compartment,assert:assert})}],cell=(name,value=undefined)=>{const observers=[];return Object.freeze({get:Object.freeze((()=>value)),set:Object.freeze((newValue=>{value=newValue;for(const observe of observers)observe(value)})),observe:Object.freeze((observe=>{observers.push(observe),observe(value)})),enumerable:!0})},cells=[{globalThis:cell(),Array:cell(),Date:cell(),FinalizationRegistry:cell(),Float32Array:cell(),JSON:cell(),Map:cell(),Math:cell(),Number:cell(),Object:cell(),Promise:cell(),Proxy:cell(),Reflect:cell(),FERAL_REG_EXP:cell(),Set:cell(),String:cell(),WeakMap:cell(),WeakSet:cell(),FERAL_ERROR:cell(),RangeError:cell(),ReferenceError:cell(),SyntaxError:cell(),TypeError:cell(),assign:cell(),create:cell(),defineProperties:cell(),entries:cell(),freeze:cell(),getOwnPropertyDescriptor:cell(),getOwnPropertyDescriptors:cell(),getOwnPropertyNames:cell(),getPrototypeOf:cell(),is:cell(),isFrozen:cell(),isSealed:cell(),isExtensible:cell(),keys:cell(),objectPrototype:cell(),seal:cell(),preventExtensions:cell(),setPrototypeOf:cell(),values:cell(),fromEntries:cell(),speciesSymbol:cell(),toStringTagSymbol:cell(),iteratorSymbol:cell(),matchAllSymbol:cell(),unscopablesSymbol:cell(),symbolKeyFor:cell(),symbolFor:cell(),isInteger:cell(),stringifyJson:cell(),defineProperty:cell(),apply:cell(),construct:cell(),reflectGet:cell(),reflectGetOwnPropertyDescriptor:cell(),reflectHas:cell(),reflectIsExtensible:cell(),ownKeys:cell(),reflectPreventExtensions:cell(),reflectSet:cell(),isArray:cell(),arrayPrototype:cell(),mapPrototype:cell(),proxyRevocable:cell(),regexpPrototype:cell(),setPrototype:cell(),stringPrototype:cell(),weakmapPrototype:cell(),weaksetPrototype:cell(),functionPrototype:cell(),promisePrototype:cell(),typedArrayPrototype:cell(),uncurryThis:cell(),objectHasOwnProperty:cell(),arrayFilter:cell(),arrayForEach:cell(),arrayIncludes:cell(),arrayJoin:cell(),arrayMap:cell(),arrayPop:cell(),arrayPush:cell(),arraySlice:cell(),arraySome:cell(),arraySort:cell(),iterateArray:cell(),mapSet:cell(),mapGet:cell(),mapHas:cell(),mapDelete:cell(),mapEntries:cell(),iterateMap:cell(),setAdd:cell(),setDelete:cell(),setForEach:cell(),setHas:cell(),iterateSet:cell(),regexpTest:cell(),regexpExec:cell(),matchAllRegExp:cell(),stringEndsWith:cell(),stringIncludes:cell(),stringIndexOf:cell(),stringMatch:cell(),stringReplace:cell(),stringSearch:cell(),stringSlice:cell(),stringSplit:cell(),stringStartsWith:cell(),iterateString:cell(),weakmapDelete:cell(),weakmapGet:cell(),weakmapHas:cell(),weakmapSet:cell(),weaksetAdd:cell(),weaksetHas:cell(),functionToString:cell(),promiseAll:cell(),promiseCatch:cell(),promiseThen:cell(),finalizationRegistryRegister:cell(),finalizationRegistryUnregister:cell(),getConstructorOf:cell(),immutableObject:cell(),isObject:cell(),isError:cell(),FERAL_EVAL:cell(),FERAL_FUNCTION:cell(),noEvalEvaluate:cell()},{},{makeLRUCacheMap:cell(),makeNoteLogArgsArrayKit:cell()},{an:cell(),bestEffortStringify:cell(),enJoin:cell()},{},{unredactedDetails:cell(),loggedErrorHandler:cell(),makeAssert:cell(),assert:cell()},{makeEvalScopeKit:cell()},{isValidIdentifierName:cell(),getScopeConstants:cell()},{makeEvaluate:cell()},{alwaysThrowHandler:cell(),strictScopeTerminatorHandler:cell(),strictScopeTerminator:cell()},{createSloppyGlobalsScopeTerminator:cell()},{getSourceURL:cell()},{rejectHtmlComments:cell(),evadeHtmlCommentTest:cell(),rejectImportExpressions:cell(),evadeImportExpressionTest:cell(),rejectSomeDirectEvalExpressions:cell(),mandatoryTransforms:cell(),applyTransforms:cell(),transforms:cell()},{makeSafeEvaluator:cell()},{provideCompartmentEvaluator:cell(),compartmentEvaluate:cell()},{makeEvalFunction:cell()},{makeFunctionConstructor:cell()},{constantProperties:cell(),universalPropertyNames:cell(),initialGlobalPropertyNames:cell(),sharedGlobalPropertyNames:cell(),uniqueGlobalPropertyNames:cell(),NativeErrors:cell(),FunctionInstance:cell(),isAccessorPermit:cell(),whitelist:cell()},{setGlobalObjectSymbolUnscopables:cell(),setGlobalObjectConstantProperties:cell(),setGlobalObjectMutableProperties:cell(),setGlobalObjectEvaluators:cell()},{makeAlias:cell(),load:cell()},{deferExports:cell(),getDeferredExports:cell()},{makeThirdPartyModuleInstance:cell(),makeModuleInstance:cell()},{link:cell(),instantiate:cell()},{InertCompartment:cell(),CompartmentPrototype:cell(),makeCompartmentConstructor:cell()},{makeIntrinsicsCollector:cell(),getGlobalIntrinsics:cell()},{minEnablements:cell(),moderateEnablements:cell(),severeEnablements:cell()},{default:cell()},{makeEnvironmentCaptor:cell()},{makeLoggingConsoleKit:cell(),makeCausalConsole:cell(),filterConsole:cell(),consoleWhitelist:cell()},{makeRejectionHandlers:cell()},{tameConsole:cell()},{filterFileName:cell(),shortenCallSiteString:cell(),tameV8ErrorConstructor:cell()},{default:cell()},{getAnonymousIntrinsics:cell()},{isTypedArray:cell(),makeHardener:cell()},{default:cell()},{tameDomains:cell()},{default:cell()},{tameFunctionToString:cell()},{tameHarden:cell()},{default:cell()},{default:cell()},{default:cell()},{default:cell()},{repairIntrinsics:cell(),lockdown:cell()},{}],namespaces=cells.map((cells=>Object.freeze(Object.create(null,cells))));for(let index=0;index{const functors=[({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);const universalThis=globalThis;$h‍_once.universalThis(universalThis);const{Array:Array,Date:Date,FinalizationRegistry:FinalizationRegistry,Float32Array:Float32Array,JSON:JSON,Map:Map,Math:Math,Number:Number,Object:Object,Promise:Promise,Proxy:Proxy,Reflect:Reflect,RegExp:FERAL_REG_EXP,Set:Set,String:String,Symbol:Symbol,WeakMap:WeakMap,WeakSet:WeakSet}=globalThis;$h‍_once.Array(Array),$h‍_once.Date(Date),$h‍_once.FinalizationRegistry(FinalizationRegistry),$h‍_once.Float32Array(Float32Array),$h‍_once.JSON(JSON),$h‍_once.Map(Map),$h‍_once.Math(Math),$h‍_once.Number(Number),$h‍_once.Object(Object),$h‍_once.Promise(Promise),$h‍_once.Proxy(Proxy),$h‍_once.Reflect(Reflect),$h‍_once.FERAL_REG_EXP(FERAL_REG_EXP),$h‍_once.Set(Set),$h‍_once.String(String),$h‍_once.Symbol(Symbol),$h‍_once.WeakMap(WeakMap),$h‍_once.WeakSet(WeakSet);const{Error:FERAL_ERROR,RangeError:RangeError,ReferenceError:ReferenceError,SyntaxError:SyntaxError,TypeError:TypeError}=globalThis;$h‍_once.FERAL_ERROR(FERAL_ERROR),$h‍_once.RangeError(RangeError),$h‍_once.ReferenceError(ReferenceError),$h‍_once.SyntaxError(SyntaxError),$h‍_once.TypeError(TypeError);const{assign:assign,create:create,defineProperties:defineProperties,entries:entries,freeze:freeze,getOwnPropertyDescriptor:getOwnPropertyDescriptor,getOwnPropertyDescriptors:getOwnPropertyDescriptors,getOwnPropertyNames:getOwnPropertyNames,getPrototypeOf:getPrototypeOf,is:is,isFrozen:isFrozen,isSealed:isSealed,isExtensible:isExtensible,keys:keys,prototype:objectPrototype,seal:seal,preventExtensions:preventExtensions,setPrototypeOf:setPrototypeOf,values:values,fromEntries:fromEntries}=Object;$h‍_once.assign(assign),$h‍_once.create(create),$h‍_once.defineProperties(defineProperties),$h‍_once.entries(entries),$h‍_once.freeze(freeze),$h‍_once.getOwnPropertyDescriptor(getOwnPropertyDescriptor),$h‍_once.getOwnPropertyDescriptors(getOwnPropertyDescriptors),$h‍_once.getOwnPropertyNames(getOwnPropertyNames),$h‍_once.getPrototypeOf(getPrototypeOf),$h‍_once.is(is),$h‍_once.isFrozen(isFrozen),$h‍_once.isSealed(isSealed),$h‍_once.isExtensible(isExtensible),$h‍_once.keys(keys),$h‍_once.objectPrototype(objectPrototype),$h‍_once.seal(seal),$h‍_once.preventExtensions(preventExtensions),$h‍_once.setPrototypeOf(setPrototypeOf),$h‍_once.values(values),$h‍_once.fromEntries(fromEntries);const{species:speciesSymbol,toStringTag:toStringTagSymbol,iterator:iteratorSymbol,matchAll:matchAllSymbol,unscopables:unscopablesSymbol,keyFor:symbolKeyFor,for:symbolFor}=Symbol;$h‍_once.speciesSymbol(speciesSymbol),$h‍_once.toStringTagSymbol(toStringTagSymbol),$h‍_once.iteratorSymbol(iteratorSymbol),$h‍_once.matchAllSymbol(matchAllSymbol),$h‍_once.unscopablesSymbol(unscopablesSymbol),$h‍_once.symbolKeyFor(symbolKeyFor),$h‍_once.symbolFor(symbolFor);const{isInteger:isInteger}=Number;$h‍_once.isInteger(isInteger);const{stringify:stringifyJson}=JSON;$h‍_once.stringifyJson(stringifyJson);const{defineProperty:originalDefineProperty}=Object;$h‍_once.defineProperty(((object,prop,descriptor)=>{const result=originalDefineProperty(object,prop,descriptor);if(result!==object)throw TypeError(`Please report that the original defineProperty silently failed to set ${stringifyJson(String(prop))}. (SES_DEFINE_PROPERTY_FAILED_SILENTLY)`);return result}));const{apply:apply,construct:construct,get:reflectGet,getOwnPropertyDescriptor:reflectGetOwnPropertyDescriptor,has:reflectHas,isExtensible:reflectIsExtensible,ownKeys:ownKeys,preventExtensions:reflectPreventExtensions,set:reflectSet}=Reflect;$h‍_once.apply(apply),$h‍_once.construct(construct),$h‍_once.reflectGet(reflectGet),$h‍_once.reflectGetOwnPropertyDescriptor(reflectGetOwnPropertyDescriptor),$h‍_once.reflectHas(reflectHas),$h‍_once.reflectIsExtensible(reflectIsExtensible),$h‍_once.ownKeys(ownKeys),$h‍_once.reflectPreventExtensions(reflectPreventExtensions),$h‍_once.reflectSet(reflectSet);const{isArray:isArray,prototype:arrayPrototype}=Array;$h‍_once.isArray(isArray),$h‍_once.arrayPrototype(arrayPrototype);const{prototype:mapPrototype}=Map;$h‍_once.mapPrototype(mapPrototype);const{revocable:proxyRevocable}=Proxy;$h‍_once.proxyRevocable(proxyRevocable);const{prototype:regexpPrototype}=RegExp;$h‍_once.regexpPrototype(regexpPrototype);const{prototype:setPrototype}=Set;$h‍_once.setPrototype(setPrototype);const{prototype:stringPrototype}=String;$h‍_once.stringPrototype(stringPrototype);const{prototype:weakmapPrototype}=WeakMap;$h‍_once.weakmapPrototype(weakmapPrototype);const{prototype:weaksetPrototype}=WeakSet;$h‍_once.weaksetPrototype(weaksetPrototype);const{prototype:functionPrototype}=Function;$h‍_once.functionPrototype(functionPrototype);const{prototype:promisePrototype}=Promise;$h‍_once.promisePrototype(promisePrototype);const typedArrayPrototype=getPrototypeOf(Uint8Array.prototype);$h‍_once.typedArrayPrototype(typedArrayPrototype);const{bind:bind}=functionPrototype,uncurryThis=bind.bind(bind.call);$h‍_once.uncurryThis(uncurryThis);const objectHasOwnProperty=uncurryThis(objectPrototype.hasOwnProperty);$h‍_once.objectHasOwnProperty(objectHasOwnProperty);const arrayFilter=uncurryThis(arrayPrototype.filter);$h‍_once.arrayFilter(arrayFilter);const arrayForEach=uncurryThis(arrayPrototype.forEach);$h‍_once.arrayForEach(arrayForEach);const arrayIncludes=uncurryThis(arrayPrototype.includes);$h‍_once.arrayIncludes(arrayIncludes);const arrayJoin=uncurryThis(arrayPrototype.join);$h‍_once.arrayJoin(arrayJoin);const arrayMap=uncurryThis(arrayPrototype.map);$h‍_once.arrayMap(arrayMap);const arrayPop=uncurryThis(arrayPrototype.pop);$h‍_once.arrayPop(arrayPop);const arrayPush=uncurryThis(arrayPrototype.push);$h‍_once.arrayPush(arrayPush);const arraySlice=uncurryThis(arrayPrototype.slice);$h‍_once.arraySlice(arraySlice);const arraySome=uncurryThis(arrayPrototype.some);$h‍_once.arraySome(arraySome);const arraySort=uncurryThis(arrayPrototype.sort);$h‍_once.arraySort(arraySort);const iterateArray=uncurryThis(arrayPrototype[iteratorSymbol]);$h‍_once.iterateArray(iterateArray);const mapSet=uncurryThis(mapPrototype.set);$h‍_once.mapSet(mapSet);const mapGet=uncurryThis(mapPrototype.get);$h‍_once.mapGet(mapGet);const mapHas=uncurryThis(mapPrototype.has);$h‍_once.mapHas(mapHas);const mapDelete=uncurryThis(mapPrototype.delete);$h‍_once.mapDelete(mapDelete);const mapEntries=uncurryThis(mapPrototype.entries);$h‍_once.mapEntries(mapEntries);const iterateMap=uncurryThis(mapPrototype[iteratorSymbol]);$h‍_once.iterateMap(iterateMap);const setAdd=uncurryThis(setPrototype.add);$h‍_once.setAdd(setAdd);const setDelete=uncurryThis(setPrototype.delete);$h‍_once.setDelete(setDelete);const setForEach=uncurryThis(setPrototype.forEach);$h‍_once.setForEach(setForEach);const setHas=uncurryThis(setPrototype.has);$h‍_once.setHas(setHas);const iterateSet=uncurryThis(setPrototype[iteratorSymbol]);$h‍_once.iterateSet(iterateSet);const regexpTest=uncurryThis(regexpPrototype.test);$h‍_once.regexpTest(regexpTest);const regexpExec=uncurryThis(regexpPrototype.exec);$h‍_once.regexpExec(regexpExec);const matchAllRegExp=uncurryThis(regexpPrototype[matchAllSymbol]);$h‍_once.matchAllRegExp(matchAllRegExp);const stringEndsWith=uncurryThis(stringPrototype.endsWith);$h‍_once.stringEndsWith(stringEndsWith);const stringIncludes=uncurryThis(stringPrototype.includes);$h‍_once.stringIncludes(stringIncludes);const stringIndexOf=uncurryThis(stringPrototype.indexOf);$h‍_once.stringIndexOf(stringIndexOf);const stringMatch=uncurryThis(stringPrototype.match);$h‍_once.stringMatch(stringMatch);const stringReplace=uncurryThis(stringPrototype.replace);$h‍_once.stringReplace(stringReplace);const stringSearch=uncurryThis(stringPrototype.search);$h‍_once.stringSearch(stringSearch);const stringSlice=uncurryThis(stringPrototype.slice);$h‍_once.stringSlice(stringSlice);const stringSplit=uncurryThis(stringPrototype.split);$h‍_once.stringSplit(stringSplit);const stringStartsWith=uncurryThis(stringPrototype.startsWith);$h‍_once.stringStartsWith(stringStartsWith);const iterateString=uncurryThis(stringPrototype[iteratorSymbol]);$h‍_once.iterateString(iterateString);const weakmapDelete=uncurryThis(weakmapPrototype.delete);$h‍_once.weakmapDelete(weakmapDelete);const weakmapGet=uncurryThis(weakmapPrototype.get);$h‍_once.weakmapGet(weakmapGet);const weakmapHas=uncurryThis(weakmapPrototype.has);$h‍_once.weakmapHas(weakmapHas);const weakmapSet=uncurryThis(weakmapPrototype.set);$h‍_once.weakmapSet(weakmapSet);const weaksetAdd=uncurryThis(weaksetPrototype.add);$h‍_once.weaksetAdd(weaksetAdd);const weaksetHas=uncurryThis(weaksetPrototype.has);$h‍_once.weaksetHas(weaksetHas);const functionToString=uncurryThis(functionPrototype.toString);$h‍_once.functionToString(functionToString);const{all:all}=Promise;$h‍_once.promiseAll((promises=>apply(all,Promise,[promises])));const promiseCatch=uncurryThis(promisePrototype.catch);$h‍_once.promiseCatch(promiseCatch);const promiseThen=uncurryThis(promisePrototype.then);$h‍_once.promiseThen(promiseThen);const finalizationRegistryRegister=FinalizationRegistry&&uncurryThis(FinalizationRegistry.prototype.register);$h‍_once.finalizationRegistryRegister(finalizationRegistryRegister);const finalizationRegistryUnregister=FinalizationRegistry&&uncurryThis(FinalizationRegistry.prototype.unregister);$h‍_once.finalizationRegistryUnregister(finalizationRegistryUnregister);$h‍_once.getConstructorOf((fn=>reflectGet(getPrototypeOf(fn),"constructor")));const immutableObject=freeze(create(null));$h‍_once.immutableObject(immutableObject);$h‍_once.isObject((value=>Object(value)===value));$h‍_once.isError((value=>value instanceof FERAL_ERROR));const FERAL_EVAL=eval;$h‍_once.FERAL_EVAL(FERAL_EVAL);const FERAL_FUNCTION=Function;$h‍_once.FERAL_FUNCTION(FERAL_FUNCTION);$h‍_once.noEvalEvaluate((()=>{throw new TypeError('Cannot eval with evalTaming set to "noEval" (SES_NO_EVAL)')}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([])},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([["./internal-types.js",[]]]);const{freeze:freeze}=Object,{isSafeInteger:isSafeInteger}=Number,makeSelfCell=data=>{const selfCell={next:void 0,prev:void 0,data:data};return selfCell.next=selfCell,selfCell.prev=selfCell,selfCell},spliceAfter=(prev,selfCell)=>{if(prev===selfCell)throw TypeError("Cannot splice a cell into itself");if(selfCell.next!==selfCell||selfCell.prev!==selfCell)throw TypeError("Expected self-linked cell");const cell=selfCell,next=prev.next;return cell.prev=prev,cell.next=next,prev.next=cell,next.prev=cell,cell},spliceOut=cell=>{const{prev:prev,next:next}=cell;prev.next=next,next.prev=prev,cell.prev=cell,cell.next=cell},makeLRUCacheMap=keysBudget=>{if(!isSafeInteger(keysBudget)||keysBudget<0)throw new TypeError("keysBudget must be a safe non-negative integer number");const keyToCell=new WeakMap;let size=0;const head=makeSelfCell(void 0),touchCell=key=>{const cell=keyToCell.get(key);if(void 0!==cell&&void 0!==cell.data)return spliceOut(cell),spliceAfter(head,cell),cell},has=key=>void 0!==touchCell(key);freeze(has);const get=key=>{const cell=touchCell(key);return cell&&cell.data&&cell.data.get(key)};freeze(get);const set=(key,value)=>{if(keysBudget<1)return lruCacheMap;let cell=touchCell(key);if(void 0===cell&&(cell=makeSelfCell(void 0),spliceAfter(head,cell)),!cell.data)for(size+=1,cell.data=new WeakMap,keyToCell.set(key,cell);size>keysBudget;){const condemned=head.prev;spliceOut(condemned),condemned.data=void 0,size-=1}return cell.data.set(key,value),lruCacheMap};freeze(set);const deleteIt=key=>{const cell=keyToCell.get(key);return void 0!==cell&&(spliceOut(cell),keyToCell.delete(key),void 0!==cell.data&&(cell.data=void 0,size-=1,!0))};freeze(deleteIt);const lruCacheMap=freeze({has:has,get:get,set:set,delete:deleteIt,[Symbol.toStringTag]:"LRUCacheMap"});return lruCacheMap};$h‍_once.makeLRUCacheMap(makeLRUCacheMap),freeze(makeLRUCacheMap);const makeNoteLogArgsArrayKit=(errorsBudget=1e3,argsPerErrorBudget=100)=>{if(!isSafeInteger(argsPerErrorBudget)||argsPerErrorBudget<1)throw new TypeError("argsPerErrorBudget must be a safe positive integer number");const noteLogArgsArrayMap=makeLRUCacheMap(errorsBudget),addLogArgs=(error,logArgs)=>{const logArgsArray=noteLogArgsArrayMap.get(error);void 0!==logArgsArray?(logArgsArray.length>=argsPerErrorBudget&&logArgsArray.shift(),logArgsArray.push(logArgs)):noteLogArgsArrayMap.set(error,[logArgs])};freeze(addLogArgs);const takeLogArgsArray=error=>{const result=noteLogArgsArrayMap.get(error);return noteLogArgsArrayMap.delete(error),result};return freeze(takeLogArgsArray),freeze({addLogArgs:addLogArgs,takeLogArgsArray:takeLogArgsArray})};$h‍_once.makeNoteLogArgsArrayKit(makeNoteLogArgsArrayKit),freeze(makeNoteLogArgsArrayKit)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Set,String,arrayJoin,arraySlice,freeze,is,isError,setAdd,setHas,stringIncludes,stringStartsWith,stringifyJson,toStringTagSymbol;$h‍_imports([["../commons.js",[["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arraySlice",[$h‍_a=>arraySlice=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["isError",[$h‍_a=>isError=$h‍_a]],["setAdd",[$h‍_a=>setAdd=$h‍_a]],["setHas",[$h‍_a=>setHas=$h‍_a]],["stringIncludes",[$h‍_a=>stringIncludes=$h‍_a]],["stringStartsWith",[$h‍_a=>stringStartsWith=$h‍_a]],["stringifyJson",[$h‍_a=>stringifyJson=$h‍_a]],["toStringTagSymbol",[$h‍_a=>toStringTagSymbol=$h‍_a]]]]]);$h‍_once.enJoin(((terms,conjunction)=>{if(0===terms.length)return"(none)";if(1===terms.length)return terms[0];if(2===terms.length){const[first,second]=terms;return`${first} ${conjunction} ${second}`}return`${arrayJoin(arraySlice(terms,0,-1),", ")}, ${conjunction} ${terms[terms.length-1]}`}));const an=str=>(str=`${str}`).length>=1&&stringIncludes("aeiouAEIOU",str[0])?`an ${str}`:`a ${str}`;$h‍_once.an(an),freeze(an);const bestEffortStringify=(payload,spaces=undefined)=>{const seenSet=new Set,replacer=(_,val)=>{switch(typeof val){case"object":return null===val?null:setHas(seenSet,val)?"[Seen]":(setAdd(seenSet,val),isError(val)?`[${val.name}: ${val.message}]`:toStringTagSymbol in val?`[${val[toStringTagSymbol]}]`:val);case"function":return`[Function ${val.name||""}]`;case"string":return stringStartsWith(val,"[")?`[${val}]`:val;case"undefined":case"symbol":return`[${String(val)}]`;case"bigint":return`[${val}n]`;case"number":return is(val,NaN)?"[NaN]":val===1/0?"[Infinity]":val===-1/0?"[-Infinity]":val;default:return val}};try{return stringifyJson(payload,replacer,spaces)}catch(_err){return"[Something that failed to stringify]"}};$h‍_once.bestEffortStringify(bestEffortStringify),freeze(bestEffortStringify)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([])},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let RangeError,TypeError,WeakMap,arrayJoin,arrayMap,arrayPop,arrayPush,assign,freeze,globalThis,is,isError,stringIndexOf,stringReplace,stringSlice,stringStartsWith,weakmapDelete,weakmapGet,weakmapHas,weakmapSet,an,bestEffortStringify,makeNoteLogArgsArrayKit;$h‍_imports([["../commons.js",[["RangeError",[$h‍_a=>RangeError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arrayPop",[$h‍_a=>arrayPop=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["isError",[$h‍_a=>isError=$h‍_a]],["stringIndexOf",[$h‍_a=>stringIndexOf=$h‍_a]],["stringReplace",[$h‍_a=>stringReplace=$h‍_a]],["stringSlice",[$h‍_a=>stringSlice=$h‍_a]],["stringStartsWith",[$h‍_a=>stringStartsWith=$h‍_a]],["weakmapDelete",[$h‍_a=>weakmapDelete=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapHas",[$h‍_a=>weakmapHas=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]]]],["./stringify-utils.js",[["an",[$h‍_a=>an=$h‍_a]],["bestEffortStringify",[$h‍_a=>bestEffortStringify=$h‍_a]]]],["./types.js",[]],["./internal-types.js",[]],["./note-log-args.js",[["makeNoteLogArgsArrayKit",[$h‍_a=>makeNoteLogArgsArrayKit=$h‍_a]]]]]);const declassifiers=new WeakMap,quote=(payload,spaces=undefined)=>{const result=freeze({toString:freeze((()=>bestEffortStringify(payload,spaces)))});return weakmapSet(declassifiers,result,payload),result};freeze(quote);const hiddenDetailsMap=new WeakMap,getMessageString=({template:template,args:args})=>{const parts=[template[0]];for(let i=0;i{const detailsToken=freeze({__proto__:DetailsTokenProto});return weakmapSet(hiddenDetailsMap,detailsToken,{template:template,args:args}),detailsToken};freeze(redactedDetails);const unredactedDetails=(template,...args)=>(args=arrayMap(args,(arg=>weakmapHas(declassifiers,arg)?arg:quote(arg))),redactedDetails(template,...args));$h‍_once.unredactedDetails(unredactedDetails),freeze(unredactedDetails);const getLogArgs=({template:template,args:args})=>{const logArgs=[template[0]];for(let i=0;i{let errorTag=weakmapGet(errorTags,err);return void 0!==errorTag||(errorTagNum+=1,errorTag=`${optErrorName}#${errorTagNum}`,weakmapSet(errorTags,err,errorTag)),errorTag},makeError=(optDetails=redactedDetails`Assert failed`,ErrorConstructor=globalThis.Error,{errorName:errorName}={})=>{"string"==typeof optDetails&&(optDetails=redactedDetails([optDetails]));const hiddenDetails=weakmapGet(hiddenDetailsMap,optDetails);if(void 0===hiddenDetails)throw new TypeError(`unrecognized details ${quote(optDetails)}`);const error=new ErrorConstructor(getMessageString(hiddenDetails));return weakmapSet(hiddenMessageLogArgs,error,getLogArgs(hiddenDetails)),void 0!==errorName&&tagError(error,errorName),error};freeze(makeError);const{addLogArgs:addLogArgs,takeLogArgsArray:takeLogArgsArray}=makeNoteLogArgsArrayKit(),hiddenNoteCallbackArrays=new WeakMap,note=(error,detailsNote)=>{"string"==typeof detailsNote&&(detailsNote=redactedDetails([detailsNote]));const hiddenDetails=weakmapGet(hiddenDetailsMap,detailsNote);if(void 0===hiddenDetails)throw new TypeError(`unrecognized details ${quote(detailsNote)}`);const logArgs=getLogArgs(hiddenDetails),callbacks=weakmapGet(hiddenNoteCallbackArrays,error);if(void 0!==callbacks)for(const callback of callbacks)callback(error,logArgs);else addLogArgs(error,logArgs)};freeze(note);const loggedErrorHandler={getStackString:globalThis.getStackString||(error=>{if(!("stack"in error))return"";const stackString=`${error.stack}`,pos=stringIndexOf(stackString,"\n");return stringStartsWith(stackString," ")||-1===pos?stackString:stringSlice(stackString,pos+1)}),tagError:error=>tagError(error),resetErrorTagNum:()=>{errorTagNum=0},getMessageLogArgs:error=>weakmapGet(hiddenMessageLogArgs,error),takeMessageLogArgs:error=>{const result=weakmapGet(hiddenMessageLogArgs,error);return weakmapDelete(hiddenMessageLogArgs,error),result},takeNoteLogArgsArray:(error,callback)=>{const result=takeLogArgsArray(error);if(void 0!==callback){const callbacks=weakmapGet(hiddenNoteCallbackArrays,error);callbacks?arrayPush(callbacks,callback):weakmapSet(hiddenNoteCallbackArrays,error,[callback])}return result||[]}};$h‍_once.loggedErrorHandler(loggedErrorHandler),freeze(loggedErrorHandler);const makeAssert=(optRaise=undefined,unredacted=!1)=>{const details=unredacted?unredactedDetails:redactedDetails,assertFailedDetails=details`Check failed`,fail=(optDetails=assertFailedDetails,ErrorConstructor=globalThis.Error)=>{const reason=makeError(optDetails,ErrorConstructor);throw void 0!==optRaise&&optRaise(reason),reason};freeze(fail);const Fail=(template,...args)=>fail(details(template,...args));const equal=(actual,expected,optDetails=undefined,ErrorConstructor=undefined)=>{is(actual,expected)||fail(optDetails||details`Expected ${actual} is same as ${expected}`,ErrorConstructor||RangeError)};freeze(equal);const assertTypeof=(specimen,typename,optDetails)=>{typeof specimen!==typename&&("string"==typeof typename||Fail`${quote(typename)} must be a string`,void 0===optDetails&&(optDetails=details(["",` must be ${an(typename)}`],specimen)),fail(optDetails,TypeError))};freeze(assertTypeof);const assert=assign((function(flag,optDetails=undefined,ErrorConstructor=undefined){flag||fail(optDetails,ErrorConstructor)}),{error:makeError,fail:fail,equal:equal,typeof:assertTypeof,string:(specimen,optDetails=undefined)=>assertTypeof(specimen,"string",optDetails),note:note,details:details,Fail:Fail,quote:quote,makeAssert:makeAssert});return freeze(assert)};$h‍_once.makeAssert(makeAssert),freeze(makeAssert);const assert=makeAssert();$h‍_once.assert(assert)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_EVAL,create,defineProperties,freeze,assert;$h‍_imports([["./commons.js",[["FERAL_EVAL",[$h‍_a=>FERAL_EVAL=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail}=assert;$h‍_once.makeEvalScopeKit((()=>{const evalScope=create(null),oneTimeEvalProperties=freeze({eval:{get:()=>(delete evalScope.eval,FERAL_EVAL),enumerable:!1,configurable:!0}}),evalScopeKit={evalScope:evalScope,allowNextEvalToBeUnsafe(){const{revoked:revoked}=evalScopeKit;null!==revoked&&Fail`a handler did not reset allowNextEvalToBeUnsafe ${revoked.err}`,defineProperties(evalScope,oneTimeEvalProperties)},revoked:null};return evalScopeKit}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let arrayFilter,arrayIncludes,getOwnPropertyDescriptor,getOwnPropertyNames,objectHasOwnProperty,regexpTest;$h‍_imports([["./commons.js",[["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayIncludes",[$h‍_a=>arrayIncludes=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyNames",[$h‍_a=>getOwnPropertyNames=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["regexpTest",[$h‍_a=>regexpTest=$h‍_a]]]]]);const keywords=["await","break","case","catch","class","const","continue","debugger","default","delete","do","else","export","extends","finally","for","function","if","import","in","instanceof","new","return","super","switch","this","throw","try","typeof","var","void","while","with","yield","let","static","enum","implements","package","protected","interface","private","public","await","null","true","false","this","arguments"],identifierPattern=/^[a-zA-Z_$][\w$]*$/,isValidIdentifierName=name=>"eval"!==name&&!arrayIncludes(keywords,name)&®expTest(identifierPattern,name);function isImmutableDataProperty(obj,name){const desc=getOwnPropertyDescriptor(obj,name);return desc&&!1===desc.configurable&&!1===desc.writable&&objectHasOwnProperty(desc,"value")}$h‍_once.isValidIdentifierName(isValidIdentifierName);$h‍_once.getScopeConstants(((globalObject,moduleLexicals={})=>{const globalObjectNames=getOwnPropertyNames(globalObject),moduleLexicalNames=getOwnPropertyNames(moduleLexicals),moduleLexicalConstants=arrayFilter(moduleLexicalNames,(name=>isValidIdentifierName(name)&&isImmutableDataProperty(moduleLexicals,name)));return{globalObjectConstants:arrayFilter(globalObjectNames,(name=>!arrayIncludes(moduleLexicalNames,name)&&isValidIdentifierName(name)&&isImmutableDataProperty(globalObject,name))),moduleLexicalConstants:moduleLexicalConstants}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,arrayJoin,apply,getScopeConstants;function buildOptimizer(constants,name){return 0===constants.length?"":`const {${arrayJoin(constants,",")}} = this.${name};`}$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]]]],["./scope-constants.js",[["getScopeConstants",[$h‍_a=>getScopeConstants=$h‍_a]]]]]);$h‍_once.makeEvaluate((context=>{const{globalObjectConstants:globalObjectConstants,moduleLexicalConstants:moduleLexicalConstants}=getScopeConstants(context.globalObject,context.moduleLexicals),globalObjectOptimizer=buildOptimizer(globalObjectConstants,"globalObject"),moduleLexicalOptimizer=buildOptimizer(moduleLexicalConstants,"moduleLexicals"),evaluateFactory=FERAL_FUNCTION(`\n with (this.scopeTerminator) {\n with (this.globalObject) {\n with (this.moduleLexicals) {\n with (this.evalScope) {\n ${globalObjectOptimizer}\n ${moduleLexicalOptimizer}\n return function() {\n 'use strict';\n return eval(arguments[0]);\n };\n }\n }\n }\n }\n `);return apply(evaluateFactory,context,[])}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Proxy,String,TypeError,ReferenceError,create,freeze,getOwnPropertyDescriptors,globalThis,immutableObject,assert;$h‍_imports([["./commons.js",[["Proxy",[$h‍_a=>Proxy=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["immutableObject",[$h‍_a=>immutableObject=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,alwaysThrowHandler=new Proxy(immutableObject,freeze({get(_shadow,prop){Fail`Please report unexpected scope handler trap: ${q(String(prop))}`}}));$h‍_once.alwaysThrowHandler(alwaysThrowHandler);const strictScopeTerminatorHandler=freeze(create(alwaysThrowHandler,getOwnPropertyDescriptors({get(_shadow,_prop){},set(_shadow,prop,_value){throw new ReferenceError(`${String(prop)} is not defined`)},has:(_shadow,prop)=>prop in globalThis,getPrototypeOf:()=>null,getOwnPropertyDescriptor(_target,prop){const quotedProp=q(String(prop));console.warn(`getOwnPropertyDescriptor trap on scopeTerminatorHandler for ${quotedProp}`,(new TypeError).stack)}})));$h‍_once.strictScopeTerminatorHandler(strictScopeTerminatorHandler);const strictScopeTerminator=new Proxy(immutableObject,strictScopeTerminatorHandler);$h‍_once.strictScopeTerminator(strictScopeTerminator)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Proxy,create,freeze,getOwnPropertyDescriptors,immutableObject,reflectSet,strictScopeTerminatorHandler,alwaysThrowHandler;$h‍_imports([["./commons.js",[["Proxy",[$h‍_a=>Proxy=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["immutableObject",[$h‍_a=>immutableObject=$h‍_a]],["reflectSet",[$h‍_a=>reflectSet=$h‍_a]]]],["./strict-scope-terminator.js",[["strictScopeTerminatorHandler",[$h‍_a=>strictScopeTerminatorHandler=$h‍_a]],["alwaysThrowHandler",[$h‍_a=>alwaysThrowHandler=$h‍_a]]]]]);const createSloppyGlobalsScopeTerminator=globalObject=>{const scopeProxyHandlerProperties={...strictScopeTerminatorHandler,set:(_shadow,prop,value)=>reflectSet(globalObject,prop,value),has:(_shadow,_prop)=>!0},sloppyGlobalsScopeTerminatorHandler=freeze(create(alwaysThrowHandler,getOwnPropertyDescriptors(scopeProxyHandlerProperties)));return new Proxy(immutableObject,sloppyGlobalsScopeTerminatorHandler)};$h‍_once.createSloppyGlobalsScopeTerminator(createSloppyGlobalsScopeTerminator),freeze(createSloppyGlobalsScopeTerminator)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_REG_EXP,regexpExec,stringSlice;$h‍_imports([["./commons.js",[["FERAL_REG_EXP",[$h‍_a=>FERAL_REG_EXP=$h‍_a]],["regexpExec",[$h‍_a=>regexpExec=$h‍_a]],["stringSlice",[$h‍_a=>stringSlice=$h‍_a]]]]]);const sourceMetaEntriesRegExp=new FERAL_REG_EXP("(?:\\s*//\\s*[@#]\\s*([a-zA-Z][a-zA-Z0-9]*)\\s*=\\s*([^\\s\\*]*)|/\\*\\s*[@#]\\s*([a-zA-Z][a-zA-Z0-9]*)\\s*=\\s*([^\\s\\*]*)\\s*\\*/)\\s*$");$h‍_once.getSourceURL((src=>{let sourceURL="";for(;src.length>0;){const match=regexpExec(sourceMetaEntriesRegExp,src);if(null===match)break;src=stringSlice(src,0,src.length-match[0].length),"sourceURL"===match[3]?sourceURL=match[4]:"sourceURL"===match[1]&&(sourceURL=match[2])}return sourceURL}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_REG_EXP,SyntaxError,stringReplace,stringSearch,stringSlice,stringSplit,freeze,getSourceURL;function getLineNumber(src,pattern){const index=stringSearch(src,pattern);if(index<0)return-1;const adjustment="\n"===src[index]?1:0;return stringSplit(stringSlice(src,0,index),"\n").length+adjustment}$h‍_imports([["./commons.js",[["FERAL_REG_EXP",[$h‍_a=>FERAL_REG_EXP=$h‍_a]],["SyntaxError",[$h‍_a=>SyntaxError=$h‍_a]],["stringReplace",[$h‍_a=>stringReplace=$h‍_a]],["stringSearch",[$h‍_a=>stringSearch=$h‍_a]],["stringSlice",[$h‍_a=>stringSlice=$h‍_a]],["stringSplit",[$h‍_a=>stringSplit=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./get-source-url.js",[["getSourceURL",[$h‍_a=>getSourceURL=$h‍_a]]]]]);const htmlCommentPattern=new FERAL_REG_EXP("(?:\x3c!--|--\x3e)","g"),rejectHtmlComments=src=>{const lineNumber=getLineNumber(src,htmlCommentPattern);if(lineNumber<0)return src;const name=getSourceURL(src);throw new SyntaxError(`Possible HTML comment rejected at ${name}:${lineNumber}. (SES_HTML_COMMENT_REJECTED)`)};$h‍_once.rejectHtmlComments(rejectHtmlComments);const evadeHtmlCommentTest=src=>stringReplace(src,htmlCommentPattern,(match=>"<"===match[0]?"< ! --":"-- >"));$h‍_once.evadeHtmlCommentTest(evadeHtmlCommentTest);const importPattern=new FERAL_REG_EXP("(^|[^.])\\bimport(\\s*(?:\\(|/[/*]))","g"),rejectImportExpressions=src=>{const lineNumber=getLineNumber(src,importPattern);if(lineNumber<0)return src;const name=getSourceURL(src);throw new SyntaxError(`Possible import expression rejected at ${name}:${lineNumber}. (SES_IMPORT_REJECTED)`)};$h‍_once.rejectImportExpressions(rejectImportExpressions);const evadeImportExpressionTest=src=>stringReplace(src,importPattern,((_,p1,p2)=>`${p1}__import__${p2}`));$h‍_once.evadeImportExpressionTest(evadeImportExpressionTest);const someDirectEvalPattern=new FERAL_REG_EXP("(^|[^.])\\beval(\\s*\\()","g"),rejectSomeDirectEvalExpressions=src=>{const lineNumber=getLineNumber(src,someDirectEvalPattern);if(lineNumber<0)return src;const name=getSourceURL(src);throw new SyntaxError(`Possible direct eval expression rejected at ${name}:${lineNumber}. (SES_EVAL_REJECTED)`)};$h‍_once.rejectSomeDirectEvalExpressions(rejectSomeDirectEvalExpressions);const mandatoryTransforms=source=>(source=rejectHtmlComments(source),source=rejectImportExpressions(source));$h‍_once.mandatoryTransforms(mandatoryTransforms);const applyTransforms=(source,transforms)=>{for(const transform of transforms)source=transform(source);return source};$h‍_once.applyTransforms(applyTransforms);const transforms=freeze({rejectHtmlComments:freeze(rejectHtmlComments),evadeHtmlCommentTest:freeze(evadeHtmlCommentTest),rejectImportExpressions:freeze(rejectImportExpressions),evadeImportExpressionTest:freeze(evadeImportExpressionTest),rejectSomeDirectEvalExpressions:freeze(rejectSomeDirectEvalExpressions),mandatoryTransforms:freeze(mandatoryTransforms),applyTransforms:freeze(applyTransforms)});$h‍_once.transforms(transforms)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let apply,freeze,strictScopeTerminator,createSloppyGlobalsScopeTerminator,makeEvalScopeKit,applyTransforms,mandatoryTransforms,makeEvaluate,assert;$h‍_imports([["./commons.js",[["apply",[$h‍_a=>apply=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./strict-scope-terminator.js",[["strictScopeTerminator",[$h‍_a=>strictScopeTerminator=$h‍_a]]]],["./sloppy-globals-scope-terminator.js",[["createSloppyGlobalsScopeTerminator",[$h‍_a=>createSloppyGlobalsScopeTerminator=$h‍_a]]]],["./eval-scope.js",[["makeEvalScopeKit",[$h‍_a=>makeEvalScopeKit=$h‍_a]]]],["./transforms.js",[["applyTransforms",[$h‍_a=>applyTransforms=$h‍_a]],["mandatoryTransforms",[$h‍_a=>mandatoryTransforms=$h‍_a]]]],["./make-evaluate.js",[["makeEvaluate",[$h‍_a=>makeEvaluate=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail}=assert;$h‍_once.makeSafeEvaluator((({globalObject:globalObject,moduleLexicals:moduleLexicals={},globalTransforms:globalTransforms=[],sloppyGlobalsMode:sloppyGlobalsMode=!1})=>{const scopeTerminator=sloppyGlobalsMode?createSloppyGlobalsScopeTerminator(globalObject):strictScopeTerminator,evalScopeKit=makeEvalScopeKit(),{evalScope:evalScope}=evalScopeKit,evaluateContext=freeze({evalScope:evalScope,moduleLexicals:moduleLexicals,globalObject:globalObject,scopeTerminator:scopeTerminator});let evaluate;return{safeEvaluate:(source,options)=>{const{localTransforms:localTransforms=[]}=options||{};let err;evaluate||(evaluate=makeEvaluate(evaluateContext)),source=applyTransforms(source,[...localTransforms,...globalTransforms,mandatoryTransforms]);try{return evalScopeKit.allowNextEvalToBeUnsafe(),apply(evaluate,globalObject,[source])}catch(e){throw err=e,e}finally{const unsafeEvalWasStillExposed="eval"in evalScope;delete evalScope.eval,unsafeEvalWasStillExposed&&(evalScopeKit.revoked={err:err},Fail`handler did not reset allowNextEvalToBeUnsafe ${err}`)}}}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,arrayPush,create,getOwnPropertyDescriptors,evadeHtmlCommentTest,evadeImportExpressionTest,rejectSomeDirectEvalExpressions,makeSafeEvaluator;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]]]],["./transforms.js",[["evadeHtmlCommentTest",[$h‍_a=>evadeHtmlCommentTest=$h‍_a]],["evadeImportExpressionTest",[$h‍_a=>evadeImportExpressionTest=$h‍_a]],["rejectSomeDirectEvalExpressions",[$h‍_a=>rejectSomeDirectEvalExpressions=$h‍_a]]]],["./make-safe-evaluator.js",[["makeSafeEvaluator",[$h‍_a=>makeSafeEvaluator=$h‍_a]]]]]);const provideCompartmentEvaluator=(compartmentFields,options)=>{const{sloppyGlobalsMode:sloppyGlobalsMode=!1,__moduleShimLexicals__:__moduleShimLexicals__}=options;let safeEvaluate;if(void 0!==__moduleShimLexicals__||sloppyGlobalsMode){let{globalTransforms:globalTransforms}=compartmentFields;const{globalObject:globalObject}=compartmentFields;let moduleLexicals;void 0!==__moduleShimLexicals__&&(globalTransforms=void 0,moduleLexicals=create(null,getOwnPropertyDescriptors(__moduleShimLexicals__))),({safeEvaluate:safeEvaluate}=makeSafeEvaluator({globalObject:globalObject,moduleLexicals:moduleLexicals,globalTransforms:globalTransforms,sloppyGlobalsMode:sloppyGlobalsMode}))}else({safeEvaluate:safeEvaluate}=compartmentFields);return{safeEvaluate:safeEvaluate}};$h‍_once.provideCompartmentEvaluator(provideCompartmentEvaluator);$h‍_once.compartmentEvaluate(((compartmentFields,source,options)=>{if("string"!=typeof source)throw new TypeError("first argument of evaluate() must be a string");const{transforms:transforms=[],__evadeHtmlCommentTest__:__evadeHtmlCommentTest__=!1,__evadeImportExpressionTest__:__evadeImportExpressionTest__=!1,__rejectSomeDirectEvalExpressions__:__rejectSomeDirectEvalExpressions__=!0}=options,localTransforms=[...transforms];!0===__evadeHtmlCommentTest__&&arrayPush(localTransforms,evadeHtmlCommentTest),!0===__evadeImportExpressionTest__&&arrayPush(localTransforms,evadeImportExpressionTest),!0===__rejectSomeDirectEvalExpressions__&&arrayPush(localTransforms,rejectSomeDirectEvalExpressions);const{safeEvaluate:safeEvaluate}=provideCompartmentEvaluator(compartmentFields,options);return safeEvaluate(source,{localTransforms:localTransforms})}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);$h‍_once.makeEvalFunction((safeEvaluate=>source=>"string"!=typeof source?source:safeEvaluate(source)))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,arrayJoin,arrayPop,defineProperties,getPrototypeOf,assert;$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayPop",[$h‍_a=>arrayPop=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail}=assert;$h‍_once.makeFunctionConstructor((safeEvaluate=>{const newFunction=function(_body){const bodyText=`${arrayPop(arguments)||""}`,parameters=`${arrayJoin(arguments,",")}`;new FERAL_FUNCTION(parameters,""),new FERAL_FUNCTION(bodyText);return safeEvaluate(`(function anonymous(${parameters}\n) {\n${bodyText}\n})`)};return defineProperties(newFunction,{prototype:{value:FERAL_FUNCTION.prototype,writable:!1,enumerable:!1,configurable:!1}}),getPrototypeOf(FERAL_FUNCTION)===FERAL_FUNCTION.prototype||Fail`Function prototype is the same accross compartments`,getPrototypeOf(newFunction)===FERAL_FUNCTION.prototype||Fail`Function constructor prototype is the same accross compartments`,newFunction}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);const constantProperties={Infinity:1/0,NaN:NaN,undefined:void 0};$h‍_once.constantProperties(constantProperties);$h‍_once.universalPropertyNames({isFinite:"isFinite",isNaN:"isNaN",parseFloat:"parseFloat",parseInt:"parseInt",decodeURI:"decodeURI",decodeURIComponent:"decodeURIComponent",encodeURI:"encodeURI",encodeURIComponent:"encodeURIComponent",Array:"Array",ArrayBuffer:"ArrayBuffer",BigInt:"BigInt",BigInt64Array:"BigInt64Array",BigUint64Array:"BigUint64Array",Boolean:"Boolean",DataView:"DataView",EvalError:"EvalError",Float32Array:"Float32Array",Float64Array:"Float64Array",Int8Array:"Int8Array",Int16Array:"Int16Array",Int32Array:"Int32Array",Map:"Map",Number:"Number",Object:"Object",Promise:"Promise",Proxy:"Proxy",RangeError:"RangeError",ReferenceError:"ReferenceError",Set:"Set",String:"String",Symbol:"Symbol",SyntaxError:"SyntaxError",TypeError:"TypeError",Uint8Array:"Uint8Array",Uint8ClampedArray:"Uint8ClampedArray",Uint16Array:"Uint16Array",Uint32Array:"Uint32Array",URIError:"URIError",WeakMap:"WeakMap",WeakSet:"WeakSet",JSON:"JSON",Reflect:"Reflect",escape:"escape",unescape:"unescape",lockdown:"lockdown",harden:"harden",HandledPromise:"HandledPromise"});$h‍_once.initialGlobalPropertyNames({Date:"%InitialDate%",Error:"%InitialError%",RegExp:"%InitialRegExp%",Math:"%InitialMath%",getStackString:"%InitialGetStackString%"});$h‍_once.sharedGlobalPropertyNames({Date:"%SharedDate%",Error:"%SharedError%",RegExp:"%SharedRegExp%",Math:"%SharedMath%"});$h‍_once.uniqueGlobalPropertyNames({globalThis:"%UniqueGlobalThis%",eval:"%UniqueEval%",Function:"%UniqueFunction%",Compartment:"%UniqueCompartment%"});const NativeErrors=[EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError];$h‍_once.NativeErrors(NativeErrors);const FunctionInstance={"[[Proto]]":"%FunctionPrototype%",length:"number",name:"string"};$h‍_once.FunctionInstance(FunctionInstance);const fn=FunctionInstance,asyncFn={"[[Proto]]":"%AsyncFunctionPrototype%"},getter={get:fn,set:"undefined"},accessor={get:fn,set:fn};function NativeError(prototype){return{"[[Proto]]":"%SharedError%",prototype:prototype}}function NativeErrorPrototype(constructor){return{"[[Proto]]":"%ErrorPrototype%",constructor:constructor,message:"string",name:"string",toString:!1,cause:!1}}function TypedArray(prototype){return{"[[Proto]]":"%TypedArray%",BYTES_PER_ELEMENT:"number",prototype:prototype}}function TypedArrayPrototype(constructor){return{"[[Proto]]":"%TypedArrayPrototype%",BYTES_PER_ELEMENT:"number",constructor:constructor}}$h‍_once.isAccessorPermit((permit=>permit===getter||permit===accessor));const SharedMath={E:"number",LN10:"number",LN2:"number",LOG10E:"number",LOG2E:"number",PI:"number",SQRT1_2:"number",SQRT2:"number","@@toStringTag":"string",abs:fn,acos:fn,acosh:fn,asin:fn,asinh:fn,atan:fn,atanh:fn,atan2:fn,cbrt:fn,ceil:fn,clz32:fn,cos:fn,cosh:fn,exp:fn,expm1:fn,floor:fn,fround:fn,hypot:fn,imul:fn,log:fn,log1p:fn,log10:fn,log2:fn,max:fn,min:fn,pow:fn,round:fn,sign:fn,sin:fn,sinh:fn,sqrt:fn,tan:fn,tanh:fn,trunc:fn,idiv:!1,idivmod:!1,imod:!1,imuldiv:!1,irem:!1,mod:!1},whitelist={"[[Proto]]":null,"%ThrowTypeError%":fn,Infinity:"number",NaN:"number",undefined:"undefined","%UniqueEval%":fn,isFinite:fn,isNaN:fn,parseFloat:fn,parseInt:fn,decodeURI:fn,decodeURIComponent:fn,encodeURI:fn,encodeURIComponent:fn,Object:{"[[Proto]]":"%FunctionPrototype%",assign:fn,create:fn,defineProperties:fn,defineProperty:fn,entries:fn,freeze:fn,fromEntries:fn,getOwnPropertyDescriptor:fn,getOwnPropertyDescriptors:fn,getOwnPropertyNames:fn,getOwnPropertySymbols:fn,getPrototypeOf:fn,hasOwn:fn,is:fn,isExtensible:fn,isFrozen:fn,isSealed:fn,keys:fn,preventExtensions:fn,prototype:"%ObjectPrototype%",seal:fn,setPrototypeOf:fn,values:fn},"%ObjectPrototype%":{"[[Proto]]":null,constructor:"Object",hasOwnProperty:fn,isPrototypeOf:fn,propertyIsEnumerable:fn,toLocaleString:fn,toString:fn,valueOf:fn,"--proto--":accessor,__defineGetter__:fn,__defineSetter__:fn,__lookupGetter__:fn,__lookupSetter__:fn},"%UniqueFunction%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%FunctionPrototype%"},"%InertFunction%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%FunctionPrototype%"},"%FunctionPrototype%":{apply:fn,bind:fn,call:fn,constructor:"%InertFunction%",toString:fn,"@@hasInstance":fn,caller:!1,arguments:!1},Boolean:{"[[Proto]]":"%FunctionPrototype%",prototype:"%BooleanPrototype%"},"%BooleanPrototype%":{constructor:"Boolean",toString:fn,valueOf:fn},Symbol:{"[[Proto]]":"%FunctionPrototype%",asyncIterator:"symbol",for:fn,hasInstance:"symbol",isConcatSpreadable:"symbol",iterator:"symbol",keyFor:fn,match:"symbol",matchAll:"symbol",prototype:"%SymbolPrototype%",replace:"symbol",search:"symbol",species:"symbol",split:"symbol",toPrimitive:"symbol",toStringTag:"symbol",unscopables:"symbol"},"%SymbolPrototype%":{constructor:"Symbol",description:getter,toString:fn,valueOf:fn,"@@toPrimitive":fn,"@@toStringTag":"string"},"%InitialError%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%ErrorPrototype%",captureStackTrace:fn,stackTraceLimit:accessor,prepareStackTrace:accessor},"%SharedError%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%ErrorPrototype%",captureStackTrace:fn,stackTraceLimit:accessor,prepareStackTrace:accessor},"%ErrorPrototype%":{constructor:"%SharedError%",message:"string",name:"string",toString:fn,at:!1,stack:accessor,cause:!1},EvalError:NativeError("%EvalErrorPrototype%"),RangeError:NativeError("%RangeErrorPrototype%"),ReferenceError:NativeError("%ReferenceErrorPrototype%"),SyntaxError:NativeError("%SyntaxErrorPrototype%"),TypeError:NativeError("%TypeErrorPrototype%"),URIError:NativeError("%URIErrorPrototype%"),"%EvalErrorPrototype%":NativeErrorPrototype("EvalError"),"%RangeErrorPrototype%":NativeErrorPrototype("RangeError"),"%ReferenceErrorPrototype%":NativeErrorPrototype("ReferenceError"),"%SyntaxErrorPrototype%":NativeErrorPrototype("SyntaxError"),"%TypeErrorPrototype%":NativeErrorPrototype("TypeError"),"%URIErrorPrototype%":NativeErrorPrototype("URIError"),Number:{"[[Proto]]":"%FunctionPrototype%",EPSILON:"number",isFinite:fn,isInteger:fn,isNaN:fn,isSafeInteger:fn,MAX_SAFE_INTEGER:"number",MAX_VALUE:"number",MIN_SAFE_INTEGER:"number",MIN_VALUE:"number",NaN:"number",NEGATIVE_INFINITY:"number",parseFloat:fn,parseInt:fn,POSITIVE_INFINITY:"number",prototype:"%NumberPrototype%"},"%NumberPrototype%":{constructor:"Number",toExponential:fn,toFixed:fn,toLocaleString:fn,toPrecision:fn,toString:fn,valueOf:fn},BigInt:{"[[Proto]]":"%FunctionPrototype%",asIntN:fn,asUintN:fn,prototype:"%BigIntPrototype%",bitLength:!1,fromArrayBuffer:!1},"%BigIntPrototype%":{constructor:"BigInt",toLocaleString:fn,toString:fn,valueOf:fn,"@@toStringTag":"string"},"%InitialMath%":{...SharedMath,random:fn},"%SharedMath%":SharedMath,"%InitialDate%":{"[[Proto]]":"%FunctionPrototype%",now:fn,parse:fn,prototype:"%DatePrototype%",UTC:fn},"%SharedDate%":{"[[Proto]]":"%FunctionPrototype%",now:fn,parse:fn,prototype:"%DatePrototype%",UTC:fn},"%DatePrototype%":{constructor:"%SharedDate%",getDate:fn,getDay:fn,getFullYear:fn,getHours:fn,getMilliseconds:fn,getMinutes:fn,getMonth:fn,getSeconds:fn,getTime:fn,getTimezoneOffset:fn,getUTCDate:fn,getUTCDay:fn,getUTCFullYear:fn,getUTCHours:fn,getUTCMilliseconds:fn,getUTCMinutes:fn,getUTCMonth:fn,getUTCSeconds:fn,setDate:fn,setFullYear:fn,setHours:fn,setMilliseconds:fn,setMinutes:fn,setMonth:fn,setSeconds:fn,setTime:fn,setUTCDate:fn,setUTCFullYear:fn,setUTCHours:fn,setUTCMilliseconds:fn,setUTCMinutes:fn,setUTCMonth:fn,setUTCSeconds:fn,toDateString:fn,toISOString:fn,toJSON:fn,toLocaleDateString:fn,toLocaleString:fn,toLocaleTimeString:fn,toString:fn,toTimeString:fn,toUTCString:fn,valueOf:fn,"@@toPrimitive":fn,getYear:fn,setYear:fn,toGMTString:fn},String:{"[[Proto]]":"%FunctionPrototype%",fromCharCode:fn,fromCodePoint:fn,prototype:"%StringPrototype%",raw:fn,fromArrayBuffer:!1},"%StringPrototype%":{length:"number",at:fn,charAt:fn,charCodeAt:fn,codePointAt:fn,concat:fn,constructor:"String",endsWith:fn,includes:fn,indexOf:fn,lastIndexOf:fn,localeCompare:fn,match:fn,matchAll:fn,normalize:fn,padEnd:fn,padStart:fn,repeat:fn,replace:fn,replaceAll:fn,search:fn,slice:fn,split:fn,startsWith:fn,substring:fn,toLocaleLowerCase:fn,toLocaleUpperCase:fn,toLowerCase:fn,toString:fn,toUpperCase:fn,trim:fn,trimEnd:fn,trimStart:fn,valueOf:fn,"@@iterator":fn,substr:fn,anchor:fn,big:fn,blink:fn,bold:fn,fixed:fn,fontcolor:fn,fontsize:fn,italics:fn,link:fn,small:fn,strike:fn,sub:fn,sup:fn,trimLeft:fn,trimRight:fn,compare:!1},"%StringIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},"%InitialRegExp%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%RegExpPrototype%","@@species":getter,input:!1,$_:!1,lastMatch:!1,"$&":!1,lastParen:!1,"$+":!1,leftContext:!1,"$`":!1,rightContext:!1,"$'":!1,$1:!1,$2:!1,$3:!1,$4:!1,$5:!1,$6:!1,$7:!1,$8:!1,$9:!1},"%SharedRegExp%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%RegExpPrototype%","@@species":getter},"%RegExpPrototype%":{constructor:"%SharedRegExp%",exec:fn,dotAll:getter,flags:getter,global:getter,ignoreCase:getter,"@@match":fn,"@@matchAll":fn,multiline:getter,"@@replace":fn,"@@search":fn,source:getter,"@@split":fn,sticky:getter,test:fn,toString:fn,unicode:getter,compile:!1,hasIndices:!1},"%RegExpStringIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},Array:{"[[Proto]]":"%FunctionPrototype%",from:fn,isArray:fn,of:fn,prototype:"%ArrayPrototype%","@@species":getter,at:fn},"%ArrayPrototype%":{at:fn,length:"number",concat:fn,constructor:"Array",copyWithin:fn,entries:fn,every:fn,fill:fn,filter:fn,find:fn,findIndex:fn,flat:fn,flatMap:fn,forEach:fn,includes:fn,indexOf:fn,join:fn,keys:fn,lastIndexOf:fn,map:fn,pop:fn,push:fn,reduce:fn,reduceRight:fn,reverse:fn,shift:fn,slice:fn,some:fn,sort:fn,splice:fn,toLocaleString:fn,toString:fn,unshift:fn,values:fn,"@@iterator":fn,"@@unscopables":{"[[Proto]]":null,copyWithin:"boolean",entries:"boolean",fill:"boolean",find:"boolean",findIndex:"boolean",flat:"boolean",flatMap:"boolean",includes:"boolean",keys:"boolean",values:"boolean",at:!1,findLast:"boolean",findLastIndex:"boolean"},findLast:fn,findLastIndex:fn},"%ArrayIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},"%TypedArray%":{"[[Proto]]":"%FunctionPrototype%",from:fn,of:fn,prototype:"%TypedArrayPrototype%","@@species":getter},"%TypedArrayPrototype%":{at:fn,buffer:getter,byteLength:getter,byteOffset:getter,constructor:"%TypedArray%",copyWithin:fn,entries:fn,every:fn,fill:fn,filter:fn,find:fn,findIndex:fn,forEach:fn,includes:fn,indexOf:fn,join:fn,keys:fn,lastIndexOf:fn,length:getter,map:fn,reduce:fn,reduceRight:fn,reverse:fn,set:fn,slice:fn,some:fn,sort:fn,subarray:fn,toLocaleString:fn,toString:fn,values:fn,"@@iterator":fn,"@@toStringTag":getter,findLast:fn,findLastIndex:fn},BigInt64Array:TypedArray("%BigInt64ArrayPrototype%"),BigUint64Array:TypedArray("%BigUint64ArrayPrototype%"),Float32Array:TypedArray("%Float32ArrayPrototype%"),Float64Array:TypedArray("%Float64ArrayPrototype%"),Int16Array:TypedArray("%Int16ArrayPrototype%"),Int32Array:TypedArray("%Int32ArrayPrototype%"),Int8Array:TypedArray("%Int8ArrayPrototype%"),Uint16Array:TypedArray("%Uint16ArrayPrototype%"),Uint32Array:TypedArray("%Uint32ArrayPrototype%"),Uint8Array:TypedArray("%Uint8ArrayPrototype%"),Uint8ClampedArray:TypedArray("%Uint8ClampedArrayPrototype%"),"%BigInt64ArrayPrototype%":TypedArrayPrototype("BigInt64Array"),"%BigUint64ArrayPrototype%":TypedArrayPrototype("BigUint64Array"),"%Float32ArrayPrototype%":TypedArrayPrototype("Float32Array"),"%Float64ArrayPrototype%":TypedArrayPrototype("Float64Array"),"%Int16ArrayPrototype%":TypedArrayPrototype("Int16Array"),"%Int32ArrayPrototype%":TypedArrayPrototype("Int32Array"),"%Int8ArrayPrototype%":TypedArrayPrototype("Int8Array"),"%Uint16ArrayPrototype%":TypedArrayPrototype("Uint16Array"),"%Uint32ArrayPrototype%":TypedArrayPrototype("Uint32Array"),"%Uint8ArrayPrototype%":TypedArrayPrototype("Uint8Array"),"%Uint8ClampedArrayPrototype%":TypedArrayPrototype("Uint8ClampedArray"),Map:{"[[Proto]]":"%FunctionPrototype%","@@species":getter,prototype:"%MapPrototype%"},"%MapPrototype%":{clear:fn,constructor:"Map",delete:fn,entries:fn,forEach:fn,get:fn,has:fn,keys:fn,set:fn,size:getter,values:fn,"@@iterator":fn,"@@toStringTag":"string"},"%MapIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},Set:{"[[Proto]]":"%FunctionPrototype%",prototype:"%SetPrototype%","@@species":getter},"%SetPrototype%":{add:fn,clear:fn,constructor:"Set",delete:fn,entries:fn,forEach:fn,has:fn,keys:fn,size:getter,values:fn,"@@iterator":fn,"@@toStringTag":"string"},"%SetIteratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",next:fn,"@@toStringTag":"string"},WeakMap:{"[[Proto]]":"%FunctionPrototype%",prototype:"%WeakMapPrototype%"},"%WeakMapPrototype%":{constructor:"WeakMap",delete:fn,get:fn,has:fn,set:fn,"@@toStringTag":"string"},WeakSet:{"[[Proto]]":"%FunctionPrototype%",prototype:"%WeakSetPrototype%"},"%WeakSetPrototype%":{add:fn,constructor:"WeakSet",delete:fn,has:fn,"@@toStringTag":"string"},ArrayBuffer:{"[[Proto]]":"%FunctionPrototype%",isView:fn,prototype:"%ArrayBufferPrototype%","@@species":getter,fromString:!1,fromBigInt:!1},"%ArrayBufferPrototype%":{byteLength:getter,constructor:"ArrayBuffer",slice:fn,"@@toStringTag":"string",concat:!1,transfer:fn,resize:fn,resizable:getter,maxByteLength:getter},SharedArrayBuffer:!1,"%SharedArrayBufferPrototype%":!1,DataView:{"[[Proto]]":"%FunctionPrototype%",BYTES_PER_ELEMENT:"number",prototype:"%DataViewPrototype%"},"%DataViewPrototype%":{buffer:getter,byteLength:getter,byteOffset:getter,constructor:"DataView",getBigInt64:fn,getBigUint64:fn,getFloat32:fn,getFloat64:fn,getInt8:fn,getInt16:fn,getInt32:fn,getUint8:fn,getUint16:fn,getUint32:fn,setBigInt64:fn,setBigUint64:fn,setFloat32:fn,setFloat64:fn,setInt8:fn,setInt16:fn,setInt32:fn,setUint8:fn,setUint16:fn,setUint32:fn,"@@toStringTag":"string"},Atomics:!1,JSON:{parse:fn,stringify:fn,"@@toStringTag":"string"},"%IteratorPrototype%":{"@@iterator":fn},"%AsyncIteratorPrototype%":{"@@asyncIterator":fn},"%InertGeneratorFunction%":{"[[Proto]]":"%InertFunction%",prototype:"%Generator%"},"%Generator%":{"[[Proto]]":"%FunctionPrototype%",constructor:"%InertGeneratorFunction%",prototype:"%GeneratorPrototype%","@@toStringTag":"string"},"%InertAsyncGeneratorFunction%":{"[[Proto]]":"%InertFunction%",prototype:"%AsyncGenerator%"},"%AsyncGenerator%":{"[[Proto]]":"%FunctionPrototype%",constructor:"%InertAsyncGeneratorFunction%",prototype:"%AsyncGeneratorPrototype%",length:"number","@@toStringTag":"string"},"%GeneratorPrototype%":{"[[Proto]]":"%IteratorPrototype%",constructor:"%Generator%",next:fn,return:fn,throw:fn,"@@toStringTag":"string"},"%AsyncGeneratorPrototype%":{"[[Proto]]":"%AsyncIteratorPrototype%",constructor:"%AsyncGenerator%",next:fn,return:fn,throw:fn,"@@toStringTag":"string"},HandledPromise:{"[[Proto]]":"Promise",applyFunction:fn,applyFunctionSendOnly:fn,applyMethod:fn,applyMethodSendOnly:fn,get:fn,getSendOnly:fn,prototype:"%PromisePrototype%",resolve:fn},Promise:{"[[Proto]]":"%FunctionPrototype%",all:fn,allSettled:fn,any:!1,prototype:"%PromisePrototype%",race:fn,reject:fn,resolve:fn,"@@species":getter},"%PromisePrototype%":{catch:fn,constructor:"Promise",finally:fn,then:fn,"@@toStringTag":"string","UniqueSymbol(async_id_symbol)":accessor,"UniqueSymbol(trigger_async_id_symbol)":accessor,"UniqueSymbol(destroyed)":accessor},"%InertAsyncFunction%":{"[[Proto]]":"%InertFunction%",prototype:"%AsyncFunctionPrototype%"},"%AsyncFunctionPrototype%":{"[[Proto]]":"%FunctionPrototype%",constructor:"%InertAsyncFunction%",length:"number","@@toStringTag":"string"},Reflect:{apply:fn,construct:fn,defineProperty:fn,deleteProperty:fn,get:fn,getOwnPropertyDescriptor:fn,getPrototypeOf:fn,has:fn,isExtensible:fn,ownKeys:fn,preventExtensions:fn,set:fn,setPrototypeOf:fn,"@@toStringTag":"string"},Proxy:{"[[Proto]]":"%FunctionPrototype%",revocable:fn},escape:fn,unescape:fn,"%UniqueCompartment%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%CompartmentPrototype%",toString:fn},"%InertCompartment%":{"[[Proto]]":"%FunctionPrototype%",prototype:"%CompartmentPrototype%",toString:fn},"%CompartmentPrototype%":{constructor:"%InertCompartment%",evaluate:fn,globalThis:getter,name:getter,toString:fn,import:asyncFn,load:asyncFn,importNow:fn,module:fn},lockdown:fn,harden:{...fn,isFake:"boolean"},"%InitialGetStackString%":fn};$h‍_once.whitelist(whitelist)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,assign,create,defineProperty,entries,freeze,objectHasOwnProperty,unscopablesSymbol,makeEvalFunction,makeFunctionConstructor,constantProperties,universalPropertyNames;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["unscopablesSymbol",[$h‍_a=>unscopablesSymbol=$h‍_a]]]],["./make-eval-function.js",[["makeEvalFunction",[$h‍_a=>makeEvalFunction=$h‍_a]]]],["./make-function-constructor.js",[["makeFunctionConstructor",[$h‍_a=>makeFunctionConstructor=$h‍_a]]]],["./whitelist.js",[["constantProperties",[$h‍_a=>constantProperties=$h‍_a]],["universalPropertyNames",[$h‍_a=>universalPropertyNames=$h‍_a]]]]]);$h‍_once.setGlobalObjectSymbolUnscopables((globalObject=>{defineProperty(globalObject,unscopablesSymbol,freeze(assign(create(null),{set:freeze((()=>{throw new TypeError("Cannot set Symbol.unscopables of a Compartment's globalThis")})),enumerable:!1,configurable:!1})))}));$h‍_once.setGlobalObjectConstantProperties((globalObject=>{for(const[name,constant]of entries(constantProperties))defineProperty(globalObject,name,{value:constant,writable:!1,enumerable:!1,configurable:!1})}));$h‍_once.setGlobalObjectMutableProperties(((globalObject,{intrinsics:intrinsics,newGlobalPropertyNames:newGlobalPropertyNames,makeCompartmentConstructor:makeCompartmentConstructor,markVirtualizedNativeFunction:markVirtualizedNativeFunction})=>{for(const[name,intrinsicName]of entries(universalPropertyNames))objectHasOwnProperty(intrinsics,intrinsicName)&&defineProperty(globalObject,name,{value:intrinsics[intrinsicName],writable:!0,enumerable:!1,configurable:!0});for(const[name,intrinsicName]of entries(newGlobalPropertyNames))objectHasOwnProperty(intrinsics,intrinsicName)&&defineProperty(globalObject,name,{value:intrinsics[intrinsicName],writable:!0,enumerable:!1,configurable:!0});const perCompartmentGlobals={globalThis:globalObject};perCompartmentGlobals.Compartment=makeCompartmentConstructor(makeCompartmentConstructor,intrinsics,markVirtualizedNativeFunction);for(const[name,value]of entries(perCompartmentGlobals))defineProperty(globalObject,name,{value:value,writable:!0,enumerable:!1,configurable:!0}),"function"==typeof value&&markVirtualizedNativeFunction(value)}));$h‍_once.setGlobalObjectEvaluators(((globalObject,evaluator,markVirtualizedNativeFunction)=>{{const f=makeEvalFunction(evaluator);markVirtualizedNativeFunction(f),defineProperty(globalObject,"eval",{value:f,writable:!0,enumerable:!1,configurable:!0})}{const f=makeFunctionConstructor(evaluator);markVirtualizedNativeFunction(f),defineProperty(globalObject,"Function",{value:f,writable:!0,enumerable:!1,configurable:!0})}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let ReferenceError,TypeError,Map,Set,arrayJoin,arrayMap,arrayPush,create,freeze,mapGet,mapHas,mapSet,setAdd,promiseCatch,promiseThen,values,weakmapGet,assert;$h‍_imports([["./commons.js",[["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["Map",[$h‍_a=>Map=$h‍_a]],["Set",[$h‍_a=>Set=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["setAdd",[$h‍_a=>setAdd=$h‍_a]],["promiseCatch",[$h‍_a=>promiseCatch=$h‍_a]],["promiseThen",[$h‍_a=>promiseThen=$h‍_a]],["values",[$h‍_a=>values=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,details:d,quote:q}=assert,noop=()=>{};$h‍_once.makeAlias(((compartment,specifier)=>freeze({compartment:compartment,specifier:specifier})));const loadRecord=(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,staticModuleRecord,pendingJobs,moduleLoads,errors,importMeta)=>{const{resolveHook:resolveHook,moduleRecords:moduleRecords}=weakmapGet(compartmentPrivateFields,compartment),resolvedImports=((imports,resolveHook,fullReferrerSpecifier)=>{const resolvedImports=create(null);for(const importSpecifier of imports){const fullSpecifier=resolveHook(importSpecifier,fullReferrerSpecifier);resolvedImports[importSpecifier]=fullSpecifier}return freeze(resolvedImports)})(staticModuleRecord.imports,resolveHook,moduleSpecifier),moduleRecord=freeze({compartment:compartment,staticModuleRecord:staticModuleRecord,moduleSpecifier:moduleSpecifier,resolvedImports:resolvedImports,importMeta:importMeta});for(const fullSpecifier of values(resolvedImports)){const dependencyLoaded=memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,compartment,fullSpecifier,pendingJobs,moduleLoads,errors);setAdd(pendingJobs,promiseThen(dependencyLoaded,noop,(error=>{arrayPush(errors,error)})))}return mapSet(moduleRecords,moduleSpecifier,moduleRecord),moduleRecord},memoizedLoadWithErrorAnnotation=async(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors)=>{const{name:compartmentName}=weakmapGet(compartmentPrivateFields,compartment);let compartmentLoading=mapGet(moduleLoads,compartment);void 0===compartmentLoading&&(compartmentLoading=new Map,mapSet(moduleLoads,compartment,compartmentLoading));let moduleLoading=mapGet(compartmentLoading,moduleSpecifier);return void 0!==moduleLoading||(moduleLoading=promiseCatch((async(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors)=>{const{importHook:importHook,moduleMap:moduleMap,moduleMapHook:moduleMapHook,moduleRecords:moduleRecords}=weakmapGet(compartmentPrivateFields,compartment);let aliasNamespace=moduleMap[moduleSpecifier];if(void 0===aliasNamespace&&void 0!==moduleMapHook&&(aliasNamespace=moduleMapHook(moduleSpecifier)),"string"==typeof aliasNamespace)assert.fail(d`Cannot map module ${q(moduleSpecifier)} to ${q(aliasNamespace)} in parent compartment, not yet implemented`,TypeError);else if(void 0!==aliasNamespace){const alias=weakmapGet(moduleAliases,aliasNamespace);void 0===alias&&assert.fail(d`Cannot map module ${q(moduleSpecifier)} because the value is not a module exports namespace, or is from another realm`,ReferenceError);const aliasRecord=await memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,alias.compartment,alias.specifier,pendingJobs,moduleLoads,errors);return mapSet(moduleRecords,moduleSpecifier,aliasRecord),aliasRecord}if(mapHas(moduleRecords,moduleSpecifier))return mapGet(moduleRecords,moduleSpecifier);const staticModuleRecord=await importHook(moduleSpecifier);if(null!==staticModuleRecord&&"object"==typeof staticModuleRecord||Fail`importHook must return a promise for an object, for module ${q(moduleSpecifier)} in compartment ${q(compartment.name)}`,void 0!==staticModuleRecord.specifier){if(void 0!==staticModuleRecord.record){if(void 0!==staticModuleRecord.compartment)throw new TypeError("Cannot redirect to an explicit record with a specified compartment");const{compartment:aliasCompartment=compartment,specifier:aliasSpecifier=moduleSpecifier,record:aliasModuleRecord,importMeta:importMeta}=staticModuleRecord,aliasRecord=loadRecord(compartmentPrivateFields,moduleAliases,aliasCompartment,aliasSpecifier,aliasModuleRecord,pendingJobs,moduleLoads,errors,importMeta);return mapSet(moduleRecords,moduleSpecifier,aliasRecord),aliasRecord}if(void 0!==staticModuleRecord.compartment){if(void 0!==staticModuleRecord.importMeta)throw new TypeError("Cannot redirect to an implicit record with a specified importMeta");const aliasRecord=await memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,staticModuleRecord.compartment,staticModuleRecord.specifier,pendingJobs,moduleLoads,errors);return mapSet(moduleRecords,moduleSpecifier,aliasRecord),aliasRecord}throw new TypeError("Unnexpected RedirectStaticModuleInterface record shape")}return loadRecord(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,staticModuleRecord,pendingJobs,moduleLoads,errors)})(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors),(error=>{throw assert.note(error,d`${error.message}, loading ${q(moduleSpecifier)} in compartment ${q(compartmentName)}`),error})),mapSet(compartmentLoading,moduleSpecifier,moduleLoading)),moduleLoading};$h‍_once.load((async(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier)=>{const{name:compartmentName}=weakmapGet(compartmentPrivateFields,compartment),pendingJobs=new Set,moduleLoads=new Map,errors=[],dependencyLoaded=memoizedLoadWithErrorAnnotation(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier,pendingJobs,moduleLoads,errors);setAdd(pendingJobs,promiseThen(dependencyLoaded,noop,(error=>{arrayPush(errors,error)})));for(const job of pendingJobs)await job;if(errors.length>0)throw new TypeError(`Failed to load module ${q(moduleSpecifier)} in package ${q(compartmentName)} (${errors.length} underlying failures: ${arrayJoin(arrayMap(errors,(error=>error.message)),", ")}`)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let makeAlias,Proxy,TypeError,create,freeze,mapGet,mapHas,mapSet,ownKeys,reflectGet,reflectGetOwnPropertyDescriptor,reflectHas,reflectIsExtensible,reflectPreventExtensions,weakmapSet,assert;$h‍_imports([["./module-load.js",[["makeAlias",[$h‍_a=>makeAlias=$h‍_a]]]],["./commons.js",[["Proxy",[$h‍_a=>Proxy=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["reflectGet",[$h‍_a=>reflectGet=$h‍_a]],["reflectGetOwnPropertyDescriptor",[$h‍_a=>reflectGetOwnPropertyDescriptor=$h‍_a]],["reflectHas",[$h‍_a=>reflectHas=$h‍_a]],["reflectIsExtensible",[$h‍_a=>reflectIsExtensible=$h‍_a]],["reflectPreventExtensions",[$h‍_a=>reflectPreventExtensions=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{quote:q}=assert,deferExports=()=>{let active=!1;const proxiedExports=create(null);return freeze({activate(){active=!0},proxiedExports:proxiedExports,exportsProxy:new Proxy(proxiedExports,{get(_target,name,receiver){if(!active)throw new TypeError(`Cannot get property ${q(name)} of module exports namespace, the module has not yet begun to execute`);return reflectGet(proxiedExports,name,receiver)},set(_target,name,_value){throw new TypeError(`Cannot set property ${q(name)} of module exports namespace`)},has(_target,name){if(!active)throw new TypeError(`Cannot check property ${q(name)}, the module has not yet begun to execute`);return reflectHas(proxiedExports,name)},deleteProperty(_target,name){throw new TypeError(`Cannot delete property ${q(name)}s of module exports namespace`)},ownKeys(_target){if(!active)throw new TypeError("Cannot enumerate keys, the module has not yet begun to execute");return ownKeys(proxiedExports)},getOwnPropertyDescriptor(_target,name){if(!active)throw new TypeError(`Cannot get own property descriptor ${q(name)}, the module has not yet begun to execute`);return reflectGetOwnPropertyDescriptor(proxiedExports,name)},preventExtensions(_target){if(!active)throw new TypeError("Cannot prevent extensions of module exports namespace, the module has not yet begun to execute");return reflectPreventExtensions(proxiedExports)},isExtensible(){if(!active)throw new TypeError("Cannot check extensibility of module exports namespace, the module has not yet begun to execute");return reflectIsExtensible(proxiedExports)},getPrototypeOf:_target=>null,setPrototypeOf(_target,_proto){throw new TypeError("Cannot set prototype of module exports namespace")},defineProperty(_target,name,_descriptor){throw new TypeError(`Cannot define property ${q(name)} of module exports namespace`)},apply(_target,_thisArg,_args){throw new TypeError("Cannot call module exports namespace, it is not a function")},construct(_target,_args){throw new TypeError("Cannot construct module exports namespace, it is not a constructor")}})})};$h‍_once.deferExports(deferExports);$h‍_once.getDeferredExports(((compartment,compartmentPrivateFields,moduleAliases,specifier)=>{const{deferredExports:deferredExports}=compartmentPrivateFields;if(!mapHas(deferredExports,specifier)){const deferred=deferExports();weakmapSet(moduleAliases,deferred.exportsProxy,makeAlias(compartment,specifier)),mapSet(deferredExports,specifier,deferred)}return mapGet(deferredExports,specifier)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let assert,getDeferredExports,ReferenceError,SyntaxError,TypeError,arrayForEach,arrayIncludes,arrayPush,arraySome,arraySort,create,defineProperty,entries,freeze,isArray,keys,mapGet,weakmapGet,reflectHas,assign,compartmentEvaluate;$h‍_imports([["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]],["./module-proxy.js",[["getDeferredExports",[$h‍_a=>getDeferredExports=$h‍_a]]]],["./commons.js",[["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["SyntaxError",[$h‍_a=>SyntaxError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayForEach",[$h‍_a=>arrayForEach=$h‍_a]],["arrayIncludes",[$h‍_a=>arrayIncludes=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["arraySome",[$h‍_a=>arraySome=$h‍_a]],["arraySort",[$h‍_a=>arraySort=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["isArray",[$h‍_a=>isArray=$h‍_a]],["keys",[$h‍_a=>keys=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["reflectHas",[$h‍_a=>reflectHas=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]]]],["./compartment-evaluate.js",[["compartmentEvaluate",[$h‍_a=>compartmentEvaluate=$h‍_a]]]]]);const{quote:q}=assert;$h‍_once.makeThirdPartyModuleInstance(((compartmentPrivateFields,staticModuleRecord,compartment,moduleAliases,moduleSpecifier,resolvedImports)=>{const{exportsProxy:exportsProxy,proxiedExports:proxiedExports,activate:activate}=getDeferredExports(compartment,weakmapGet(compartmentPrivateFields,compartment),moduleAliases,moduleSpecifier),notifiers=create(null);if(staticModuleRecord.exports){if(!isArray(staticModuleRecord.exports)||arraySome(staticModuleRecord.exports,(name=>"string"!=typeof name)))throw new TypeError(`SES third-party static module record "exports" property must be an array of strings for module ${moduleSpecifier}`);arrayForEach(staticModuleRecord.exports,(name=>{let value=proxiedExports[name];const updaters=[];defineProperty(proxiedExports,name,{get:()=>value,set:newValue=>{value=newValue;for(const updater of updaters)updater(newValue)},enumerable:!0,configurable:!1}),notifiers[name]=update=>{arrayPush(updaters,update),update(value)}})),notifiers["*"]=update=>{update(proxiedExports)}}const localState={activated:!1};return freeze({notifiers:notifiers,exportsProxy:exportsProxy,execute(){if(reflectHas(localState,"errorFromExecute"))throw localState.errorFromExecute;if(!localState.activated){activate(),localState.activated=!0;try{staticModuleRecord.execute(proxiedExports,compartment,resolvedImports)}catch(err){throw localState.errorFromExecute=err,err}}}})}));$h‍_once.makeModuleInstance(((privateFields,moduleAliases,moduleRecord,importedInstances)=>{const{compartment:compartment,moduleSpecifier:moduleSpecifier,staticModuleRecord:staticModuleRecord,importMeta:moduleRecordMeta}=moduleRecord,{reexports:exportAlls=[],__syncModuleProgram__:functorSource,__fixedExportMap__:fixedExportMap={},__liveExportMap__:liveExportMap={},__reexportMap__:reexportMap={},__needsImportMeta__:needsImportMeta=!1,__syncModuleFunctor__:__syncModuleFunctor__}=staticModuleRecord,compartmentFields=weakmapGet(privateFields,compartment),{__shimTransforms__:__shimTransforms__,importMetaHook:importMetaHook}=compartmentFields,{exportsProxy:exportsProxy,proxiedExports:proxiedExports,activate:activate}=getDeferredExports(compartment,compartmentFields,moduleAliases,moduleSpecifier),exportsProps=create(null),moduleLexicals=create(null),onceVar=create(null),liveVar=create(null),importMeta=create(null);moduleRecordMeta&&assign(importMeta,moduleRecordMeta),needsImportMeta&&importMetaHook&&importMetaHook(moduleSpecifier,importMeta);const localGetNotify=create(null),notifiers=create(null);arrayForEach(entries(fixedExportMap),(([fixedExportName,[localName]])=>{let fixedGetNotify=localGetNotify[localName];if(!fixedGetNotify){let value,tdz=!0,optUpdaters=[];const get=()=>{if(tdz)throw new ReferenceError(`binding ${q(localName)} not yet initialized`);return value},init=freeze((initValue=>{if(!tdz)throw new TypeError(`Internal: binding ${q(localName)} already initialized`);value=initValue;const updaters=optUpdaters;optUpdaters=null,tdz=!1;for(const updater of updaters||[])updater(initValue);return initValue}));fixedGetNotify={get:get,notify:updater=>{updater!==init&&(tdz?arrayPush(optUpdaters||[],updater):updater(value))}},localGetNotify[localName]=fixedGetNotify,onceVar[localName]=init}exportsProps[fixedExportName]={get:fixedGetNotify.get,set:void 0,enumerable:!0,configurable:!1},notifiers[fixedExportName]=fixedGetNotify.notify})),arrayForEach(entries(liveExportMap),(([liveExportName,[localName,setProxyTrap]])=>{let liveGetNotify=localGetNotify[localName];if(!liveGetNotify){let value,tdz=!0;const updaters=[],get=()=>{if(tdz)throw new ReferenceError(`binding ${q(liveExportName)} not yet initialized`);return value},update=freeze((newValue=>{value=newValue,tdz=!1;for(const updater of updaters)updater(newValue)})),set=newValue=>{if(tdz)throw new ReferenceError(`binding ${q(localName)} not yet initialized`);value=newValue;for(const updater of updaters)updater(newValue)};liveGetNotify={get:get,notify:updater=>{updater!==update&&(arrayPush(updaters,updater),tdz||updater(value))}},localGetNotify[localName]=liveGetNotify,setProxyTrap&&defineProperty(moduleLexicals,localName,{get:get,set:set,enumerable:!0,configurable:!1}),liveVar[localName]=update}exportsProps[liveExportName]={get:liveGetNotify.get,set:void 0,enumerable:!0,configurable:!1},notifiers[liveExportName]=liveGetNotify.notify}));function imports(updateRecord){const candidateAll=create(null);candidateAll.default=!1;for(const[specifier,importUpdaters]of updateRecord){const instance=mapGet(importedInstances,specifier);instance.execute();const{notifiers:importNotifiers}=instance;for(const[importName,updaters]of importUpdaters){const importNotify=importNotifiers[importName];if(!importNotify)throw SyntaxError(`The requested module '${specifier}' does not provide an export named '${importName}'`);for(const updater of updaters)importNotify(updater)}if(arrayIncludes(exportAlls,specifier))for(const[importAndExportName,importNotify]of entries(importNotifiers))void 0===candidateAll[importAndExportName]?candidateAll[importAndExportName]=importNotify:candidateAll[importAndExportName]=!1;if(reexportMap[specifier])for(const[localName,exportedName]of reexportMap[specifier])candidateAll[exportedName]=importNotifiers[localName]}for(const[exportName,notify]of entries(candidateAll))if(!notifiers[exportName]&&!1!==notify){let value;notifiers[exportName]=notify;notify((newValue=>value=newValue)),exportsProps[exportName]={get:()=>value,set:void 0,enumerable:!0,configurable:!1}}arrayForEach(arraySort(keys(exportsProps)),(k=>defineProperty(proxiedExports,k,exportsProps[k]))),freeze(proxiedExports),activate()}let optFunctor;notifiers["*"]=update=>{update(proxiedExports)},optFunctor=void 0!==__syncModuleFunctor__?__syncModuleFunctor__:compartmentEvaluate(compartmentFields,functorSource,{globalObject:compartment.globalThis,transforms:__shimTransforms__,__moduleShimLexicals__:moduleLexicals});let thrownError,didThrow=!1;return freeze({notifiers:notifiers,exportsProxy:exportsProxy,execute:function(){if(optFunctor){const functor=optFunctor;optFunctor=null;try{functor(freeze({imports:freeze(imports),onceVar:freeze(onceVar),liveVar:freeze(liveVar),importMeta:importMeta}))}catch(e){didThrow=!0,thrownError=e}}if(didThrow)throw thrownError}})}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let assert,makeModuleInstance,makeThirdPartyModuleInstance,Map,ReferenceError,TypeError,entries,isArray,isObject,mapGet,mapHas,mapSet,weakmapGet;$h‍_imports([["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]],["./module-instance.js",[["makeModuleInstance",[$h‍_a=>makeModuleInstance=$h‍_a]],["makeThirdPartyModuleInstance",[$h‍_a=>makeThirdPartyModuleInstance=$h‍_a]]]],["./commons.js",[["Map",[$h‍_a=>Map=$h‍_a]],["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["isArray",[$h‍_a=>isArray=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,link=(compartmentPrivateFields,moduleAliases,compartment,moduleSpecifier)=>{const{name:compartmentName,moduleRecords:moduleRecords}=weakmapGet(compartmentPrivateFields,compartment),moduleRecord=mapGet(moduleRecords,moduleSpecifier);if(void 0===moduleRecord)throw new ReferenceError(`Missing link to module ${q(moduleSpecifier)} from compartment ${q(compartmentName)}`);return instantiate(compartmentPrivateFields,moduleAliases,moduleRecord)};$h‍_once.link(link);const instantiate=(compartmentPrivateFields,moduleAliases,moduleRecord)=>{const{compartment:compartment,moduleSpecifier:moduleSpecifier,resolvedImports:resolvedImports,staticModuleRecord:staticModuleRecord}=moduleRecord,{instances:instances}=weakmapGet(compartmentPrivateFields,compartment);if(mapHas(instances,moduleSpecifier))return mapGet(instances,moduleSpecifier);!function(staticModuleRecord,moduleSpecifier){isObject(staticModuleRecord)||Fail`Static module records must be of type object, got ${q(staticModuleRecord)}, for module ${q(moduleSpecifier)}`;const{imports:imports,exports:exports,reexports:reexports=[]}=staticModuleRecord;isArray(imports)||Fail`Property 'imports' of a static module record must be an array, got ${q(imports)}, for module ${q(moduleSpecifier)}`,isArray(exports)||Fail`Property 'exports' of a precompiled module record must be an array, got ${q(exports)}, for module ${q(moduleSpecifier)}`,isArray(reexports)||Fail`Property 'reexports' of a precompiled module record must be an array if present, got ${q(reexports)}, for module ${q(moduleSpecifier)}`}(staticModuleRecord,moduleSpecifier);const importedInstances=new Map;let moduleInstance;if(function(staticModuleRecord){return"string"==typeof staticModuleRecord.__syncModuleProgram__}(staticModuleRecord))!function(staticModuleRecord,moduleSpecifier){const{__fixedExportMap__:__fixedExportMap__,__liveExportMap__:__liveExportMap__}=staticModuleRecord;isObject(__fixedExportMap__)||Fail`Property '__fixedExportMap__' of a precompiled module record must be an object, got ${q(__fixedExportMap__)}, for module ${q(moduleSpecifier)}`,isObject(__liveExportMap__)||Fail`Property '__liveExportMap__' of a precompiled module record must be an object, got ${q(__liveExportMap__)}, for module ${q(moduleSpecifier)}`}(staticModuleRecord,moduleSpecifier),moduleInstance=makeModuleInstance(compartmentPrivateFields,moduleAliases,moduleRecord,importedInstances);else{if(!function(staticModuleRecord){return"function"==typeof staticModuleRecord.execute}(staticModuleRecord))throw new TypeError(`importHook must return a static module record, got ${q(staticModuleRecord)}`);!function(staticModuleRecord,moduleSpecifier){const{exports:exports}=staticModuleRecord;isArray(exports)||Fail`Property 'exports' of a third-party static module record must be an array, got ${q(exports)}, for module ${q(moduleSpecifier)}`}(staticModuleRecord,moduleSpecifier),moduleInstance=makeThirdPartyModuleInstance(compartmentPrivateFields,staticModuleRecord,compartment,moduleAliases,moduleSpecifier,resolvedImports)}mapSet(instances,moduleSpecifier,moduleInstance);for(const[importSpecifier,resolvedSpecifier]of entries(resolvedImports)){const importedInstance=link(compartmentPrivateFields,moduleAliases,compartment,resolvedSpecifier);mapSet(importedInstances,importSpecifier,importedInstance)}return moduleInstance};$h‍_once.instantiate(instantiate)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Map,ReferenceError,TypeError,WeakMap,assign,defineProperties,entries,promiseThen,weakmapGet,weakmapSet,setGlobalObjectSymbolUnscopables,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,sharedGlobalPropertyNames,load,link,getDeferredExports,assert,compartmentEvaluate,makeSafeEvaluator;$h‍_imports([["./commons.js",[["Map",[$h‍_a=>Map=$h‍_a]],["ReferenceError",[$h‍_a=>ReferenceError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["promiseThen",[$h‍_a=>promiseThen=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]]]],["./global-object.js",[["setGlobalObjectSymbolUnscopables",[$h‍_a=>setGlobalObjectSymbolUnscopables=$h‍_a]],["setGlobalObjectConstantProperties",[$h‍_a=>setGlobalObjectConstantProperties=$h‍_a]],["setGlobalObjectMutableProperties",[$h‍_a=>setGlobalObjectMutableProperties=$h‍_a]],["setGlobalObjectEvaluators",[$h‍_a=>setGlobalObjectEvaluators=$h‍_a]]]],["./whitelist.js",[["sharedGlobalPropertyNames",[$h‍_a=>sharedGlobalPropertyNames=$h‍_a]]]],["./module-load.js",[["load",[$h‍_a=>load=$h‍_a]]]],["./module-link.js",[["link",[$h‍_a=>link=$h‍_a]]]],["./module-proxy.js",[["getDeferredExports",[$h‍_a=>getDeferredExports=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]],["./compartment-evaluate.js",[["compartmentEvaluate",[$h‍_a=>compartmentEvaluate=$h‍_a]]]],["./make-safe-evaluator.js",[["makeSafeEvaluator",[$h‍_a=>makeSafeEvaluator=$h‍_a]]]]]);const{quote:q}=assert,moduleAliases=new WeakMap,privateFields=new WeakMap,assertModuleHooks=compartment=>{const{importHook:importHook,resolveHook:resolveHook}=weakmapGet(privateFields,compartment);if("function"!=typeof importHook||"function"!=typeof resolveHook)throw new TypeError("Compartment must be constructed with an importHook and a resolveHook for it to be able to load modules")},InertCompartment=function(_endowments={},_modules={},_options={}){throw new TypeError("Compartment.prototype.constructor is not a valid constructor.")};$h‍_once.InertCompartment(InertCompartment);const compartmentImportNow=(compartment,specifier)=>{const{execute:execute,exportsProxy:exportsProxy}=link(privateFields,moduleAliases,compartment,specifier);return execute(),exportsProxy},CompartmentPrototype={constructor:InertCompartment,get globalThis(){return weakmapGet(privateFields,this).globalObject},get name(){return weakmapGet(privateFields,this).name},evaluate(source,options={}){const compartmentFields=weakmapGet(privateFields,this);return compartmentEvaluate(compartmentFields,source,options)},toString:()=>"[object Compartment]",module(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of module() must be a string");assertModuleHooks(this);const{exportsProxy:exportsProxy}=getDeferredExports(this,weakmapGet(privateFields,this),moduleAliases,specifier);return exportsProxy},async import(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of import() must be a string");return assertModuleHooks(this),promiseThen(load(privateFields,moduleAliases,this,specifier),(()=>({namespace:compartmentImportNow(this,specifier)})))},async load(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of load() must be a string");return assertModuleHooks(this),load(privateFields,moduleAliases,this,specifier)},importNow(specifier){if("string"!=typeof specifier)throw new TypeError("first argument of importNow() must be a string");return assertModuleHooks(this),compartmentImportNow(this,specifier)}};$h‍_once.CompartmentPrototype(CompartmentPrototype),defineProperties(InertCompartment,{prototype:{value:CompartmentPrototype}});$h‍_once.makeCompartmentConstructor(((targetMakeCompartmentConstructor,intrinsics,markVirtualizedNativeFunction)=>{function Compartment(endowments={},moduleMap={},options={}){if(void 0===new.target)throw new TypeError("Class constructor Compartment cannot be invoked without 'new'");const{name:name="",transforms:transforms=[],__shimTransforms__:__shimTransforms__=[],resolveHook:resolveHook,importHook:importHook,moduleMapHook:moduleMapHook,importMetaHook:importMetaHook}=options,globalTransforms=[...transforms,...__shimTransforms__],moduleRecords=new Map,instances=new Map,deferredExports=new Map;for(const[specifier,aliasNamespace]of entries(moduleMap||{})){if("string"==typeof aliasNamespace)throw new TypeError(`Cannot map module ${q(specifier)} to ${q(aliasNamespace)} in parent compartment`);if(void 0===weakmapGet(moduleAliases,aliasNamespace))throw ReferenceError(`Cannot map module ${q(specifier)} because it has no known compartment in this realm`)}const globalObject={};setGlobalObjectSymbolUnscopables(globalObject),setGlobalObjectConstantProperties(globalObject);const{safeEvaluate:safeEvaluate}=makeSafeEvaluator({globalObject:globalObject,globalTransforms:globalTransforms,sloppyGlobalsMode:!1});setGlobalObjectMutableProperties(globalObject,{intrinsics:intrinsics,newGlobalPropertyNames:sharedGlobalPropertyNames,makeCompartmentConstructor:targetMakeCompartmentConstructor,markVirtualizedNativeFunction:markVirtualizedNativeFunction}),setGlobalObjectEvaluators(globalObject,safeEvaluate,markVirtualizedNativeFunction),assign(globalObject,endowments),weakmapSet(privateFields,this,{name:`${name}`,globalTransforms:globalTransforms,globalObject:globalObject,safeEvaluate:safeEvaluate,resolveHook:resolveHook,importHook:importHook,moduleMap:moduleMap,moduleMapHook:moduleMapHook,importMetaHook:importMetaHook,moduleRecords:moduleRecords,__shimTransforms__:__shimTransforms__,deferredExports:deferredExports,instances:instances})}return Compartment.prototype=CompartmentPrototype,Compartment}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,WeakSet,arrayFilter,create,defineProperty,entries,freeze,getOwnPropertyDescriptor,getOwnPropertyDescriptors,globalThis,is,isObject,objectHasOwnProperty,values,weaksetHas,constantProperties,sharedGlobalPropertyNames,universalPropertyNames,whitelist;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["values",[$h‍_a=>values=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]],["./whitelist.js",[["constantProperties",[$h‍_a=>constantProperties=$h‍_a]],["sharedGlobalPropertyNames",[$h‍_a=>sharedGlobalPropertyNames=$h‍_a]],["universalPropertyNames",[$h‍_a=>universalPropertyNames=$h‍_a]],["whitelist",[$h‍_a=>whitelist=$h‍_a]]]]]);const isFunction=obj=>"function"==typeof obj;function initProperty(obj,name,desc){if(objectHasOwnProperty(obj,name)){const preDesc=getOwnPropertyDescriptor(obj,name);if(!preDesc||!is(preDesc.value,desc.value)||preDesc.get!==desc.get||preDesc.set!==desc.set||preDesc.writable!==desc.writable||preDesc.enumerable!==desc.enumerable||preDesc.configurable!==desc.configurable)throw new TypeError(`Conflicting definitions of ${name}`)}defineProperty(obj,name,desc)}function sampleGlobals(globalObject,newPropertyNames){const newIntrinsics={__proto__:null};for(const[globalName,intrinsicName]of entries(newPropertyNames))objectHasOwnProperty(globalObject,globalName)&&(newIntrinsics[intrinsicName]=globalObject[globalName]);return newIntrinsics}const makeIntrinsicsCollector=()=>{const intrinsics=create(null);let pseudoNatives;const addIntrinsics=newIntrinsics=>{!function(obj,descs){for(const[name,desc]of entries(descs))initProperty(obj,name,desc)}(intrinsics,getOwnPropertyDescriptors(newIntrinsics))};freeze(addIntrinsics);const completePrototypes=()=>{for(const[name,intrinsic]of entries(intrinsics)){if(!isObject(intrinsic))continue;if(!objectHasOwnProperty(intrinsic,"prototype"))continue;const permit=whitelist[name];if("object"!=typeof permit)throw new TypeError(`Expected permit object at whitelist.${name}`);const namePrototype=permit.prototype;if(!namePrototype)throw new TypeError(`${name}.prototype property not whitelisted`);if("string"!=typeof namePrototype||!objectHasOwnProperty(whitelist,namePrototype))throw new TypeError(`Unrecognized ${name}.prototype whitelist entry`);const intrinsicPrototype=intrinsic.prototype;if(objectHasOwnProperty(intrinsics,namePrototype)){if(intrinsics[namePrototype]!==intrinsicPrototype)throw new TypeError(`Conflicting bindings of ${namePrototype}`)}else intrinsics[namePrototype]=intrinsicPrototype}};freeze(completePrototypes);const finalIntrinsics=()=>(freeze(intrinsics),pseudoNatives=new WeakSet(arrayFilter(values(intrinsics),isFunction)),intrinsics);freeze(finalIntrinsics);const isPseudoNative=obj=>{if(!pseudoNatives)throw new TypeError("isPseudoNative can only be called after finalIntrinsics");return weaksetHas(pseudoNatives,obj)};freeze(isPseudoNative);const intrinsicsCollector={addIntrinsics:addIntrinsics,completePrototypes:completePrototypes,finalIntrinsics:finalIntrinsics,isPseudoNative:isPseudoNative};return freeze(intrinsicsCollector),addIntrinsics(constantProperties),addIntrinsics(sampleGlobals(globalThis,universalPropertyNames)),intrinsicsCollector};$h‍_once.makeIntrinsicsCollector(makeIntrinsicsCollector);$h‍_once.getGlobalIntrinsics((globalObject=>{const{addIntrinsics:addIntrinsics,finalIntrinsics:finalIntrinsics}=makeIntrinsicsCollector();return addIntrinsics(sampleGlobals(globalObject,sharedGlobalPropertyNames)),finalIntrinsics()}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{$h‍_imports([]);$h‍_once.minEnablements({"%ObjectPrototype%":{toString:!0},"%FunctionPrototype%":{toString:!0},"%ErrorPrototype%":{name:!0}});const moderateEnablements={"%ObjectPrototype%":{toString:!0,valueOf:!0},"%ArrayPrototype%":{toString:!0,push:!0},"%FunctionPrototype%":{constructor:!0,bind:!0,toString:!0},"%ErrorPrototype%":{constructor:!0,message:!0,name:!0,toString:!0},"%TypeErrorPrototype%":{constructor:!0,message:!0,name:!0},"%SyntaxErrorPrototype%":{message:!0,name:!0},"%RangeErrorPrototype%":{message:!0,name:!0},"%URIErrorPrototype%":{message:!0,name:!0},"%EvalErrorPrototype%":{message:!0,name:!0},"%ReferenceErrorPrototype%":{message:!0,name:!0},"%PromisePrototype%":{constructor:!0},"%TypedArrayPrototype%":"*","%Generator%":{constructor:!0,name:!0,toString:!0},"%IteratorPrototype%":{toString:!0}};$h‍_once.moderateEnablements(moderateEnablements);const severeEnablements={...moderateEnablements,"%ObjectPrototype%":"*","%TypedArrayPrototype%":"*","%MapPrototype%":"*","%SetPrototype%":"*"};$h‍_once.severeEnablements(severeEnablements)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Set,String,TypeError,arrayForEach,defineProperty,getOwnPropertyDescriptor,getOwnPropertyDescriptors,getOwnPropertyNames,isObject,objectHasOwnProperty,ownKeys,setHas,minEnablements,moderateEnablements,severeEnablements;$h‍_imports([["./commons.js",[["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayForEach",[$h‍_a=>arrayForEach=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["getOwnPropertyNames",[$h‍_a=>getOwnPropertyNames=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["setHas",[$h‍_a=>setHas=$h‍_a]]]],["./enablements.js",[["minEnablements",[$h‍_a=>minEnablements=$h‍_a]],["moderateEnablements",[$h‍_a=>moderateEnablements=$h‍_a]],["severeEnablements",[$h‍_a=>severeEnablements=$h‍_a]]]]]),$h‍_once.default((function(intrinsics,overrideTaming,overrideDebug=[]){const debugProperties=new Set(overrideDebug);function enable(path,obj,prop,desc){if("value"in desc&&desc.configurable){const{value:value}=desc;function getter(){return value}defineProperty(getter,"originalValue",{value:value,writable:!1,enumerable:!1,configurable:!1});const isDebug=setHas(debugProperties,prop);function setter(newValue){if(obj===this)throw new TypeError(`Cannot assign to read only property '${String(prop)}' of '${path}'`);objectHasOwnProperty(this,prop)?this[prop]=newValue:(isDebug&&console.error(new TypeError(`Override property ${prop}`)),defineProperty(this,prop,{value:newValue,writable:!0,enumerable:!0,configurable:!0}))}defineProperty(obj,prop,{get:getter,set:setter,enumerable:desc.enumerable,configurable:desc.configurable})}}function enableProperty(path,obj,prop){const desc=getOwnPropertyDescriptor(obj,prop);desc&&enable(path,obj,prop,desc)}function enableAllProperties(path,obj){const descs=getOwnPropertyDescriptors(obj);descs&&arrayForEach(ownKeys(descs),(prop=>enable(path,obj,prop,descs[prop])))}let plan;switch(overrideTaming){case"min":plan=minEnablements;break;case"moderate":plan=moderateEnablements;break;case"severe":plan=severeEnablements;break;default:throw new TypeError(`unrecognized overrideTaming ${overrideTaming}`)}!function enableProperties(path,obj,plan){for(const prop of getOwnPropertyNames(plan)){const desc=getOwnPropertyDescriptor(obj,prop);if(!desc||desc.get||desc.set)continue;const subPath=`${path}.${String(prop)}`,subPlan=plan[prop];if(!0===subPlan)enableProperty(subPath,obj,prop);else if("*"===subPlan)enableAllProperties(subPath,desc.value);else{if(!isObject(subPlan))throw new TypeError(`Unexpected override enablement plan ${subPath}`);enableProperties(subPath,desc.value,subPlan)}}}("root",intrinsics,plan)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let arrayPush,freeze,assert;$h‍_imports([["./commons.js",[["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,makeEnvironmentCaptor=aGlobal=>{const capturedEnvironmentOptionNames=[],getEnvironmentOption=(optionName,defaultSetting)=>{"string"==typeof optionName||Fail`Environment option name ${q(optionName)} must be a string.`,"string"==typeof defaultSetting||Fail`Environment option default setting ${q(defaultSetting)} must be a string.`;let setting=defaultSetting;const globalProcess=aGlobal.process;if(globalProcess&&"object"==typeof globalProcess){const globalEnv=globalProcess.env;if(globalEnv&&"object"==typeof globalEnv&&optionName in globalEnv){arrayPush(capturedEnvironmentOptionNames,optionName);const optionValue=globalEnv[optionName];"string"==typeof optionValue||Fail`Environment option named ${q(optionName)}, if present, must have a corresponding string value, got ${q(optionValue)}`,setting=optionValue}}return void 0===setting||"string"==typeof setting||Fail`Environment option value ${q(setting)}, if present, must be a string.`,setting};freeze(getEnvironmentOption);const getCapturedEnvironmentOptionNames=()=>freeze([...capturedEnvironmentOptionNames]);return freeze(getCapturedEnvironmentOptionNames),freeze({getEnvironmentOption:getEnvironmentOption,getCapturedEnvironmentOptionNames:getCapturedEnvironmentOptionNames})};$h‍_once.makeEnvironmentCaptor(makeEnvironmentCaptor),freeze(makeEnvironmentCaptor)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let WeakSet,arrayFilter,arrayMap,arrayPush,defineProperty,freeze,fromEntries,isError,stringEndsWith,weaksetAdd,weaksetHas;$h‍_imports([["../commons.js",[["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arrayPush",[$h‍_a=>arrayPush=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["fromEntries",[$h‍_a=>fromEntries=$h‍_a]],["isError",[$h‍_a=>isError=$h‍_a]],["stringEndsWith",[$h‍_a=>stringEndsWith=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]],["./types.js",[]],["./internal-types.js",[]]]);const consoleLevelMethods=freeze([["debug","debug"],["log","log"],["info","info"],["warn","warn"],["error","error"],["trace","log"],["dirxml","log"],["group","log"],["groupCollapsed","log"]]),consoleOtherMethods=freeze([["assert","error"],["timeLog","log"],["clear",void 0],["count","info"],["countReset",void 0],["dir","log"],["groupEnd","log"],["table","log"],["time","info"],["timeEnd","info"],["profile",void 0],["profileEnd",void 0],["timeStamp",void 0]]),consoleWhitelist=freeze([...consoleLevelMethods,...consoleOtherMethods]);$h‍_once.consoleWhitelist(consoleWhitelist);const makeLoggingConsoleKit=(loggedErrorHandler,{shouldResetForDebugging:shouldResetForDebugging=!1}={})=>{shouldResetForDebugging&&loggedErrorHandler.resetErrorTagNum();let logArray=[];const loggingConsole=fromEntries(arrayMap(consoleWhitelist,(([name,_])=>{const method=(...args)=>{arrayPush(logArray,[name,...args])};return defineProperty(method,"name",{value:name}),[name,freeze(method)]})));freeze(loggingConsole);const takeLog=()=>{const result=freeze(logArray);return logArray=[],result};freeze(takeLog);return freeze({loggingConsole:loggingConsole,takeLog:takeLog})};$h‍_once.makeLoggingConsoleKit(makeLoggingConsoleKit),freeze(makeLoggingConsoleKit);const ErrorInfo={NOTE:"ERROR_NOTE:",MESSAGE:"ERROR_MESSAGE:"};freeze(ErrorInfo);const makeCausalConsole=(baseConsole,loggedErrorHandler)=>{const{getStackString:getStackString,tagError:tagError,takeMessageLogArgs:takeMessageLogArgs,takeNoteLogArgsArray:takeNoteLogArgsArray}=loggedErrorHandler,extractErrorArgs=(logArgs,subErrorsSink)=>arrayMap(logArgs,(arg=>isError(arg)?(arrayPush(subErrorsSink,arg),`(${tagError(arg)})`):arg)),logErrorInfo=(severity,error,kind,logArgs,subErrorsSink)=>{const errorTag=tagError(error),errorName=kind===ErrorInfo.MESSAGE?`${errorTag}:`:`${errorTag} ${kind}`,argTags=extractErrorArgs(logArgs,subErrorsSink);baseConsole[severity](errorName,...argTags)},logSubErrors=(severity,subErrors,optTag=undefined)=>{if(0===subErrors.length)return;if(1===subErrors.length&&void 0===optTag)return void logError(severity,subErrors[0]);let label;label=1===subErrors.length?"Nested error":`Nested ${subErrors.length} errors`,void 0!==optTag&&(label=`${label} under ${optTag}`),baseConsole.group(label);try{for(const subError of subErrors)logError(severity,subError)}finally{baseConsole.groupEnd()}},errorsLogged=new WeakSet,logError=(severity,error)=>{if(weaksetHas(errorsLogged,error))return;const errorTag=tagError(error);weaksetAdd(errorsLogged,error);const subErrors=[],messageLogArgs=takeMessageLogArgs(error),noteLogArgsArray=takeNoteLogArgsArray(error,(severity=>(error,noteLogArgs)=>{const subErrors=[];logErrorInfo(severity,error,ErrorInfo.NOTE,noteLogArgs,subErrors),logSubErrors(severity,subErrors,tagError(error))})(severity));void 0===messageLogArgs?baseConsole[severity](`${errorTag}:`,error.message):logErrorInfo(severity,error,ErrorInfo.MESSAGE,messageLogArgs,subErrors);let stackString=getStackString(error);"string"==typeof stackString&&stackString.length>=1&&!stringEndsWith(stackString,"\n")&&(stackString+="\n"),baseConsole[severity](stackString);for(const noteLogArgs of noteLogArgsArray)logErrorInfo(severity,error,ErrorInfo.NOTE,noteLogArgs,subErrors);logSubErrors(severity,subErrors,errorTag)},levelMethods=arrayMap(consoleLevelMethods,(([level,_])=>{const levelMethod=(...logArgs)=>{const subErrors=[],argTags=extractErrorArgs(logArgs,subErrors);baseConsole[level](...argTags),logSubErrors(level,subErrors)};return defineProperty(levelMethod,"name",{value:level}),[level,freeze(levelMethod)]})),otherMethodNames=arrayFilter(consoleOtherMethods,(([name,_])=>name in baseConsole)),otherMethods=arrayMap(otherMethodNames,(([name,_])=>{const otherMethod=(...args)=>{baseConsole[name](...args)};return defineProperty(otherMethod,"name",{value:name}),[name,freeze(otherMethod)]})),causalConsole=fromEntries([...levelMethods,...otherMethods]);return freeze(causalConsole)};$h‍_once.makeCausalConsole(makeCausalConsole),freeze(makeCausalConsole);const filterConsole=(baseConsole,filter,_topic=undefined)=>{const whitelist=arrayFilter(consoleWhitelist,(([name,_])=>name in baseConsole)),methods=arrayMap(whitelist,(([name,severity])=>[name,freeze(((...args)=>{(void 0===severity||filter.canLog(severity))&&baseConsole[name](...args)}))])),filteringConsole=fromEntries(methods);return freeze(filteringConsole)};$h‍_once.filterConsole(filterConsole),freeze(filterConsole)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FinalizationRegistry,Map,mapGet,mapDelete,WeakMap,mapSet,finalizationRegistryRegister,weakmapSet,weakmapGet,mapEntries,mapHas;$h‍_imports([["../commons.js",[["FinalizationRegistry",[$h‍_a=>FinalizationRegistry=$h‍_a]],["Map",[$h‍_a=>Map=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["mapDelete",[$h‍_a=>mapDelete=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["mapSet",[$h‍_a=>mapSet=$h‍_a]],["finalizationRegistryRegister",[$h‍_a=>finalizationRegistryRegister=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["mapEntries",[$h‍_a=>mapEntries=$h‍_a]],["mapHas",[$h‍_a=>mapHas=$h‍_a]]]]]);$h‍_once.makeRejectionHandlers((reportReason=>{if(void 0===FinalizationRegistry)return;let lastReasonId=0;const idToReason=new Map;let cancelChecking;const removeReasonId=reasonId=>{mapDelete(idToReason,reasonId),cancelChecking&&0===idToReason.size&&(cancelChecking(),cancelChecking=void 0)},promiseToReasonId=new WeakMap,promiseToReason=new FinalizationRegistry((heldReasonId=>{if(mapHas(idToReason,heldReasonId)){const reason=mapGet(idToReason,heldReasonId);removeReasonId(heldReasonId),reportReason(reason)}}));return{rejectionHandledHandler:pr=>{const reasonId=weakmapGet(promiseToReasonId,pr);removeReasonId(reasonId)},unhandledRejectionHandler:(reason,pr)=>{lastReasonId+=1;const reasonId=lastReasonId;mapSet(idToReason,reasonId,reason),weakmapSet(promiseToReasonId,pr,reasonId),finalizationRegistryRegister(promiseToReason,pr,reasonId,pr)},processTerminationHandler:()=>{for(const[reasonId,reason]of mapEntries(idToReason))removeReasonId(reasonId),reportReason(reason)}}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,globalThis,defaultHandler,makeCausalConsole,makeRejectionHandlers;$h‍_imports([["../commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]]]],["./assert.js",[["loggedErrorHandler",[$h‍_a=>defaultHandler=$h‍_a]]]],["./console.js",[["makeCausalConsole",[$h‍_a=>makeCausalConsole=$h‍_a]]]],["./unhandled-rejection.js",[["makeRejectionHandlers",[$h‍_a=>makeRejectionHandlers=$h‍_a]]]],["./types.js",[]],["./internal-types.js",[]]]);const originalConsole=console;$h‍_once.tameConsole(((consoleTaming="safe",errorTrapping="platform",unhandledRejectionTrapping="report",optGetStackString=undefined)=>{if("safe"!==consoleTaming&&"unsafe"!==consoleTaming)throw new TypeError(`unrecognized consoleTaming ${consoleTaming}`);let loggedErrorHandler;loggedErrorHandler=void 0===optGetStackString?defaultHandler:{...defaultHandler,getStackString:optGetStackString};const ourConsole="unsafe"===consoleTaming?originalConsole:makeCausalConsole(originalConsole,loggedErrorHandler);if("none"!==errorTrapping&&void 0!==globalThis.process&&globalThis.process.on("uncaughtException",(error=>{ourConsole.error(error),"platform"===errorTrapping||"exit"===errorTrapping?globalThis.process.exit(globalThis.process.exitCode||-1):"abort"===errorTrapping&&globalThis.process.abort()})),"none"!==unhandledRejectionTrapping&&void 0!==globalThis.process){const h=makeRejectionHandlers((reason=>{ourConsole.error("SES_UNHANDLED_REJECTION:",reason)}));h&&(globalThis.process.on("unhandledRejection",h.unhandledRejectionHandler),globalThis.process.on("rejectionHandled",h.rejectionHandledHandler),globalThis.process.on("exit",h.processTerminationHandler))}if("none"!==errorTrapping&&void 0!==globalThis.window&&void 0!==globalThis.window.addEventListener&&globalThis.window.addEventListener("error",(event=>{event.preventDefault(),ourConsole.error(event.error),"exit"!==errorTrapping&&"abort"!==errorTrapping||(globalThis.window.location.href="about:blank")})),"none"!==unhandledRejectionTrapping&&void 0!==globalThis.window&&void 0!==globalThis.window.addEventListener){const h=makeRejectionHandlers((reason=>{ourConsole.error("SES_UNHANDLED_REJECTION:",reason)}));h&&(globalThis.window.addEventListener("unhandledrejection",(event=>{event.preventDefault(),h.unhandledRejectionHandler(event.reason,event.promise)})),globalThis.window.addEventListener("rejectionhandled",(event=>{event.preventDefault(),h.rejectionHandledHandler(event.promise)})),globalThis.window.addEventListener("beforeunload",(_event=>{h.processTerminationHandler()})))}return{console:ourConsole}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let WeakMap,WeakSet,apply,arrayFilter,arrayJoin,arrayMap,arraySlice,create,defineProperties,fromEntries,reflectSet,regexpExec,regexpTest,weakmapGet,weakmapSet,weaksetAdd,weaksetHas;$h‍_imports([["../commons.js",[["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayJoin",[$h‍_a=>arrayJoin=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["arraySlice",[$h‍_a=>arraySlice=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["fromEntries",[$h‍_a=>fromEntries=$h‍_a]],["reflectSet",[$h‍_a=>reflectSet=$h‍_a]],["regexpExec",[$h‍_a=>regexpExec=$h‍_a]],["regexpTest",[$h‍_a=>regexpTest=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]]]);const safeV8CallSiteMethodNames=["getTypeName","getFunctionName","getMethodName","getFileName","getLineNumber","getColumnNumber","getEvalOrigin","isToplevel","isEval","isNative","isConstructor","isAsync","getPosition","getScriptNameOrSourceURL","toString"],safeV8CallSiteFacet=callSite=>{const o=fromEntries(arrayMap(safeV8CallSiteMethodNames,(name=>{const method=callSite[name];return[name,()=>apply(method,callSite,[])]})));return create(o,{})},FILENAME_CENSORS=[/\/node_modules\//,/^(?:node:)?internal\//,/\/packages\/ses\/src\/error\/assert.js$/,/\/packages\/eventual-send\/src\//],filterFileName=fileName=>{if(!fileName)return!0;for(const filter of FILENAME_CENSORS)if(regexpTest(filter,fileName))return!1;return!0};$h‍_once.filterFileName(filterFileName);const CALLSITE_PATTERNS=[/^((?:.*[( ])?)[:/\w_-]*\/\.\.\.\/(.+)$/,/^((?:.*[( ])?)[:/\w_-]*\/(packages\/.+)$/],shortenCallSiteString=callSiteString=>{for(const filter of CALLSITE_PATTERNS){const match=regexpExec(filter,callSiteString);if(match)return arrayJoin(arraySlice(match,1),"")}return callSiteString};$h‍_once.shortenCallSiteString(shortenCallSiteString);$h‍_once.tameV8ErrorConstructor(((OriginalError,InitialError,errorTaming,stackFiltering)=>{const originalCaptureStackTrace=OriginalError.captureStackTrace,callSiteFilter=callSite=>"verbose"===stackFiltering||filterFileName(callSite.getFileName()),callSiteStringifier=callSite=>{let callSiteString=`${callSite}`;return"concise"===stackFiltering&&(callSiteString=shortenCallSiteString(callSiteString)),`\n at ${callSiteString}`},stackStringFromSST=(_error,sst)=>arrayJoin(arrayMap(arrayFilter(sst,callSiteFilter),callSiteStringifier),""),stackInfos=new WeakMap,tamedMethods={captureStackTrace(error,optFn=tamedMethods.captureStackTrace){"function"!=typeof originalCaptureStackTrace?reflectSet(error,"stack",""):apply(originalCaptureStackTrace,OriginalError,[error,optFn])},getStackString(error){let stackInfo=weakmapGet(stackInfos,error);if(void 0===stackInfo&&(error.stack,stackInfo=weakmapGet(stackInfos,error),stackInfo||(stackInfo={stackString:""},weakmapSet(stackInfos,error,stackInfo))),void 0!==stackInfo.stackString)return stackInfo.stackString;const stackString=stackStringFromSST(0,stackInfo.callSites);return weakmapSet(stackInfos,error,{stackString:stackString}),stackString},prepareStackTrace(error,sst){if("unsafe"===errorTaming){const stackString=stackStringFromSST(0,sst);return weakmapSet(stackInfos,error,{stackString:stackString}),`${error}${stackString}`}return weakmapSet(stackInfos,error,{callSites:sst}),""}},defaultPrepareFn=tamedMethods.prepareStackTrace;OriginalError.prepareStackTrace=defaultPrepareFn;const systemPrepareFnSet=new WeakSet([defaultPrepareFn]),systemPrepareFnFor=inputPrepareFn=>{if(weaksetHas(systemPrepareFnSet,inputPrepareFn))return inputPrepareFn;const systemMethods={prepareStackTrace:(error,sst)=>(weakmapSet(stackInfos,error,{callSites:sst}),inputPrepareFn(error,(sst=>arrayMap(sst,safeV8CallSiteFacet))(sst)))};return weaksetAdd(systemPrepareFnSet,systemMethods.prepareStackTrace),systemMethods.prepareStackTrace};return defineProperties(InitialError,{captureStackTrace:{value:tamedMethods.captureStackTrace,writable:!0,enumerable:!1,configurable:!0},prepareStackTrace:{get:()=>OriginalError.prepareStackTrace,set(inputPrepareStackTraceFn){if("function"==typeof inputPrepareStackTraceFn){const systemPrepareFn=systemPrepareFnFor(inputPrepareStackTraceFn);OriginalError.prepareStackTrace=systemPrepareFn}else OriginalError.prepareStackTrace=defaultPrepareFn},enumerable:!1,configurable:!0}}),tamedMethods.getStackString}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_ERROR,TypeError,apply,construct,defineProperties,setPrototypeOf,getOwnPropertyDescriptor,defineProperty,NativeErrors,tameV8ErrorConstructor;$h‍_imports([["../commons.js",[["FERAL_ERROR",[$h‍_a=>FERAL_ERROR=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["construct",[$h‍_a=>construct=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["setPrototypeOf",[$h‍_a=>setPrototypeOf=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]]]],["../whitelist.js",[["NativeErrors",[$h‍_a=>NativeErrors=$h‍_a]]]],["./tame-v8-error-constructor.js",[["tameV8ErrorConstructor",[$h‍_a=>tameV8ErrorConstructor=$h‍_a]]]]]);const stackDesc=getOwnPropertyDescriptor(FERAL_ERROR.prototype,"stack"),stackGetter=stackDesc&&stackDesc.get,tamedMethods={getStackString:error=>"function"==typeof stackGetter?apply(stackGetter,error,[]):"stack"in error?`${error.stack}`:""};$h‍_once.default((function(errorTaming="safe",stackFiltering="concise"){if("safe"!==errorTaming&&"unsafe"!==errorTaming)throw new TypeError(`unrecognized errorTaming ${errorTaming}`);if("concise"!==stackFiltering&&"verbose"!==stackFiltering)throw new TypeError(`unrecognized stackFiltering ${stackFiltering}`);const ErrorPrototype=FERAL_ERROR.prototype,platform="function"==typeof FERAL_ERROR.captureStackTrace?"v8":"unknown",{captureStackTrace:originalCaptureStackTrace}=FERAL_ERROR,makeErrorConstructor=(_={})=>{const ResultError=function(...rest){let error;return error=void 0===new.target?apply(FERAL_ERROR,this,rest):construct(FERAL_ERROR,rest,new.target),"v8"===platform&&apply(originalCaptureStackTrace,FERAL_ERROR,[error,ResultError]),error};return defineProperties(ResultError,{length:{value:1},prototype:{value:ErrorPrototype,writable:!1,enumerable:!1,configurable:!1}}),ResultError},InitialError=makeErrorConstructor({powers:"original"}),SharedError=makeErrorConstructor({powers:"none"});defineProperties(ErrorPrototype,{constructor:{value:SharedError}});for(const NativeError of NativeErrors)setPrototypeOf(NativeError,SharedError);defineProperties(InitialError,{stackTraceLimit:{get(){if("number"==typeof FERAL_ERROR.stackTraceLimit)return FERAL_ERROR.stackTraceLimit},set(newLimit){"number"==typeof newLimit&&("number"!=typeof FERAL_ERROR.stackTraceLimit||(FERAL_ERROR.stackTraceLimit=newLimit))},enumerable:!1,configurable:!0}}),defineProperties(SharedError,{stackTraceLimit:{get(){},set(_newLimit){},enumerable:!1,configurable:!0}}),"v8"===platform&&defineProperties(SharedError,{prepareStackTrace:{get:()=>()=>"",set(_prepareFn){},enumerable:!1,configurable:!0},captureStackTrace:{value:(errorish,_constructorOpt)=>{defineProperty(errorish,"stack",{value:""})},writable:!1,enumerable:!1,configurable:!0}});let initialGetStackString=tamedMethods.getStackString;return"v8"===platform?initialGetStackString=tameV8ErrorConstructor(FERAL_ERROR,InitialError,errorTaming,stackFiltering):defineProperties(ErrorPrototype,"unsafe"===errorTaming?{stack:{get(){return initialGetStackString(this)},set(newValue){defineProperties(this,{stack:{value:newValue,writable:!0,enumerable:!0,configurable:!0}})}}}:{stack:{get(){return`${this}`},set(newValue){defineProperties(this,{stack:{value:newValue,writable:!0,enumerable:!0,configurable:!0}})}}}),{"%InitialGetStackString%":initialGetStackString,"%InitialError%":InitialError,"%SharedError%":SharedError}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,Float32Array,Map,Set,String,getOwnPropertyDescriptor,getPrototypeOf,iterateArray,iterateMap,iterateSet,iterateString,matchAllRegExp,matchAllSymbol,regexpPrototype,InertCompartment;function getConstructorOf(obj){return getPrototypeOf(obj).constructor}$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["Float32Array",[$h‍_a=>Float32Array=$h‍_a]],["Map",[$h‍_a=>Map=$h‍_a]],["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["iterateArray",[$h‍_a=>iterateArray=$h‍_a]],["iterateMap",[$h‍_a=>iterateMap=$h‍_a]],["iterateSet",[$h‍_a=>iterateSet=$h‍_a]],["iterateString",[$h‍_a=>iterateString=$h‍_a]],["matchAllRegExp",[$h‍_a=>matchAllRegExp=$h‍_a]],["matchAllSymbol",[$h‍_a=>matchAllSymbol=$h‍_a]],["regexpPrototype",[$h‍_a=>regexpPrototype=$h‍_a]]]],["./compartment-shim.js",[["InertCompartment",[$h‍_a=>InertCompartment=$h‍_a]]]]]);$h‍_once.getAnonymousIntrinsics((()=>{const InertFunction=FERAL_FUNCTION.prototype.constructor,argsCalleeDesc=getOwnPropertyDescriptor(function(){return arguments}(),"callee"),ThrowTypeError=argsCalleeDesc&&argsCalleeDesc.get,StringIteratorObject=iterateString(new String),StringIteratorPrototype=getPrototypeOf(StringIteratorObject),RegExpStringIterator=regexpPrototype[matchAllSymbol]&&matchAllRegExp(/./),RegExpStringIteratorPrototype=RegExpStringIterator&&getPrototypeOf(RegExpStringIterator),ArrayIteratorObject=iterateArray([]),ArrayIteratorPrototype=getPrototypeOf(ArrayIteratorObject),TypedArray=getPrototypeOf(Float32Array),MapIteratorObject=iterateMap(new Map),MapIteratorPrototype=getPrototypeOf(MapIteratorObject),SetIteratorObject=iterateSet(new Set),SetIteratorPrototype=getPrototypeOf(SetIteratorObject),IteratorPrototype=getPrototypeOf(ArrayIteratorPrototype);const GeneratorFunction=getConstructorOf((function*(){})),Generator=GeneratorFunction.prototype;const AsyncGeneratorFunction=getConstructorOf((async function*(){})),AsyncGenerator=AsyncGeneratorFunction.prototype,AsyncGeneratorPrototype=AsyncGenerator.prototype,AsyncIteratorPrototype=getPrototypeOf(AsyncGeneratorPrototype);return{"%InertFunction%":InertFunction,"%ArrayIteratorPrototype%":ArrayIteratorPrototype,"%InertAsyncFunction%":getConstructorOf((async function(){})),"%AsyncGenerator%":AsyncGenerator,"%InertAsyncGeneratorFunction%":AsyncGeneratorFunction,"%AsyncGeneratorPrototype%":AsyncGeneratorPrototype,"%AsyncIteratorPrototype%":AsyncIteratorPrototype,"%Generator%":Generator,"%InertGeneratorFunction%":GeneratorFunction,"%IteratorPrototype%":IteratorPrototype,"%MapIteratorPrototype%":MapIteratorPrototype,"%RegExpStringIteratorPrototype%":RegExpStringIteratorPrototype,"%SetIteratorPrototype%":SetIteratorPrototype,"%StringIteratorPrototype%":StringIteratorPrototype,"%ThrowTypeError%":ThrowTypeError,"%TypedArray%":TypedArray,"%InertCompartment%":InertCompartment}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Set,String,TypeError,WeakMap,WeakSet,globalThis,apply,arrayForEach,defineProperty,freeze,getOwnPropertyDescriptor,getOwnPropertyDescriptors,getPrototypeOf,isInteger,isObject,objectHasOwnProperty,ownKeys,preventExtensions,setAdd,setForEach,setHas,toStringTagSymbol,typedArrayPrototype,weakmapGet,weakmapSet,weaksetAdd,weaksetHas,assert;$h‍_imports([["./commons.js",[["Set",[$h‍_a=>Set=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["WeakMap",[$h‍_a=>WeakMap=$h‍_a]],["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["arrayForEach",[$h‍_a=>arrayForEach=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["isInteger",[$h‍_a=>isInteger=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["preventExtensions",[$h‍_a=>preventExtensions=$h‍_a]],["setAdd",[$h‍_a=>setAdd=$h‍_a]],["setForEach",[$h‍_a=>setForEach=$h‍_a]],["setHas",[$h‍_a=>setHas=$h‍_a]],["toStringTagSymbol",[$h‍_a=>toStringTagSymbol=$h‍_a]],["typedArrayPrototype",[$h‍_a=>typedArrayPrototype=$h‍_a]],["weakmapGet",[$h‍_a=>weakmapGet=$h‍_a]],["weakmapSet",[$h‍_a=>weakmapSet=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const typedArrayToStringTag=getOwnPropertyDescriptor(typedArrayPrototype,toStringTagSymbol);assert(typedArrayToStringTag);const getTypedArrayToStringTag=typedArrayToStringTag.get;assert(getTypedArrayToStringTag);const isTypedArray=object=>void 0!==apply(getTypedArrayToStringTag,object,[]);$h‍_once.isTypedArray(isTypedArray);const freezeTypedArray=array=>{preventExtensions(array),arrayForEach(ownKeys(array),(name=>{const desc=getOwnPropertyDescriptor(array,name);assert(desc),(propertyKey=>{const n=+String(propertyKey);return isInteger(n)&&String(n)===propertyKey})(name)||defineProperty(array,name,{...desc,writable:!1,configurable:!1})}))};$h‍_once.makeHardener((()=>{if("function"==typeof globalThis.harden){return globalThis.harden}const hardened=new WeakSet,{harden:harden}={harden(root){const toFreeze=new Set,paths=new WeakMap;function enqueue(val,path=undefined){if(!isObject(val))return;const type=typeof val;if("object"!==type&&"function"!==type)throw new TypeError(`Unexpected typeof: ${type}`);weaksetHas(hardened,val)||setHas(toFreeze,val)||(setAdd(toFreeze,val),weakmapSet(paths,val,path))}function freezeAndTraverse(obj){isTypedArray(obj)?freezeTypedArray(obj):freeze(obj);const path=weakmapGet(paths,obj)||"unknown",descs=getOwnPropertyDescriptors(obj);enqueue(getPrototypeOf(obj),`${path}.__proto__`),arrayForEach(ownKeys(descs),(name=>{const pathname=`${path}.${String(name)}`,desc=descs[name];objectHasOwnProperty(desc,"value")?enqueue(desc.value,`${pathname}`):(enqueue(desc.get,`${pathname}(get)`),enqueue(desc.set,`${pathname}(set)`))}))}function markHardened(value){weaksetAdd(hardened,value)}return enqueue(root),setForEach(toFreeze,freezeAndTraverse),setForEach(toFreeze,markHardened),root}};return harden}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Date,TypeError,apply,construct,defineProperties;$h‍_imports([["./commons.js",[["Date",[$h‍_a=>Date=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["apply",[$h‍_a=>apply=$h‍_a]],["construct",[$h‍_a=>construct=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]]]]]),$h‍_once.default((function(dateTaming="safe"){if("safe"!==dateTaming&&"unsafe"!==dateTaming)throw new TypeError(`unrecognized dateTaming ${dateTaming}`);const OriginalDate=Date,DatePrototype=OriginalDate.prototype,tamedMethods={now:()=>NaN},makeDateConstructor=({powers:powers="none"}={})=>{let ResultDate;return ResultDate="original"===powers?function(...rest){return void 0===new.target?apply(OriginalDate,void 0,rest):construct(OriginalDate,rest,new.target)}:function(...rest){return void 0===new.target?"Invalid Date":(0===rest.length&&(rest=[NaN]),construct(OriginalDate,rest,new.target))},defineProperties(ResultDate,{length:{value:7},prototype:{value:DatePrototype,writable:!1,enumerable:!1,configurable:!1},parse:{value:Date.parse,writable:!0,enumerable:!1,configurable:!0},UTC:{value:Date.UTC,writable:!0,enumerable:!1,configurable:!0}}),ResultDate},InitialDate=makeDateConstructor({powers:"original"}),SharedDate=makeDateConstructor({powers:"none"});return defineProperties(InitialDate,{now:{value:Date.now,writable:!0,enumerable:!1,configurable:!0}}),defineProperties(SharedDate,{now:{value:tamedMethods.now,writable:!0,enumerable:!1,configurable:!0}}),defineProperties(DatePrototype,{constructor:{value:SharedDate}}),{"%InitialDate%":InitialDate,"%SharedDate%":SharedDate}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,globalThis,getOwnPropertyDescriptor,defineProperty;function tameDomains(domainTaming="safe"){if("safe"!==domainTaming&&"unsafe"!==domainTaming)throw new TypeError(`unrecognized domainTaming ${domainTaming}`);if("unsafe"!==domainTaming&&"object"==typeof globalThis.process&&null!==globalThis.process){const domainDescriptor=getOwnPropertyDescriptor(globalThis.process,"domain");if(void 0!==domainDescriptor&&void 0!==domainDescriptor.get)throw new TypeError("SES failed to lockdown, Node.js domains have been initialized (SES_NO_DOMAINS)");defineProperty(globalThis.process,"domain",{value:null,configurable:!1,writable:!1,enumerable:!1})}}$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]]]]]),Object.defineProperty(tameDomains,"name",{value:"tameDomains"}),$h‍_once.tameDomains(tameDomains)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,SyntaxError,TypeError,defineProperties,getPrototypeOf,setPrototypeOf,freeze;$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["SyntaxError",[$h‍_a=>SyntaxError=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["setPrototypeOf",[$h‍_a=>setPrototypeOf=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]]]),$h‍_once.default((function(){try{FERAL_FUNCTION.prototype.constructor("return 1")}catch(ignore){return freeze({})}const newIntrinsics={};function repairFunction(name,intrinsicName,declaration){let FunctionInstance;try{FunctionInstance=(0,eval)(declaration)}catch(e){if(e instanceof SyntaxError)return;throw e}const FunctionPrototype=getPrototypeOf(FunctionInstance),InertConstructor=function(){throw new TypeError("Function.prototype.constructor is not a valid constructor.")};defineProperties(InertConstructor,{prototype:{value:FunctionPrototype},name:{value:name,writable:!1,enumerable:!1,configurable:!0}}),defineProperties(FunctionPrototype,{constructor:{value:InertConstructor}}),InertConstructor!==FERAL_FUNCTION.prototype.constructor&&setPrototypeOf(InertConstructor,FERAL_FUNCTION.prototype.constructor),newIntrinsics[intrinsicName]=InertConstructor}return repairFunction("Function","%InertFunction%","(function(){})"),repairFunction("GeneratorFunction","%InertGeneratorFunction%","(function*(){})"),repairFunction("AsyncFunction","%InertAsyncFunction%","(async function(){})"),repairFunction("AsyncGeneratorFunction","%InertAsyncGeneratorFunction%","(async function*(){})"),newIntrinsics}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let WeakSet,defineProperty,freeze,functionPrototype,functionToString,stringEndsWith,weaksetAdd,weaksetHas;$h‍_imports([["./commons.js",[["WeakSet",[$h‍_a=>WeakSet=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]],["functionPrototype",[$h‍_a=>functionPrototype=$h‍_a]],["functionToString",[$h‍_a=>functionToString=$h‍_a]],["stringEndsWith",[$h‍_a=>stringEndsWith=$h‍_a]],["weaksetAdd",[$h‍_a=>weaksetAdd=$h‍_a]],["weaksetHas",[$h‍_a=>weaksetHas=$h‍_a]]]]]);let markVirtualizedNativeFunction;$h‍_once.tameFunctionToString((()=>{if(void 0===markVirtualizedNativeFunction){const virtualizedNativeFunctions=new WeakSet;defineProperty(functionPrototype,"toString",{value:{toString(){const str=functionToString(this);return stringEndsWith(str,") { [native code] }")||!weaksetHas(virtualizedNativeFunctions,this)?str:`function ${this.name}() { [native code] }`}}.toString}),markVirtualizedNativeFunction=freeze((func=>weaksetAdd(virtualizedNativeFunctions,func)))}return markVirtualizedNativeFunction}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let TypeError,freeze;$h‍_imports([["./commons.js",[["TypeError",[$h‍_a=>TypeError=$h‍_a]],["freeze",[$h‍_a=>freeze=$h‍_a]]]]]);const tameHarden=(safeHarden,hardenTaming)=>{if("safe"!==hardenTaming&&"unsafe"!==hardenTaming)throw new TypeError(`unrecognized fakeHardenOption ${hardenTaming}`);if("safe"===hardenTaming)return safeHarden;if(Object.isExtensible=()=>!1,Object.isFrozen=()=>!0,Object.isSealed=()=>!0,Reflect.isExtensible=()=>!1,safeHarden.isFake)return safeHarden;const fakeHarden=arg=>arg;return fakeHarden.isFake=!0,freeze(fakeHarden)};$h‍_once.tameHarden(tameHarden),freeze(tameHarden)},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Number,String,TypeError,defineProperty,getOwnPropertyNames,isObject,regexpExec,assert;$h‍_imports([["./commons.js",[["Number",[$h‍_a=>Number=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["defineProperty",[$h‍_a=>defineProperty=$h‍_a]],["getOwnPropertyNames",[$h‍_a=>getOwnPropertyNames=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["regexpExec",[$h‍_a=>regexpExec=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]);const{Fail:Fail,quote:q}=assert,localePattern=/^(\w*[a-z])Locale([A-Z]\w*)$/,tamedMethods={localeCompare(arg){if(null==this)throw new TypeError('Cannot localeCompare with null or undefined "this" value');const s=`${this}`,that=`${arg}`;return sthat?1:(s===that||Fail`expected ${q(s)} and ${q(that)} to compare`,0)},toString(){return`${this}`}},nonLocaleCompare=tamedMethods.localeCompare,numberToString=tamedMethods.toString;$h‍_once.default((function(intrinsics,localeTaming="safe"){if("safe"!==localeTaming&&"unsafe"!==localeTaming)throw new TypeError(`unrecognized localeTaming ${localeTaming}`);if("unsafe"!==localeTaming){defineProperty(String.prototype,"localeCompare",{value:nonLocaleCompare});for(const intrinsicName of getOwnPropertyNames(intrinsics)){const intrinsic=intrinsics[intrinsicName];if(isObject(intrinsic))for(const methodName of getOwnPropertyNames(intrinsic)){const match=regexpExec(localePattern,methodName);if(match){"function"==typeof intrinsic[methodName]||Fail`expected ${q(methodName)} to be a function`;const nonLocaleMethodName=`${match[1]}${match[2]}`,method=intrinsic[nonLocaleMethodName];"function"==typeof method||Fail`function ${q(nonLocaleMethodName)} not found`,defineProperty(intrinsic,methodName,{value:method})}}}defineProperty(Number.prototype,"toLocaleString",{value:numberToString})}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Math,TypeError,create,getOwnPropertyDescriptors,objectPrototype;$h‍_imports([["./commons.js",[["Math",[$h‍_a=>Math=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["create",[$h‍_a=>create=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["objectPrototype",[$h‍_a=>objectPrototype=$h‍_a]]]]]),$h‍_once.default((function(mathTaming="safe"){if("safe"!==mathTaming&&"unsafe"!==mathTaming)throw new TypeError(`unrecognized mathTaming ${mathTaming}`);const originalMath=Math,initialMath=originalMath,{random:_,...otherDescriptors}=getOwnPropertyDescriptors(originalMath);return{"%InitialMath%":initialMath,"%SharedMath%":create(objectPrototype,otherDescriptors)}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_REG_EXP,TypeError,construct,defineProperties,getOwnPropertyDescriptor,speciesSymbol;$h‍_imports([["./commons.js",[["FERAL_REG_EXP",[$h‍_a=>FERAL_REG_EXP=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["construct",[$h‍_a=>construct=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["speciesSymbol",[$h‍_a=>speciesSymbol=$h‍_a]]]]]),$h‍_once.default((function(regExpTaming="safe"){if("safe"!==regExpTaming&&"unsafe"!==regExpTaming)throw new TypeError(`unrecognized regExpTaming ${regExpTaming}`);const RegExpPrototype=FERAL_REG_EXP.prototype,makeRegExpConstructor=(_={})=>{const ResultRegExp=function(...rest){return void 0===new.target?FERAL_REG_EXP(...rest):construct(FERAL_REG_EXP,rest,new.target)},speciesDesc=getOwnPropertyDescriptor(FERAL_REG_EXP,speciesSymbol);if(!speciesDesc)throw new TypeError("no RegExp[Symbol.species] descriptor");return defineProperties(ResultRegExp,{length:{value:2},prototype:{value:RegExpPrototype,writable:!1,enumerable:!1,configurable:!1},[speciesSymbol]:speciesDesc}),ResultRegExp},InitialRegExp=makeRegExpConstructor(),SharedRegExp=makeRegExpConstructor();return"unsafe"!==regExpTaming&&delete RegExpPrototype.compile,defineProperties(RegExpPrototype,{constructor:{value:SharedRegExp}}),{"%InitialRegExp%":InitialRegExp,"%SharedRegExp%":SharedRegExp}}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let Symbol,entries,fromEntries,getOwnPropertyDescriptors,defineProperties,arrayMap;$h‍_imports([["./commons.js",[["Symbol",[$h‍_a=>Symbol=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["fromEntries",[$h‍_a=>fromEntries=$h‍_a]],["getOwnPropertyDescriptors",[$h‍_a=>getOwnPropertyDescriptors=$h‍_a]],["defineProperties",[$h‍_a=>defineProperties=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]]]]]);$h‍_once.tameSymbolConstructor((()=>{const OriginalSymbol=Symbol,SymbolPrototype=OriginalSymbol.prototype,SharedSymbol=description=>OriginalSymbol(description);defineProperties(SymbolPrototype,{constructor:{value:SharedSymbol}});const originalDescsEntries=entries(getOwnPropertyDescriptors(OriginalSymbol)),descs=fromEntries(arrayMap(originalDescsEntries,(([name,desc])=>[name,{...desc,configurable:!0}])));return defineProperties(SharedSymbol,descs),SharedSymbol}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let whitelist,FunctionInstance,isAccessorPermit,Map,String,TypeError,arrayFilter,arrayIncludes,arrayMap,entries,getOwnPropertyDescriptor,getPrototypeOf,isObject,mapGet,objectHasOwnProperty,ownKeys,symbolKeyFor;$h‍_imports([["./whitelist.js",[["whitelist",[$h‍_a=>whitelist=$h‍_a]],["FunctionInstance",[$h‍_a=>FunctionInstance=$h‍_a]],["isAccessorPermit",[$h‍_a=>isAccessorPermit=$h‍_a]]]],["./commons.js",[["Map",[$h‍_a=>Map=$h‍_a]],["String",[$h‍_a=>String=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayIncludes",[$h‍_a=>arrayIncludes=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["entries",[$h‍_a=>entries=$h‍_a]],["getOwnPropertyDescriptor",[$h‍_a=>getOwnPropertyDescriptor=$h‍_a]],["getPrototypeOf",[$h‍_a=>getPrototypeOf=$h‍_a]],["isObject",[$h‍_a=>isObject=$h‍_a]],["mapGet",[$h‍_a=>mapGet=$h‍_a]],["objectHasOwnProperty",[$h‍_a=>objectHasOwnProperty=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["symbolKeyFor",[$h‍_a=>symbolKeyFor=$h‍_a]]]]]),$h‍_once.default((function(intrinsics,markVirtualizedNativeFunction){const primitives=["undefined","boolean","number","string","symbol"],wellKnownSymbolNames=new Map(intrinsics.Symbol?arrayMap(arrayFilter(entries(whitelist.Symbol),(([name,permit])=>"symbol"===permit&&"symbol"==typeof intrinsics.Symbol[name])),(([name])=>[intrinsics.Symbol[name],`@@${name}`])):[]);function asStringPropertyName(path,prop){if("string"==typeof prop)return prop;const wellKnownSymbol=mapGet(wellKnownSymbolNames,prop);if("symbol"==typeof prop){if(wellKnownSymbol)return wellKnownSymbol;{const registeredKey=symbolKeyFor(prop);return void 0!==registeredKey?`RegisteredSymbol(${registeredKey})`:`Unique${String(prop)}`}}throw new TypeError(`Unexpected property name type ${path} ${prop}`)}function isAllowedPropertyValue(path,value,prop,permit){if("object"==typeof permit)return visitProperties(path,value,permit),!0;if(!1===permit)return!1;if("string"==typeof permit)if("prototype"===prop||"constructor"===prop){if(objectHasOwnProperty(intrinsics,permit)){if(value!==intrinsics[permit])throw new TypeError(`Does not match whitelist ${path}`);return!0}}else if(arrayIncludes(primitives,permit)){if(typeof value!==permit)throw new TypeError(`At ${path} expected ${permit} not ${typeof value}`);return!0}throw new TypeError(`Unexpected whitelist permit ${permit} at ${path}`)}function isAllowedProperty(path,obj,prop,permit){const desc=getOwnPropertyDescriptor(obj,prop);if(!desc)throw new TypeError(`Property ${prop} not found at ${path}`);if(objectHasOwnProperty(desc,"value")){if(isAccessorPermit(permit))throw new TypeError(`Accessor expected at ${path}`);return isAllowedPropertyValue(path,desc.value,prop,permit)}if(!isAccessorPermit(permit))throw new TypeError(`Accessor not expected at ${path}`);return isAllowedPropertyValue(`${path}`,desc.get,prop,permit.get)&&isAllowedPropertyValue(`${path}`,desc.set,prop,permit.set)}function getSubPermit(obj,permit,prop){const permitProp="__proto__"===prop?"--proto--":prop;return objectHasOwnProperty(permit,permitProp)?permit[permitProp]:"function"==typeof obj&&(markVirtualizedNativeFunction(obj),objectHasOwnProperty(FunctionInstance,permitProp))?FunctionInstance[permitProp]:void 0}function visitProperties(path,obj,permit){if(void 0===obj)return;!function(path,obj,protoName){if(!isObject(obj))throw new TypeError(`Object expected: ${path}, ${obj}, ${protoName}`);const proto=getPrototypeOf(obj);if(null!==proto||null!==protoName){if(void 0!==protoName&&"string"!=typeof protoName)throw new TypeError(`Malformed whitelist permit ${path}.__proto__`);if(proto!==intrinsics[protoName||"%ObjectPrototype%"])throw new TypeError(`Unexpected intrinsic ${path}.__proto__ at ${protoName}`)}}(path,obj,permit["[[Proto]]"]);for(const prop of ownKeys(obj)){const propString=asStringPropertyName(path,prop),subPath=`${path}.${propString}`,subPermit=getSubPermit(obj,permit,propString);if(!subPermit||!isAllowedProperty(subPath,obj,prop,subPermit)){!1!==subPermit&&console.warn(`Removing ${subPath}`);try{delete obj[prop]}catch(err){if(prop in obj){if("function"==typeof obj&&"prototype"===prop&&(obj.prototype=void 0,void 0===obj.prototype)){console.warn(`Tolerating undeletable ${subPath} === undefined`);continue}console.error(`failed to delete ${subPath}`,err)}else console.error(`deleting ${subPath} threw`,err);throw err}}}}visitProperties("intrinsics",intrinsics,whitelist)}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let FERAL_FUNCTION,FERAL_EVAL,TypeError,arrayFilter,arrayMap,globalThis,is,ownKeys,stringSplit,noEvalEvaluate,enJoin,makeHardener,makeIntrinsicsCollector,whitelistIntrinsics,tameFunctionConstructors,tameDateConstructor,tameMathObject,tameRegExpConstructor,enablePropertyOverrides,tameLocaleMethods,setGlobalObjectConstantProperties,setGlobalObjectMutableProperties,setGlobalObjectEvaluators,makeSafeEvaluator,initialGlobalPropertyNames,tameFunctionToString,tameDomains,tameConsole,tameErrorConstructor,assert,makeAssert,makeEnvironmentCaptor,getAnonymousIntrinsics,makeCompartmentConstructor,tameHarden,tameSymbolConstructor;$h‍_imports([["./commons.js",[["FERAL_FUNCTION",[$h‍_a=>FERAL_FUNCTION=$h‍_a]],["FERAL_EVAL",[$h‍_a=>FERAL_EVAL=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["arrayFilter",[$h‍_a=>arrayFilter=$h‍_a]],["arrayMap",[$h‍_a=>arrayMap=$h‍_a]],["globalThis",[$h‍_a=>globalThis=$h‍_a]],["is",[$h‍_a=>is=$h‍_a]],["ownKeys",[$h‍_a=>ownKeys=$h‍_a]],["stringSplit",[$h‍_a=>stringSplit=$h‍_a]],["noEvalEvaluate",[$h‍_a=>noEvalEvaluate=$h‍_a]]]],["./error/stringify-utils.js",[["enJoin",[$h‍_a=>enJoin=$h‍_a]]]],["./make-hardener.js",[["makeHardener",[$h‍_a=>makeHardener=$h‍_a]]]],["./intrinsics.js",[["makeIntrinsicsCollector",[$h‍_a=>makeIntrinsicsCollector=$h‍_a]]]],["./whitelist-intrinsics.js",[["default",[$h‍_a=>whitelistIntrinsics=$h‍_a]]]],["./tame-function-constructors.js",[["default",[$h‍_a=>tameFunctionConstructors=$h‍_a]]]],["./tame-date-constructor.js",[["default",[$h‍_a=>tameDateConstructor=$h‍_a]]]],["./tame-math-object.js",[["default",[$h‍_a=>tameMathObject=$h‍_a]]]],["./tame-regexp-constructor.js",[["default",[$h‍_a=>tameRegExpConstructor=$h‍_a]]]],["./enable-property-overrides.js",[["default",[$h‍_a=>enablePropertyOverrides=$h‍_a]]]],["./tame-locale-methods.js",[["default",[$h‍_a=>tameLocaleMethods=$h‍_a]]]],["./global-object.js",[["setGlobalObjectConstantProperties",[$h‍_a=>setGlobalObjectConstantProperties=$h‍_a]],["setGlobalObjectMutableProperties",[$h‍_a=>setGlobalObjectMutableProperties=$h‍_a]],["setGlobalObjectEvaluators",[$h‍_a=>setGlobalObjectEvaluators=$h‍_a]]]],["./make-safe-evaluator.js",[["makeSafeEvaluator",[$h‍_a=>makeSafeEvaluator=$h‍_a]]]],["./whitelist.js",[["initialGlobalPropertyNames",[$h‍_a=>initialGlobalPropertyNames=$h‍_a]]]],["./tame-function-tostring.js",[["tameFunctionToString",[$h‍_a=>tameFunctionToString=$h‍_a]]]],["./tame-domains.js",[["tameDomains",[$h‍_a=>tameDomains=$h‍_a]]]],["./error/tame-console.js",[["tameConsole",[$h‍_a=>tameConsole=$h‍_a]]]],["./error/tame-error-constructor.js",[["default",[$h‍_a=>tameErrorConstructor=$h‍_a]]]],["./error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]],["makeAssert",[$h‍_a=>makeAssert=$h‍_a]]]],["./environment-options.js",[["makeEnvironmentCaptor",[$h‍_a=>makeEnvironmentCaptor=$h‍_a]]]],["./get-anonymous-intrinsics.js",[["getAnonymousIntrinsics",[$h‍_a=>getAnonymousIntrinsics=$h‍_a]]]],["./compartment-shim.js",[["makeCompartmentConstructor",[$h‍_a=>makeCompartmentConstructor=$h‍_a]]]],["./tame-harden.js",[["tameHarden",[$h‍_a=>tameHarden=$h‍_a]]]],["./tame-symbol-constructor.js",[["tameSymbolConstructor",[$h‍_a=>tameSymbolConstructor=$h‍_a]]]]]);const{Fail:Fail,details:d,quote:q}=assert;let priorLockdown;const safeHarden=makeHardener(),repairIntrinsics=(options={})=>{const{getEnvironmentOption:getenv,getCapturedEnvironmentOptionNames:getCapturedEnvironmentOptionNames}=makeEnvironmentCaptor(globalThis),{errorTaming:errorTaming=getenv("LOCKDOWN_ERROR_TAMING","safe"),errorTrapping:errorTrapping=getenv("LOCKDOWN_ERROR_TRAPPING","platform"),unhandledRejectionTrapping:unhandledRejectionTrapping=getenv("LOCKDOWN_UNHANDLED_REJECTION_TRAPPING","report"),regExpTaming:regExpTaming=getenv("LOCKDOWN_REGEXP_TAMING","safe"),localeTaming:localeTaming=getenv("LOCKDOWN_LOCALE_TAMING","safe"),consoleTaming:consoleTaming=getenv("LOCKDOWN_CONSOLE_TAMING","safe"),overrideTaming:overrideTaming=getenv("LOCKDOWN_OVERRIDE_TAMING","moderate"),stackFiltering:stackFiltering=getenv("LOCKDOWN_STACK_FILTERING","concise"),domainTaming:domainTaming=getenv("LOCKDOWN_DOMAIN_TAMING","safe"),evalTaming:evalTaming=getenv("LOCKDOWN_EVAL_TAMING","safeEval"),overrideDebug:overrideDebug=arrayFilter(stringSplit(getenv("LOCKDOWN_OVERRIDE_DEBUG",""),","),(debugName=>""!==debugName)),__hardenTaming__:__hardenTaming__=getenv("LOCKDOWN_HARDEN_TAMING","safe"),dateTaming:dateTaming="safe",mathTaming:mathTaming="safe",...extraOptions}=options,capturedEnvironmentOptionNames=getCapturedEnvironmentOptionNames();capturedEnvironmentOptionNames.length>0&&console.warn(`SES Lockdown using options from environment variables ${enJoin(arrayMap(capturedEnvironmentOptionNames,q),"and")}`),"unsafeEval"===evalTaming||"safeEval"===evalTaming||"noEval"===evalTaming||Fail`lockdown(): non supported option evalTaming: ${q(evalTaming)}`;const extraOptionsNames=ownKeys(extraOptions);0===extraOptionsNames.length||Fail`lockdown(): non supported option ${q(extraOptionsNames)}`,void 0===priorLockdown||assert.fail(d`Already locked down at ${priorLockdown} (SES_ALREADY_LOCKED_DOWN)`,TypeError),priorLockdown=new TypeError("Prior lockdown (SES_ALREADY_LOCKED_DOWN)"),priorLockdown.stack,(()=>{let allowed=!1;try{allowed=FERAL_FUNCTION("eval","SES_changed",' eval("SES_changed = true");\n return SES_changed;\n ')(FERAL_EVAL,!1),allowed||delete globalThis.SES_changed}catch(_error){allowed=!0}if(!allowed)throw new TypeError("SES cannot initialize unless 'eval' is the original intrinsic 'eval', suitable for direct-eval (dynamically scoped eval) (SES_DIRECT_EVAL)")})();if(globalThis.Function.prototype.constructor!==globalThis.Function&&"function"==typeof globalThis.harden&&"function"==typeof globalThis.lockdown&&globalThis.Date.prototype.constructor!==globalThis.Date&&"function"==typeof globalThis.Date.now&&is(globalThis.Date.prototype.constructor.now(),NaN))throw new TypeError("Already locked down but not by this SES instance (SES_MULTIPLE_INSTANCES)");tameDomains(domainTaming);const SharedSymbol=tameSymbolConstructor();globalThis.Symbol=SharedSymbol;const{addIntrinsics:addIntrinsics,completePrototypes:completePrototypes,finalIntrinsics:finalIntrinsics}=makeIntrinsicsCollector(),tamedHarden=tameHarden(safeHarden,__hardenTaming__);addIntrinsics({harden:tamedHarden}),addIntrinsics(tameFunctionConstructors()),addIntrinsics(tameDateConstructor(dateTaming)),addIntrinsics(tameErrorConstructor(errorTaming,stackFiltering)),addIntrinsics(tameMathObject(mathTaming)),addIntrinsics(tameRegExpConstructor(regExpTaming)),addIntrinsics(getAnonymousIntrinsics()),completePrototypes();const intrinsics=finalIntrinsics();let optGetStackString;"unsafe"!==errorTaming&&(optGetStackString=intrinsics["%InitialGetStackString%"]);const consoleRecord=tameConsole(consoleTaming,errorTrapping,unhandledRejectionTrapping,optGetStackString);globalThis.console=consoleRecord.console,"unsafe"===errorTaming&&globalThis.assert===assert&&(globalThis.assert=makeAssert(void 0,!0)),tameLocaleMethods(intrinsics,localeTaming);const markVirtualizedNativeFunction=tameFunctionToString();if(whitelistIntrinsics(intrinsics,markVirtualizedNativeFunction),setGlobalObjectConstantProperties(globalThis),setGlobalObjectMutableProperties(globalThis,{intrinsics:intrinsics,newGlobalPropertyNames:initialGlobalPropertyNames,makeCompartmentConstructor:makeCompartmentConstructor,markVirtualizedNativeFunction:markVirtualizedNativeFunction}),"noEval"===evalTaming)setGlobalObjectEvaluators(globalThis,noEvalEvaluate,markVirtualizedNativeFunction);else if("safeEval"===evalTaming){const{safeEvaluate:safeEvaluate}=makeSafeEvaluator({globalObject:globalThis});setGlobalObjectEvaluators(globalThis,safeEvaluate,markVirtualizedNativeFunction)}return function(){return enablePropertyOverrides(intrinsics,overrideTaming,overrideDebug),tamedHarden(intrinsics),globalThis.harden=tamedHarden,!0}};$h‍_once.repairIntrinsics(repairIntrinsics);$h‍_once.lockdown(((options={})=>{repairIntrinsics(options)()}))},({imports:$h‍_imports,liveVar:$h‍_live,onceVar:$h‍_once,importMeta:$h‍____meta})=>{let globalThis,TypeError,assign,tameFunctionToString,getGlobalIntrinsics,lockdown,makeCompartmentConstructor,assert;if($h‍_imports([["./src/commons.js",[["globalThis",[$h‍_a=>globalThis=$h‍_a]],["TypeError",[$h‍_a=>TypeError=$h‍_a]],["assign",[$h‍_a=>assign=$h‍_a]]]],["./src/tame-function-tostring.js",[["tameFunctionToString",[$h‍_a=>tameFunctionToString=$h‍_a]]]],["./src/intrinsics.js",[["getGlobalIntrinsics",[$h‍_a=>getGlobalIntrinsics=$h‍_a]]]],["./src/lockdown-shim.js",[["lockdown",[$h‍_a=>lockdown=$h‍_a]]]],["./src/compartment-shim.js",[["makeCompartmentConstructor",[$h‍_a=>makeCompartmentConstructor=$h‍_a]]]],["./src/error/assert.js",[["assert",[$h‍_a=>assert=$h‍_a]]]]]),function(){return this}())throw new TypeError("SES failed to initialize, sloppy mode (SES_NO_SLOPPY)");const markVirtualizedNativeFunction=tameFunctionToString(),Compartment=makeCompartmentConstructor(makeCompartmentConstructor,getGlobalIntrinsics(globalThis),markVirtualizedNativeFunction);assign(globalThis,{lockdown:lockdown,Compartment:Compartment,assert:assert})}],cell=(name,value=undefined)=>{const observers=[];return Object.freeze({get:Object.freeze((()=>value)),set:Object.freeze((newValue=>{value=newValue;for(const observe of observers)observe(value)})),observe:Object.freeze((observe=>{observers.push(observe),observe(value)})),enumerable:!0})},cells=[{globalThis:cell(),Array:cell(),Date:cell(),FinalizationRegistry:cell(),Float32Array:cell(),JSON:cell(),Map:cell(),Math:cell(),Number:cell(),Object:cell(),Promise:cell(),Proxy:cell(),Reflect:cell(),FERAL_REG_EXP:cell(),Set:cell(),String:cell(),Symbol:cell(),WeakMap:cell(),WeakSet:cell(),FERAL_ERROR:cell(),RangeError:cell(),ReferenceError:cell(),SyntaxError:cell(),TypeError:cell(),assign:cell(),create:cell(),defineProperties:cell(),entries:cell(),freeze:cell(),getOwnPropertyDescriptor:cell(),getOwnPropertyDescriptors:cell(),getOwnPropertyNames:cell(),getPrototypeOf:cell(),is:cell(),isFrozen:cell(),isSealed:cell(),isExtensible:cell(),keys:cell(),objectPrototype:cell(),seal:cell(),preventExtensions:cell(),setPrototypeOf:cell(),values:cell(),fromEntries:cell(),speciesSymbol:cell(),toStringTagSymbol:cell(),iteratorSymbol:cell(),matchAllSymbol:cell(),unscopablesSymbol:cell(),symbolKeyFor:cell(),symbolFor:cell(),isInteger:cell(),stringifyJson:cell(),defineProperty:cell(),apply:cell(),construct:cell(),reflectGet:cell(),reflectGetOwnPropertyDescriptor:cell(),reflectHas:cell(),reflectIsExtensible:cell(),ownKeys:cell(),reflectPreventExtensions:cell(),reflectSet:cell(),isArray:cell(),arrayPrototype:cell(),mapPrototype:cell(),proxyRevocable:cell(),regexpPrototype:cell(),setPrototype:cell(),stringPrototype:cell(),weakmapPrototype:cell(),weaksetPrototype:cell(),functionPrototype:cell(),promisePrototype:cell(),typedArrayPrototype:cell(),uncurryThis:cell(),objectHasOwnProperty:cell(),arrayFilter:cell(),arrayForEach:cell(),arrayIncludes:cell(),arrayJoin:cell(),arrayMap:cell(),arrayPop:cell(),arrayPush:cell(),arraySlice:cell(),arraySome:cell(),arraySort:cell(),iterateArray:cell(),mapSet:cell(),mapGet:cell(),mapHas:cell(),mapDelete:cell(),mapEntries:cell(),iterateMap:cell(),setAdd:cell(),setDelete:cell(),setForEach:cell(),setHas:cell(),iterateSet:cell(),regexpTest:cell(),regexpExec:cell(),matchAllRegExp:cell(),stringEndsWith:cell(),stringIncludes:cell(),stringIndexOf:cell(),stringMatch:cell(),stringReplace:cell(),stringSearch:cell(),stringSlice:cell(),stringSplit:cell(),stringStartsWith:cell(),iterateString:cell(),weakmapDelete:cell(),weakmapGet:cell(),weakmapHas:cell(),weakmapSet:cell(),weaksetAdd:cell(),weaksetHas:cell(),functionToString:cell(),promiseAll:cell(),promiseCatch:cell(),promiseThen:cell(),finalizationRegistryRegister:cell(),finalizationRegistryUnregister:cell(),getConstructorOf:cell(),immutableObject:cell(),isObject:cell(),isError:cell(),FERAL_EVAL:cell(),FERAL_FUNCTION:cell(),noEvalEvaluate:cell()},{},{makeLRUCacheMap:cell(),makeNoteLogArgsArrayKit:cell()},{an:cell(),bestEffortStringify:cell(),enJoin:cell()},{},{unredactedDetails:cell(),loggedErrorHandler:cell(),makeAssert:cell(),assert:cell()},{makeEvalScopeKit:cell()},{isValidIdentifierName:cell(),getScopeConstants:cell()},{makeEvaluate:cell()},{alwaysThrowHandler:cell(),strictScopeTerminatorHandler:cell(),strictScopeTerminator:cell()},{createSloppyGlobalsScopeTerminator:cell()},{getSourceURL:cell()},{rejectHtmlComments:cell(),evadeHtmlCommentTest:cell(),rejectImportExpressions:cell(),evadeImportExpressionTest:cell(),rejectSomeDirectEvalExpressions:cell(),mandatoryTransforms:cell(),applyTransforms:cell(),transforms:cell()},{makeSafeEvaluator:cell()},{provideCompartmentEvaluator:cell(),compartmentEvaluate:cell()},{makeEvalFunction:cell()},{makeFunctionConstructor:cell()},{constantProperties:cell(),universalPropertyNames:cell(),initialGlobalPropertyNames:cell(),sharedGlobalPropertyNames:cell(),uniqueGlobalPropertyNames:cell(),NativeErrors:cell(),FunctionInstance:cell(),isAccessorPermit:cell(),whitelist:cell()},{setGlobalObjectSymbolUnscopables:cell(),setGlobalObjectConstantProperties:cell(),setGlobalObjectMutableProperties:cell(),setGlobalObjectEvaluators:cell()},{makeAlias:cell(),load:cell()},{deferExports:cell(),getDeferredExports:cell()},{makeThirdPartyModuleInstance:cell(),makeModuleInstance:cell()},{link:cell(),instantiate:cell()},{InertCompartment:cell(),CompartmentPrototype:cell(),makeCompartmentConstructor:cell()},{makeIntrinsicsCollector:cell(),getGlobalIntrinsics:cell()},{minEnablements:cell(),moderateEnablements:cell(),severeEnablements:cell()},{default:cell()},{makeEnvironmentCaptor:cell()},{makeLoggingConsoleKit:cell(),makeCausalConsole:cell(),filterConsole:cell(),consoleWhitelist:cell()},{makeRejectionHandlers:cell()},{tameConsole:cell()},{filterFileName:cell(),shortenCallSiteString:cell(),tameV8ErrorConstructor:cell()},{default:cell()},{getAnonymousIntrinsics:cell()},{isTypedArray:cell(),makeHardener:cell()},{default:cell()},{tameDomains:cell()},{default:cell()},{tameFunctionToString:cell()},{tameHarden:cell()},{default:cell()},{default:cell()},{default:cell()},{tameSymbolConstructor:cell()},{default:cell()},{repairIntrinsics:cell(),lockdown:cell()},{}],namespaces=cells.map((cells=>Object.freeze(Object.create(null,cells))));for(let index=0;index { + + tameDomains(domainTaming); + ++ const SharedSymbol = tameSymbolConstructor(); ++ // Must happen before `makeIntrinsicsCollector()` ++ globalThis.Symbol = SharedSymbol; ++ + const { addIntrinsics, completePrototypes, finalIntrinsics } = + makeIntrinsicsCollector(); + +diff --git a/node_modules/ses/src/tame-symbol-constructor.js b/node_modules/ses/src/tame-symbol-constructor.js +new file mode 100644 +index 0000000..f09f474 +--- /dev/null ++++ b/node_modules/ses/src/tame-symbol-constructor.js +@@ -0,0 +1,62 @@ ++import { ++ Symbol, ++ entries, ++ fromEntries, ++ getOwnPropertyDescriptors, ++ defineProperties, ++ arrayMap, ++} from './commons.js'; ++ ++/** ++ * This taming replaces the original `Symbol` constructor with one that seems ++ * identical, except that all its properties are "temporarily" configurable. ++ * This assumes two succeeding phases of processing: A whitelisting phase, that ++ * removes all properties not on the whitelist (which requires them to be ++ * configurable) and a global hardening step that freezes all primordials, ++ * returning these properties to their non-configurable status. ++ * ++ * However, the ses shim is constructed to enable vetter shims to run between ++ * repair and global hardening. Such vetter shims will see the replacement ++ * `Symbol` constructor with any "extra" properties that the whitelisting will ++ * remove, and with the well-known-symbol properties being configurable, in ++ * violation of the JavaScript spec. ++ * ++ * Note that the spec refers to the global `Symbol` function as the ++ * ["Symbol Constructor"](https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-symbol-constructor) ++ * even though it has a call behavior (can be called as a function) and does not ++ * not have a construct behavior (cannot be called with `new`). Accordingly, ++ * to tame it, we must replace it with a function without a construct ++ * behavior. ++ * ++ * @returns {SymbolConstructor} ++ */ ++export const tameSymbolConstructor = () => { ++ const OriginalSymbol = Symbol; ++ const SymbolPrototype = OriginalSymbol.prototype; ++ ++ const SharedSymbol = { ++ Symbol(description) { ++ return OriginalSymbol(description); ++ }, ++ }.Symbol; ++ ++ defineProperties(SymbolPrototype, { ++ constructor: { ++ value: SharedSymbol, ++ // leave other `constructor` attributes as is ++ }, ++ }); ++ ++ const originalDescsEntries = entries( ++ getOwnPropertyDescriptors(OriginalSymbol), ++ ); ++ const descs = fromEntries( ++ arrayMap(originalDescsEntries, ([name, desc]) => [ ++ name, ++ { ...desc, configurable: true }, ++ ]), ++ ); ++ defineProperties(SharedSymbol, descs); ++ ++ return /** @type {SymbolConstructor} */ (SharedSymbol); ++}; From a1a75a0e1fc32975227e6c09279d44714844c5e7 Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Fri, 16 Jun 2023 10:31:39 -0700 Subject: [PATCH 05/39] refactor: OfferMaker takes agoricNames --- packages/agoric-cli/src/commands/psm.js | 2 +- packages/agoric-cli/src/commands/reserve.js | 2 +- packages/agoric-cli/src/commands/vaults.js | 6 +-- packages/inter-protocol/src/clientSupport.js | 50 ++++++++++--------- packages/smart-wallet/src/types.d.ts | 12 ++++- packages/vats/test/bootstrapTests/drivers.js | 8 +-- .../test/bootstrapTests/test-liquidation-1.js | 2 +- .../bootstrapTests/test-liquidation-2b.js | 2 +- 8 files changed, 48 insertions(+), 36 deletions(-) diff --git a/packages/agoric-cli/src/commands/psm.js b/packages/agoric-cli/src/commands/psm.js index c5f2e6db448..f8ddaeaf7b2 100644 --- a/packages/agoric-cli/src/commands/psm.js +++ b/packages/agoric-cli/src/commands/psm.js @@ -159,7 +159,7 @@ export const makePsmCommand = logger => { console.warn('running with options', opts); const { agoricNames, lookupPsmInstance } = await rpcTools(); const instance = await lookupPsmInstance(opts.pair); - const offer = Offers.psm.swap(instance, agoricNames.brand, opts); + const offer = Offers.psm.swap(agoricNames, instance, opts); outputExecuteOfferAction(offer); }); diff --git a/packages/agoric-cli/src/commands/reserve.js b/packages/agoric-cli/src/commands/reserve.js index 81401a3fb2b..c4583ce26fa 100644 --- a/packages/agoric-cli/src/commands/reserve.js +++ b/packages/agoric-cli/src/commands/reserve.js @@ -32,7 +32,7 @@ export const makeReserveCommand = (_logger, io = {}) => { async ({ collateralBrand, ...opts }) => { const { agoricNames } = await makeRpcUtils({ fetch }); - const offer = Offers.reserve.AddCollateral(agoricNames.brand, { + const offer = Offers.reserve.AddCollateral(agoricNames, { collateralBrandKey: collateralBrand, ...opts, }); diff --git a/packages/agoric-cli/src/commands/vaults.js b/packages/agoric-cli/src/commands/vaults.js index e8ae5af12d7..d2e746a1f92 100644 --- a/packages/agoric-cli/src/commands/vaults.js +++ b/packages/agoric-cli/src/commands/vaults.js @@ -65,7 +65,7 @@ export const makeVaultsCommand = logger => { logger.warn('running with options', opts); const { agoricNames } = await makeRpcUtils({ fetch }); - const offer = Offers.vaults.OpenVault(agoricNames.brand, { + const offer = Offers.vaults.OpenVault(agoricNames, { giveCollateral: opts.giveCollateral, wantMinted: opts.wantMinted, offerId: opts.offerId, @@ -106,7 +106,7 @@ export const makeVaultsCommand = logger => { ); const offer = Offers.vaults.AdjustBalances( - agoricNames.brand, + agoricNames, { giveCollateral: opts.giveCollateral, wantCollateral: opts.wantCollateral, @@ -147,7 +147,7 @@ export const makeVaultsCommand = logger => { ); const offer = Offers.vaults.CloseVault( - agoricNames.brand, + agoricNames, { giveMinted: opts.giveMinted, offerId: opts.offerId, diff --git a/packages/inter-protocol/src/clientSupport.js b/packages/inter-protocol/src/clientSupport.js index 49024f12646..204c5aee785 100644 --- a/packages/inter-protocol/src/clientSupport.js +++ b/packages/inter-protocol/src/clientSupport.js @@ -9,29 +9,31 @@ import { parseRatio } from '@agoric/zoe/src/contractSupport/ratio.js'; const COSMOS_UNIT = 1_000_000n; const scaleDecimals = num => BigInt(num * Number(COSMOS_UNIT)); +// TODO use '@satisfies" in TS 5.1 to make sure these each conform to OfferMaker interface + // NB: not really a Proposal because the brands are not remotes // Instead they're copyRecord like "{"boardId":"board0257","iface":"Alleged: IST brand"}" to pass through the boardId // mustMatch(harden(proposal), ProposalShape); /** * Give/want * - * @param {Record} brands + * @param {Pick} agoricNames * @param {{ giveMinted?: number, wantMinted?: number } | { collateralBrandKey: string, giveCollateral?: number, wantCollateral?: number }} opts * @returns {Proposal} */ -const makeVaultProposal = (brands, opts) => { +const makeVaultProposal = ({ brand }, opts) => { const proposal = { give: {}, want: {} }; if ('giveCollateral' in opts && opts.giveCollateral) { const { collateralBrandKey } = opts; proposal.give.Collateral = { - brand: brands[collateralBrandKey], + brand: brand[collateralBrandKey], value: scaleDecimals(opts.giveCollateral), }; } if ('giveMinted' in opts && opts.giveMinted) { proposal.give.Minted = { - brand: brands.IST, + brand: brand.IST, value: scaleDecimals(opts.giveMinted), }; } @@ -39,13 +41,13 @@ const makeVaultProposal = (brands, opts) => { if ('wantCollateral' in opts && opts.wantCollateral) { const { collateralBrandKey } = opts; proposal.want.Collateral = { - brand: brands[collateralBrandKey], + brand: brand[collateralBrandKey], value: scaleDecimals(opts.wantCollateral), }; } if ('wantMinted' in opts && opts.wantMinted) { proposal.want.Minted = { - brand: brands.IST, + brand: brand.IST, value: scaleDecimals(opts.wantMinted), }; } @@ -54,18 +56,18 @@ const makeVaultProposal = (brands, opts) => { }; /** - * @param {Record} brands + * @param {Pick} agoricNames * @param {{ offerId: string, wantMinted: number, giveCollateral: number, collateralBrandKey: string }} opts * @returns {import('@agoric/smart-wallet/src/offers.js').OfferSpec} */ -const makeOpenOffer = (brands, opts) => { - const proposal = makeVaultProposal(brands, opts); +const makeOpenOffer = ({ brand }, opts) => { + const proposal = makeVaultProposal({ brand }, opts); // NB: not really a Proposal because the brands are not remotes // Instead they're copyRecord like "{"boardId":"board0257","iface":"Alleged: IST brand"}" to pass through the boardId // mustMatch(harden(proposal), ProposalShape); - const collateralBrand = brands[opts.collateralBrandKey]; + const collateralBrand = brand[opts.collateralBrandKey]; return { id: opts.offerId, @@ -82,16 +84,16 @@ const makeOpenOffer = (brands, opts) => { }; /** - * @param {Record} brands + * @param {Pick} agoricNames * @param {{ offerId: string, collateralBrandKey?: string, giveCollateral?: number, wantCollateral?: number, giveMinted?: number, wantMinted?: number }} opts * @param {string} previousOffer * @returns {import('@agoric/smart-wallet/src/offers.js').OfferSpec} */ -const makeAdjustOffer = (brands, opts, previousOffer) => { +const makeAdjustOffer = ({ brand }, opts, previousOffer) => { // NB: not really a Proposal because the brands are not remotes // Instead they're copyRecord like "{"boardId":"board0257","iface":"Alleged: IST brand"}" to pass through the boardId // mustMatch(harden(proposal), ProposalShape); - const proposal = makeVaultProposal(brands, opts); + const proposal = makeVaultProposal({ brand }, opts); return { id: opts.offerId, @@ -105,13 +107,13 @@ const makeAdjustOffer = (brands, opts, previousOffer) => { }; /** - * @param {Record} brands + * @param {Pick} agoricNames * @param {{ offerId: string, collateralBrandKey?: string, giveMinted: number }} opts * @param {string} previousOffer * @returns {import('@agoric/smart-wallet/src/offers.js').OfferSpec} */ -const makeCloseOffer = (brands, opts, previousOffer) => { - const proposal = makeVaultProposal(brands, opts); +const makeCloseOffer = ({ brand }, opts, previousOffer) => { + const proposal = makeVaultProposal({ brand }, opts); return { id: opts.offerId, @@ -171,19 +173,19 @@ const makePsmProposal = (brands, opts, fee = 0, anchor = 'AUSD') => { }; /** + * @param {Pick} agoricNames * @param {Instance} instance - * @param {Record} brands * @param {{ offerId: string, feePct?: number, pair: [string, string] } & * ({ wantMinted: number } | { giveMinted: number })} opts * @returns {import('@agoric/smart-wallet/src/offers.js').OfferSpec} */ -const makePsmSwapOffer = (instance, brands, opts) => { +const makePsmSwapOffer = ({ brand }, instance, opts) => { const method = 'wantMinted' in opts ? 'makeWantMintedInvitation' : 'makeGiveMintedInvitation'; // ref psm.js const proposal = makePsmProposal( - brands, + brand, opts, opts.feePct ? opts.feePct / 100 : undefined, opts.pair[1], @@ -276,7 +278,7 @@ const makeBidOffer = (_brands, opts) => { }; /** - * @param {Record} brands + * @param {Pick} agoricNames * @param {{ * offerId: string, * give: number, @@ -284,11 +286,11 @@ const makeBidOffer = (_brands, opts) => { * }} opts * @returns {import('@agoric/smart-wallet/src/offers.js').OfferSpec} */ -const makeAddCollateralOffer = (brands, opts) => { +const makeAddCollateralOffer = ({ brand }, opts) => { /** @type {AmountKeywordRecord} */ const give = { Collateral: AmountMath.make( - brands[opts.collateralBrandKey], + brand[opts.collateralBrandKey], scaleDecimals(opts.give), ), }; @@ -308,7 +310,7 @@ const makeAddCollateralOffer = (brands, opts) => { /** * - * @param {Record} _brands + * @param {unknown} _agoricNames * @param {{ * offerId: string, * roundId?: bigint, @@ -317,7 +319,7 @@ const makeAddCollateralOffer = (brands, opts) => { * @param {string} previousOffer * @returns {import('@agoric/smart-wallet/src/offers.js').OfferSpec} */ -const makePushPriceOffer = (_brands, opts, previousOffer) => { +const makePushPriceOffer = (_agoricNames, opts, previousOffer) => { return { id: opts.offerId, invitationSpec: { diff --git a/packages/smart-wallet/src/types.d.ts b/packages/smart-wallet/src/types.d.ts index 576283999d4..6985288e42b 100644 --- a/packages/smart-wallet/src/types.d.ts +++ b/packages/smart-wallet/src/types.d.ts @@ -5,9 +5,11 @@ * Downside is it can't reference any ambient types, which most of agoric-sdk type are presently. */ -import { ERef, FarRef } from '@endo/far'; +import type { ERef, FarRef } from '@endo/far'; import type { CapData } from '@endo/marshal'; import type { MsgWalletSpendAction } from '@agoric/cosmic-proto/swingset/msgs'; +import type { AgoricNamesRemotes } from '@agoric/vats/tools/board-utils.js'; +import type { OfferSpec } from './offers.js'; declare const CapDataShape: unique symbol; @@ -74,3 +76,11 @@ export type WalletSpendActionMsg = { * the sending of the message (as is the case for WALLET_SPEND_ACTION). */ export type WalletBridgeMsg = WalletActionMsg | WalletSpendActionMsg; + +/** + * Used for clientSupport helpers + */ +export type OfferMaker = ( + agoricNames: AgoricNamesRemotes, + ...rest: any[] +) => OfferSpec; diff --git a/packages/vats/test/bootstrapTests/drivers.js b/packages/vats/test/bootstrapTests/drivers.js index aa2824d8519..178268ad73f 100644 --- a/packages/vats/test/bootstrapTests/drivers.js +++ b/packages/vats/test/bootstrapTests/drivers.js @@ -76,25 +76,25 @@ export const makeWalletFactoryDriver = async ( return EV(walletPresence).handleBridgeAction(capData, true); }, /** - * @template {(brands: Record, ...rest: any) => import('@agoric/smart-wallet/src/offers.js').OfferSpec} M offer maker function + * @template {import('@agoric/smart-wallet/src/types.js').OfferMaker} M offer maker function * @param {M} makeOffer * @param {Parameters[1]} firstArg * @param {Parameters[2]} [secondArg] * @returns {Promise} */ executeOfferMaker(makeOffer, firstArg, secondArg) { - const offer = makeOffer(agoricNamesRemotes.brand, firstArg, secondArg); + const offer = makeOffer(agoricNamesRemotes, firstArg, secondArg); return this.executeOffer(offer); }, /** - * @template {(brands: Record, ...rest: any) => import('@agoric/smart-wallet/src/offers.js').OfferSpec} M offer maker function + * @template {import('@agoric/smart-wallet/src/types.js').OfferMaker} M offer maker function * @param {M} makeOffer * @param {Parameters[1]} firstArg * @param {Parameters[2]} [secondArg] * @returns {Promise} */ sendOfferMaker(makeOffer, firstArg, secondArg) { - const offer = makeOffer(agoricNamesRemotes.brand, firstArg, secondArg); + const offer = makeOffer(agoricNamesRemotes, firstArg, secondArg); return this.sendOffer(offer); }, diff --git a/packages/vats/test/bootstrapTests/test-liquidation-1.js b/packages/vats/test/bootstrapTests/test-liquidation-1.js index 35c0f5df2f2..1c4b6acb5e1 100644 --- a/packages/vats/test/bootstrapTests/test-liquidation-1.js +++ b/packages/vats/test/bootstrapTests/test-liquidation-1.js @@ -178,8 +178,8 @@ test.serial('scenario: Flow 1', async t => { const parseAmount = makeParseAmount(agoricNamesRemotes, Error); await buyer.sendOffer( Offers.psm.swap( + agoricNamesRemotes, agoricNamesRemotes.instance['psm-IST-USDC_axl'], - agoricNamesRemotes.brand, { offerId: 'print-ist', wantMinted: 1_000, diff --git a/packages/vats/test/bootstrapTests/test-liquidation-2b.js b/packages/vats/test/bootstrapTests/test-liquidation-2b.js index 2727c4ac5c2..57a793386c9 100644 --- a/packages/vats/test/bootstrapTests/test-liquidation-2b.js +++ b/packages/vats/test/bootstrapTests/test-liquidation-2b.js @@ -169,8 +169,8 @@ test.serial('scenario: Flow 2b', async t => { const parseAmount = makeParseAmount(agoricNamesRemotes, Error); await buyer.sendOffer( Offers.psm.swap( + agoricNamesRemotes, agoricNamesRemotes.instance['psm-IST-USDC_axl'], - agoricNamesRemotes.brand, { offerId: 'print-ist', wantMinted: 1_000, From 7ae9ebc796f9e3a73428fe4d48c5a22cbe26141c Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Mon, 22 May 2023 13:36:46 -0700 Subject: [PATCH 06/39] refactor(clientSupport): move makeParseAmount --- packages/agoric-cli/src/commands/inter.js | 6 +- packages/agoric-cli/src/lib/wallet.js | 42 ---------- packages/inter-protocol/src/clientSupport.js | 83 +++++++++---------- .../inter-protocol/test/test-clientSupport.js | 2 +- 4 files changed, 46 insertions(+), 87 deletions(-) diff --git a/packages/agoric-cli/src/commands/inter.js b/packages/agoric-cli/src/commands/inter.js index e59c7aa264c..fd52faed2c1 100644 --- a/packages/agoric-cli/src/commands/inter.js +++ b/packages/agoric-cli/src/commands/inter.js @@ -7,7 +7,10 @@ import { CommanderError, InvalidArgumentError } from 'commander'; // TODO: should get M from endo https://github.com/Agoric/agoric-sdk/issues/7090 import { makeOfferSpecShape } from '@agoric/inter-protocol/src/auction/auctionBook.js'; -import { Offers } from '@agoric/inter-protocol/src/clientSupport.js'; +import { + Offers, + makeParseAmount, +} from '@agoric/inter-protocol/src/clientSupport.js'; import { objectMap } from '@agoric/internal'; import { M, matches } from '@agoric/store'; @@ -25,7 +28,6 @@ import { import { getNetworkConfig } from '../lib/rpc.js'; import { getCurrent, - makeParseAmount, makeWalletUtils, outputActionAndHint, sendAction, diff --git a/packages/agoric-cli/src/lib/wallet.js b/packages/agoric-cli/src/lib/wallet.js index cead748b198..d37188f9c5b 100644 --- a/packages/agoric-cli/src/lib/wallet.js +++ b/packages/agoric-cli/src/lib/wallet.js @@ -9,7 +9,6 @@ import { boardSlottingMarshaller, makeRpcUtils } from './rpc.js'; /** @typedef {import('@agoric/smart-wallet/src/smartWallet.js').CurrentWalletRecord} CurrentWalletRecord */ /** @typedef {import('@agoric/vats/tools/board-utils.js').AgoricNamesRemotes} AgoricNamesRemotes */ -const { values } = Object; const { Fail } = assert; const marshaller = boardSlottingMarshaller(); @@ -272,44 +271,3 @@ export const makeWalletUtils = async ( pollOffer, }; }; - -/** - * @param {{ - * brand: Record, - * vbankAsset: Record, - * }} agoricNames - * @param {(msg: string) => Error} makeError error constructor - * @returns {(a: string) => Amount<'nat'>} - */ -export const makeParseAmount = - (agoricNames, makeError = msg => RangeError(msg)) => - opt => { - assert.typeof(opt, 'string', 'parseAmount expected string'); - const m = opt.match(/^(?[\d_]+(\.[\d_]+)?)(?[A-Z]\w*?)$/); - if (!m || !m.groups) { - throw makeError(`invalid amount: ${opt}`); - } - const anyBrand = agoricNames.brand[m.groups.brand]; - if (!anyBrand) { - throw makeError(`unknown brand: ${m.groups.brand}`); - } - const assetDesc = values(agoricNames.vbankAsset).find( - d => d.brand === anyBrand, - ); - if (!assetDesc) { - throw makeError(`unknown brand: ${m.groups.brand}`); - } - const { displayInfo } = assetDesc; - if (!displayInfo.decimalPlaces || displayInfo.assetKind !== 'nat') { - throw makeError(`bad brand: ${displayInfo}`); - } - const value = BigInt( - Number(m.groups.value.replace(/_/g, '')) * - 10 ** displayInfo.decimalPlaces, - ); - /** @type {Brand<'nat'>} */ - // @ts-expect-error dynamic cast - const natBrand = anyBrand; - const amt = { value, brand: natBrand }; - return amt; - }; diff --git a/packages/inter-protocol/src/clientSupport.js b/packages/inter-protocol/src/clientSupport.js index 204c5aee785..d618cb3355e 100644 --- a/packages/inter-protocol/src/clientSupport.js +++ b/packages/inter-protocol/src/clientSupport.js @@ -206,6 +206,47 @@ const makePsmSwapOffer = ({ brand }, instance, opts) => { }; }; +/** + * @param {{ + * brand: Record, + * vbankAsset: Record, + * }} agoricNames + * @param {(msg: string) => Error} makeError error constructor + * @returns {(a: string) => Amount<'nat'>} + */ +export const makeParseAmount = + (agoricNames, makeError = msg => RangeError(msg)) => + opt => { + assert.typeof(opt, 'string', 'parseAmount expected string'); + const m = opt.match(/^(?[\d_]+(\.[\d_]+)?)(?[A-Z]\w*?)$/); + if (!m || !m.groups) { + throw makeError(`invalid amount: ${opt}`); + } + const anyBrand = agoricNames.brand[m.groups.brand]; + if (!anyBrand) { + throw makeError(`unknown brand: ${m.groups.brand}`); + } + const assetDesc = Object.values(agoricNames.vbankAsset).find( + d => d.brand === anyBrand, + ); + if (!assetDesc) { + throw makeError(`unknown brand: ${m.groups.brand}`); + } + const { displayInfo } = assetDesc; + if (!displayInfo.decimalPlaces || displayInfo.assetKind !== 'nat') { + throw makeError(`bad brand: ${displayInfo}`); + } + const value = BigInt( + Number(m.groups.value.replace(/_/g, '')) * + 10 ** displayInfo.decimalPlaces, + ); + /** @type {Brand<'nat'>} */ + // @ts-expect-error dynamic cast + const natBrand = anyBrand; + const amt = { value, brand: natBrand }; + return amt; + }; + /** * @param {Record} _brands * @param {{ @@ -334,48 +375,6 @@ const makePushPriceOffer = (_agoricNames, opts, previousOffer) => { }; }; -// TODO DRY with CLI wallet.js -/** - * @param {{ - * brand: Record, - * vbankAsset: Record, - * }} agoricNames - * @param {(msg: string) => Error} makeError error constructor - * @returns {(a: string) => Amount<'nat'>} - */ -export const makeParseAmount = - (agoricNames, makeError = msg => RangeError(msg)) => - opt => { - assert.typeof(opt, 'string', 'parseAmount expected string'); - const m = opt.match(/^(?[\d_]+(\.[\d_]+)?)(?[A-Z]\w*?)$/); - if (!m || !m.groups) { - throw makeError(`invalid amount: ${opt}`); - } - const anyBrand = agoricNames.brand[m.groups.brand]; - if (!anyBrand) { - throw makeError(`unknown brand: ${m.groups.brand}`); - } - const assetDesc = Object.values(agoricNames.vbankAsset).find( - d => d.brand === anyBrand, - ); - if (!assetDesc) { - throw makeError(`unknown brand: ${m.groups.brand}`); - } - const { displayInfo } = assetDesc; - if (!displayInfo.decimalPlaces || displayInfo.assetKind !== 'nat') { - throw makeError(`bad brand: ${displayInfo}`); - } - const value = BigInt( - Number(m.groups.value.replace(/_/g, '')) * - 10 ** displayInfo.decimalPlaces, - ); - /** @type {Brand<'nat'>} */ - // @ts-expect-error dynamic cast - const natBrand = anyBrand; - const amt = { value, brand: natBrand }; - return amt; - }; - export const Offers = { auction: { Bid: makeBidOffer, diff --git a/packages/inter-protocol/test/test-clientSupport.js b/packages/inter-protocol/test/test-clientSupport.js index c8586afb481..34432f17ece 100644 --- a/packages/inter-protocol/test/test-clientSupport.js +++ b/packages/inter-protocol/test/test-clientSupport.js @@ -2,8 +2,8 @@ import { test } from '@agoric/zoe/tools/prepare-test-env-ava.js'; import { makeIssuerKit } from '@agoric/ertp'; import { makeRatio } from '@agoric/zoe/src/contractSupport/ratio.js'; -import { withAmountUtils } from './supports.js'; import { makeParseAmount, Offers } from '../src/clientSupport.js'; +import { withAmountUtils } from './supports.js'; const ist = withAmountUtils(makeIssuerKit('IST')); const atom = withAmountUtils(makeIssuerKit('ATOM')); From ef0730f068fe18af03075ec238b4817c89b17108 Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Mon, 22 May 2023 13:49:15 -0700 Subject: [PATCH 07/39] refactor(clientSupport): inline parseAmount --- packages/agoric-cli/src/commands/inter.js | 23 +++---------------- packages/inter-protocol/src/clientSupport.js | 8 +++---- .../inter-protocol/test/test-clientSupport.js | 19 +++++++-------- .../test/bootstrapTests/test-liquidation-1.js | 15 ++++++------ .../bootstrapTests/test-liquidation-2b.js | 7 +----- .../bootstrapTests/test-vaults-integration.js | 14 +---------- 6 files changed, 23 insertions(+), 63 deletions(-) diff --git a/packages/agoric-cli/src/commands/inter.js b/packages/agoric-cli/src/commands/inter.js index fd52faed2c1..f9757ea7f60 100644 --- a/packages/agoric-cli/src/commands/inter.js +++ b/packages/agoric-cli/src/commands/inter.js @@ -7,10 +7,7 @@ import { CommanderError, InvalidArgumentError } from 'commander'; // TODO: should get M from endo https://github.com/Agoric/agoric-sdk/issues/7090 import { makeOfferSpecShape } from '@agoric/inter-protocol/src/auction/auctionBook.js'; -import { - Offers, - makeParseAmount, -} from '@agoric/inter-protocol/src/clientSupport.js'; +import { Offers } from '@agoric/inter-protocol/src/clientSupport.js'; import { objectMap } from '@agoric/internal'; import { M, matches } from '@agoric/store'; @@ -418,14 +415,7 @@ inter auction status async ({ generateOnly, dryRun, ...opts }) => { const tools = await tryMakeUtils(); - const parseAmount = makeParseAmount( - tools.agoricNames, - msg => new InvalidArgumentError(msg), - ); - const offer = Offers.auction.Bid(tools.agoricNames.brand, { - ...opts, - parseAmount, - }); + const offer = Offers.auction.Bid(tools.agoricNames, opts); if (generateOnly) { outputActionAndHint( @@ -466,14 +456,7 @@ inter auction status async ({ generateOnly, ...opts }) => { const tools = await tryMakeUtils(); - const parseAmount = makeParseAmount( - tools.agoricNames, - msg => new InvalidArgumentError(msg), - ); - const offer = Offers.auction.Bid(tools.agoricNames.brand, { - ...opts, - parseAmount, - }); + const offer = Offers.auction.Bid(tools.agoricNames, opts); if (generateOnly) { outputActionAndHint( { method: 'executeOffer', offer }, diff --git a/packages/inter-protocol/src/clientSupport.js b/packages/inter-protocol/src/clientSupport.js index d618cb3355e..26cf145f149 100644 --- a/packages/inter-protocol/src/clientSupport.js +++ b/packages/inter-protocol/src/clientSupport.js @@ -248,13 +248,12 @@ export const makeParseAmount = }; /** - * @param {Record} _brands + * @param {Pick} agoricNames * @param {{ * offerId: string, * give: string, * maxBuy: string, * wantMinimum?: string, - * parseAmount: (x: string) => Amount<'nat'>, * } & ({ * price: number, * } | { @@ -262,14 +261,13 @@ export const makeParseAmount = * })} opts * @returns {import('@agoric/smart-wallet/src/offers.js').OfferSpec} */ -const makeBidOffer = (_brands, opts) => { - assert.typeof(opts.parseAmount, 'function'); +const makeBidOffer = (agoricNames, opts) => { assertAllDefined({ offerId: opts.offerId, give: opts.give, maxBuy: opts.maxBuy, }); - const { parseAmount } = opts; + const parseAmount = makeParseAmount(agoricNames); const proposal = { give: { Bid: parseAmount(opts.give) }, ...(opts.wantMinimum diff --git a/packages/inter-protocol/test/test-clientSupport.js b/packages/inter-protocol/test/test-clientSupport.js index 34432f17ece..fce5d2476aa 100644 --- a/packages/inter-protocol/test/test-clientSupport.js +++ b/packages/inter-protocol/test/test-clientSupport.js @@ -2,7 +2,7 @@ import { test } from '@agoric/zoe/tools/prepare-test-env-ava.js'; import { makeIssuerKit } from '@agoric/ertp'; import { makeRatio } from '@agoric/zoe/src/contractSupport/ratio.js'; -import { makeParseAmount, Offers } from '../src/clientSupport.js'; +import { Offers } from '../src/clientSupport.js'; import { withAmountUtils } from './supports.js'; const ist = withAmountUtils(makeIssuerKit('IST')); @@ -13,7 +13,9 @@ const brands = { ATOM: atom.brand, }; -const agoricNames = /** @type {const} */ ({ +// XXX use @satisfies +/** @type {import('@agoric/vats/tools/board-utils.js').AgoricNamesRemotes} */ +const agoricNames = /** @type {any} */ ({ brand: brands, vbankAsset: { uist: { @@ -43,16 +45,14 @@ test('Offers.auction.Bid', async t => { { cliArg: -0.1, offerBidScaling: makeRatio(110n, ist.brand, 100n) }, ]; - const parseAmount = makeParseAmount(agoricNames); discounts.forEach(({ cliArg, offerBidScaling }) => { t.log('discount', cliArg * 100, '%'); t.deepEqual( - Offers.auction.Bid(brands, { + Offers.auction.Bid(agoricNames, { offerId: 'foo1', give: '4.56IST', discount: cliArg, maxBuy: '10_000ATOM', - parseAmount, }), { id: 'foo1', @@ -75,12 +75,11 @@ test('Offers.auction.Bid', async t => { const price = 7; const offerPrice = makeRatio(7n, ist.brand, 1n, atom.brand); t.deepEqual( - Offers.auction.Bid(brands, { + Offers.auction.Bid(agoricNames, { offerId: 'by-price2', give: '4.56IST', price, maxBuy: '10_000ATOM', - parseAmount, }), { id: 'by-price2', @@ -98,13 +97,12 @@ test('Offers.auction.Bid', async t => { ); t.deepEqual( - Offers.auction.Bid(brands, { + Offers.auction.Bid(agoricNames, { offerId: 'by-price2', maxBuy: '10_000ATOM', wantMinimum: '1.23ATOM', give: '4.56IST', price, - parseAmount, }), { id: 'by-price2', @@ -128,12 +126,11 @@ test('Offers.auction.Bid', async t => { t.throws( () => // @ts-expect-error error checking test - Offers.auction.Bid(brands, { + Offers.auction.Bid(agoricNames, { offerId: 'by-price2', wantMinimum: '1.23ATOM', give: '4.56IST', price, - parseAmount, }), { message: 'missing ["maxBuy"]' }, ); diff --git a/packages/vats/test/bootstrapTests/test-liquidation-1.js b/packages/vats/test/bootstrapTests/test-liquidation-1.js index 1c4b6acb5e1..0774fc8ea0a 100644 --- a/packages/vats/test/bootstrapTests/test-liquidation-1.js +++ b/packages/vats/test/bootstrapTests/test-liquidation-1.js @@ -6,10 +6,7 @@ import { test as anyTest } from '@agoric/zoe/tools/prepare-test-env-ava.js'; import { NonNullish } from '@agoric/assert'; -import { - makeParseAmount, - Offers, -} from '@agoric/inter-protocol/src/clientSupport.js'; +import { Offers } from '@agoric/inter-protocol/src/clientSupport.js'; import { likePayouts, makeLiquidationTestContext, @@ -130,6 +127,12 @@ test.after.always(t => { }); // Reference: Flow 1 from https://github.com/Agoric/agoric-sdk/issues/7123 +/** + * + * @param {import('ava').ExecutionContext>>} t + * @param {{collateralBrandKey: string, managerIndex: number}} case + * @param {*} _expected + */ test.serial('scenario: Flow 1', async t => { const { advanceTimeBy, @@ -175,7 +178,6 @@ test.serial('scenario: Flow 1', async t => { // Place bids // --------------- - const parseAmount = makeParseAmount(agoricNamesRemotes, Error); await buyer.sendOffer( Offers.psm.swap( agoricNamesRemotes, @@ -195,7 +197,6 @@ test.serial('scenario: Flow 1', async t => { offerId: 'bid1', ...setup.bids[0], maxBuy, - parseAmount, }); t.like(readLatest('published.wallet.agoric1buyer'), { @@ -209,7 +210,6 @@ test.serial('scenario: Flow 1', async t => { offerId: 'bid2', ...setup.bids[1], maxBuy, - parseAmount, }); t.like(readLatest('published.wallet.agoric1buyer'), { status: { @@ -222,7 +222,6 @@ test.serial('scenario: Flow 1', async t => { offerId: 'bid3', ...setup.bids[2], maxBuy, - parseAmount, }); t.like(readLatest('published.wallet.agoric1buyer'), { status: { diff --git a/packages/vats/test/bootstrapTests/test-liquidation-2b.js b/packages/vats/test/bootstrapTests/test-liquidation-2b.js index 57a793386c9..fa1436a6e3e 100644 --- a/packages/vats/test/bootstrapTests/test-liquidation-2b.js +++ b/packages/vats/test/bootstrapTests/test-liquidation-2b.js @@ -9,10 +9,7 @@ import { test as anyTest } from '@agoric/zoe/tools/prepare-test-env-ava.js'; import { NonNullish } from '@agoric/assert'; -import { - makeParseAmount, - Offers, -} from '@agoric/inter-protocol/src/clientSupport.js'; +import { Offers } from '@agoric/inter-protocol/src/clientSupport.js'; import { makeLiquidationTestContext, scale6 } from './liquidation.js'; /** @@ -166,7 +163,6 @@ test.serial('scenario: Flow 2b', async t => { // Place bids // --------------- - const parseAmount = makeParseAmount(agoricNamesRemotes, Error); await buyer.sendOffer( Offers.psm.swap( agoricNamesRemotes, @@ -188,7 +184,6 @@ test.serial('scenario: Flow 2b', async t => { offerId, ...setup.bids[i], maxBuy, - parseAmount, }); t.like(readLatest('published.wallet.agoric1buyer'), { status: { diff --git a/packages/vats/test/bootstrapTests/test-vaults-integration.js b/packages/vats/test/bootstrapTests/test-vaults-integration.js index 2958dd622a2..084ba75e8c8 100644 --- a/packages/vats/test/bootstrapTests/test-vaults-integration.js +++ b/packages/vats/test/bootstrapTests/test-vaults-integration.js @@ -253,7 +253,7 @@ test('open vault with insufficient funds gives helpful error', async t => { }); test('exit bid', async t => { - const { walletFactoryDriver, agoricNamesRemotes } = t.context; + const { walletFactoryDriver } = t.context; const wd = await walletFactoryDriver.provideSmartWallet('agoric1bid'); @@ -265,23 +265,11 @@ test('exit bid', async t => { giveCollateral: 9.0, }); - const parseAmount = opt => { - const m = opt.match(/^(?[\d_.]+)(?\w+?)$/); - assert(m); - return { - value: BigInt(Number(m.groups.value.replace(/_/g, '')) * 1_000_000), - /** @type {Brand<'nat'>} */ - // @ts-expect-error mock - brand: agoricNamesRemotes.brand[m.groups.brand], - }; - }; - wd.sendOfferMaker(Offers.auction.Bid, { offerId: 'bid', maxBuy: '1.23ATOM', give: '0.1IST', price: 5, - parseAmount, }); await wd.tryExitOffer('bid'); From 63c1abbfcb0710bdd0a22382eb4a683216a6c453 Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Thu, 15 Jun 2023 13:50:38 -0700 Subject: [PATCH 08/39] chore!: restrict exports from 'agoric' package it's only for installing the bin and importing that bin module --- packages/agoric-cli/package.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/agoric-cli/package.json b/packages/agoric-cli/package.json index 3b594e9662e..667c04c41da 100644 --- a/packages/agoric-cli/package.json +++ b/packages/agoric-cli/package.json @@ -8,6 +8,9 @@ "agoric": "src/entrypoint.js", "agops": "src/bin-agops.js" }, + "exports": { + "./src/entrypoint.js": "./src/entrypoint.js" + }, "files": [ "src", "exported.js" From 2de09dedc85a7cfafb2280050e56cc1c3d6ef8b0 Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Thu, 15 Jun 2023 13:50:57 -0700 Subject: [PATCH 09/39] chore(deps): remove dep on 'agoric' --- packages/inter-protocol/package.json | 1 - packages/solo/package.json | 1 - packages/wallet/package.json | 1 - 3 files changed, 3 deletions(-) diff --git a/packages/inter-protocol/package.json b/packages/inter-protocol/package.json index f7098634242..59a9a073918 100644 --- a/packages/inter-protocol/package.json +++ b/packages/inter-protocol/package.json @@ -44,7 +44,6 @@ "@endo/far": "0.2.18", "@endo/marshal": "0.8.5", "@endo/nat": "4.1.27", - "agoric": "^0.21.2-u12.0", "jessie.js": "^0.3.2" }, "devDependencies": { diff --git a/packages/solo/package.json b/packages/solo/package.json index 8aaa35a46e5..0cf54e581bc 100644 --- a/packages/solo/package.json +++ b/packages/solo/package.json @@ -42,7 +42,6 @@ "@endo/init": "0.5.56", "@endo/marshal": "0.8.5", "@endo/promise-kit": "0.2.56", - "agoric": "^0.21.2-u12.0", "anylogger": "^0.21.0", "deterministic-json": "^1.0.5", "esm": "agoric-labs/esm#Agoric-built", diff --git a/packages/wallet/package.json b/packages/wallet/package.json index 1cf9ad8cf35..e432400b6a3 100644 --- a/packages/wallet/package.json +++ b/packages/wallet/package.json @@ -20,7 +20,6 @@ }, "dependencies": { "@agoric/wallet-ui": "0.1.3-solo.0", - "agoric": "^0.21.2-u12.0", "babel-eslint": "^10.0.3", "eslint-plugin-eslint-comments": "^3.1.2", "import-meta-resolve": "^2.2.1" From 9b1b7638f4251eceb6f154c318931416c7e185a4 Mon Sep 17 00:00:00 2001 From: Turadg Aleahmad Date: Thu, 22 Jun 2023 12:18:10 -0700 Subject: [PATCH 10/39] build: export for loadgen until https://github.com/Agoric/testnet-load-generator/issues/112 --- packages/agoric-cli/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/agoric-cli/package.json b/packages/agoric-cli/package.json index 667c04c41da..65095ef3e0a 100644 --- a/packages/agoric-cli/package.json +++ b/packages/agoric-cli/package.json @@ -9,7 +9,8 @@ "agops": "src/bin-agops.js" }, "exports": { - "./src/entrypoint.js": "./src/entrypoint.js" + "./src/entrypoint.js": "./src/entrypoint.js", + "./src/helpers.js": "./src/helpers.js" }, "files": [ "src", From fd9a44db84e2cb9c9c78f850be7dbb8911650d54 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Thu, 5 Oct 2023 13:26:23 -0500 Subject: [PATCH 11/39] fix(inter-protocol): brands in CLI need not start with A-Z (#8258) * fix(inter-protocol): brands in CLI need not start with A-Z * test(inter-protocol): clientSupport for initial non-uppercase * fixup! fix(inter-protocol): brands in CLI need not start with A-Z --------- Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- packages/inter-protocol/src/clientSupport.js | 4 +- .../inter-protocol/test/test-clientSupport.js | 38 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/packages/inter-protocol/src/clientSupport.js b/packages/inter-protocol/src/clientSupport.js index 26cf145f149..8329e39a39b 100644 --- a/packages/inter-protocol/src/clientSupport.js +++ b/packages/inter-protocol/src/clientSupport.js @@ -218,7 +218,9 @@ export const makeParseAmount = (agoricNames, makeError = msg => RangeError(msg)) => opt => { assert.typeof(opt, 'string', 'parseAmount expected string'); - const m = opt.match(/^(?[\d_]+(\.[\d_]+)?)(?[A-Z]\w*?)$/); + const m = opt.match( + /^(?[\d_]+(?:\.[\d_]+)?)\s*(?[A-Za-z]\w*)$/, + ); if (!m || !m.groups) { throw makeError(`invalid amount: ${opt}`); } diff --git a/packages/inter-protocol/test/test-clientSupport.js b/packages/inter-protocol/test/test-clientSupport.js index fce5d2476aa..52360b89750 100644 --- a/packages/inter-protocol/test/test-clientSupport.js +++ b/packages/inter-protocol/test/test-clientSupport.js @@ -7,10 +7,12 @@ import { withAmountUtils } from './supports.js'; const ist = withAmountUtils(makeIssuerKit('IST')); const atom = withAmountUtils(makeIssuerKit('ATOM')); +const stAtom = withAmountUtils(makeIssuerKit('stATOM')); const brands = { IST: ist.brand, ATOM: atom.brand, + stATOM: stAtom.brand, }; // XXX use @satisfies @@ -34,6 +36,14 @@ const agoricNames = /** @type {any} */ ({ issuerName: 'ATOM', proposedName: 'ATOM', }, + 'ibc/sttoyatom': { + denom: 'ibc/sttoyatom', + brand: /** @type {any} */ (stAtom.brand), + displayInfo: { assetKind: 'nat', decimalPlaces: 6 }, + issuer: /** @type {any} */ ({}), + issuerName: 'stATOM', + proposedName: 'stATOM', + }, }, }); @@ -123,6 +133,34 @@ test('Offers.auction.Bid', async t => { 'optional want', ); + const offerPrice2 = makeRatio(7n, ist.brand, 1n, stAtom.brand); + t.deepEqual( + Offers.auction.Bid(agoricNames, { + offerId: 'by-price3', + maxBuy: '10_000stATOM', + wantMinimum: '1.23stATOM', + give: '4.56IST', + price, + }), + { + id: 'by-price3', + invitationSpec: { + source: 'agoricContract', + instancePath: ['auctioneer'], + callPipe: [['makeBidInvitation', [stAtom.brand]]], + }, + proposal: { + give: { Bid: ist.make(4_560_000n) }, + want: { Collateral: stAtom.make(1_230_000n) }, + }, + offerArgs: { + offerPrice: offerPrice2, + maxBuy: stAtom.make(10_000_000_000n), + }, + }, + 'lowercase brand', + ); + t.throws( () => // @ts-expect-error error checking test From 6672e5cb780c8baa530ac59bff27d793e1ff8f50 Mon Sep 17 00:00:00 2001 From: Jim Larson Date: Thu, 28 Sep 2023 11:08:50 -0700 Subject: [PATCH 12/39] feat: update ibc-go to v4, adapt packages and API --- golang/cosmos/ante/ante.go | 4 +- golang/cosmos/app/app.go | 32 +- golang/cosmos/go.mod | 93 +-- golang/cosmos/go.sum | 601 +++++++++++++----- golang/cosmos/x/vibc/ibc.go | 50 +- golang/cosmos/x/vibc/keeper/keeper.go | 8 +- .../cosmos/x/vibc/types/expected_keepers.go | 6 +- golang/cosmos/x/vibc/types/msgs.go | 2 +- golang/cosmos/x/vibc/types/msgs.pb.go | 2 +- 9 files changed, 562 insertions(+), 236 deletions(-) diff --git a/golang/cosmos/ante/ante.go b/golang/cosmos/ante/ante.go index 8550ff5207f..0adf511f559 100644 --- a/golang/cosmos/ante/ante.go +++ b/golang/cosmos/ante/ante.go @@ -4,8 +4,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/x/auth/ante" - ibcante "github.com/cosmos/ibc-go/v3/modules/core/ante" - ibckeeper "github.com/cosmos/ibc-go/v3/modules/core/keeper" + ibcante "github.com/cosmos/ibc-go/v4/modules/core/ante" + ibckeeper "github.com/cosmos/ibc-go/v4/modules/core/keeper" ) // HandlerOptions extend the SDK's AnteHandler options by requiring the IBC diff --git a/golang/cosmos/app/app.go b/golang/cosmos/app/app.go index e276b988d85..4a8a823180b 100644 --- a/golang/cosmos/app/app.go +++ b/golang/cosmos/app/app.go @@ -79,22 +79,22 @@ import ( upgradeclient "github.com/cosmos/cosmos-sdk/x/upgrade/client" upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper" upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" - ica "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts" - - icahost "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/host" - icahostkeeper "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/host/keeper" - icahosttypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/host/types" - icatypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/types" - "github.com/cosmos/ibc-go/v3/modules/apps/transfer" - ibctransferkeeper "github.com/cosmos/ibc-go/v3/modules/apps/transfer/keeper" - ibctransfertypes "github.com/cosmos/ibc-go/v3/modules/apps/transfer/types" - ibc "github.com/cosmos/ibc-go/v3/modules/core" - ibcclient "github.com/cosmos/ibc-go/v3/modules/core/02-client" - ibcclientclient "github.com/cosmos/ibc-go/v3/modules/core/02-client/client" - ibcclienttypes "github.com/cosmos/ibc-go/v3/modules/core/02-client/types" - porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types" - ibchost "github.com/cosmos/ibc-go/v3/modules/core/24-host" - ibckeeper "github.com/cosmos/ibc-go/v3/modules/core/keeper" + ica "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts" + + icahost "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/host" + icahostkeeper "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/host/keeper" + icahosttypes "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/host/types" + icatypes "github.com/cosmos/ibc-go/v4/modules/apps/27-interchain-accounts/types" + "github.com/cosmos/ibc-go/v4/modules/apps/transfer" + ibctransferkeeper "github.com/cosmos/ibc-go/v4/modules/apps/transfer/keeper" + ibctransfertypes "github.com/cosmos/ibc-go/v4/modules/apps/transfer/types" + ibc "github.com/cosmos/ibc-go/v4/modules/core" + ibcclient "github.com/cosmos/ibc-go/v4/modules/core/02-client" + ibcclientclient "github.com/cosmos/ibc-go/v4/modules/core/02-client/client" + ibcclienttypes "github.com/cosmos/ibc-go/v4/modules/core/02-client/types" + porttypes "github.com/cosmos/ibc-go/v4/modules/core/05-port/types" + ibchost "github.com/cosmos/ibc-go/v4/modules/core/24-host" + ibckeeper "github.com/cosmos/ibc-go/v4/modules/core/keeper" "github.com/gorilla/mux" "github.com/rakyll/statik/fs" "github.com/spf13/cast" diff --git a/golang/cosmos/go.mod b/golang/cosmos/go.mod index 21b46980590..ebcaafde44a 100644 --- a/golang/cosmos/go.mod +++ b/golang/cosmos/go.mod @@ -3,10 +3,10 @@ module github.com/Agoric/agoric-sdk/golang/cosmos go 1.20 require ( - github.com/armon/go-metrics v0.4.0 - github.com/cosmos/cosmos-sdk v0.45.11 + github.com/armon/go-metrics v0.4.1 + github.com/cosmos/cosmos-sdk v0.45.16 github.com/cosmos/gaia/v7 v7.0.0-00010101000000-000000000000 - github.com/cosmos/ibc-go/v3 v3.4.0 + github.com/cosmos/ibc-go/v4 v4.4.2 github.com/gogo/protobuf v1.3.3 github.com/golang/protobuf v1.5.2 github.com/gorilla/mux v1.8.0 @@ -14,46 +14,59 @@ require ( github.com/pkg/errors v0.9.1 github.com/rakyll/statik v0.1.7 github.com/spf13/cast v1.5.0 - github.com/spf13/cobra v1.6.0 - github.com/spf13/viper v1.13.0 - github.com/stretchr/testify v1.8.0 - github.com/tendermint/tendermint v0.34.23 + github.com/spf13/cobra v1.6.1 + github.com/spf13/viper v1.14.0 + github.com/stretchr/testify v1.8.1 + github.com/tendermint/tendermint v0.34.27 github.com/tendermint/tm-db v0.6.7 - google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a - google.golang.org/grpc v1.50.1 + google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa + google.golang.org/grpc v1.52.3 gopkg.in/yaml.v2 v2.4.0 ) require ( - filippo.io/edwards25519 v1.0.0-beta.2 // indirect - github.com/99designs/keyring v1.1.6 // indirect + cosmossdk.io/api v0.2.6 // indirect + cosmossdk.io/core v0.5.1 // indirect + cosmossdk.io/depinject v1.0.0-alpha.3 // indirect + filippo.io/edwards25519 v1.0.0-rc.1 // indirect + github.com/99designs/keyring v1.2.1 // indirect github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect - github.com/DataDog/zstd v1.4.5 // indirect + github.com/DataDog/zstd v1.5.0 // indirect + github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect github.com/Workiva/go-datastructures v1.0.53 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/bgentry/speakeasy v0.1.0 // indirect - github.com/btcsuite/btcd v0.22.1 // indirect + github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 // indirect + github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/cespare/xxhash v1.1.0 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/coinbase/rosetta-sdk-go v0.7.0 // indirect - github.com/confio/ics23/go v0.7.0 // indirect + github.com/cockroachdb/errors v1.9.1 // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v0.0.0-20220817183557-09c6e030a677 // indirect + github.com/cockroachdb/redact v1.1.3 // indirect + github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect + github.com/cometbft/cometbft-db v0.7.0 // indirect + github.com/confio/ics23/go v0.9.0 // indirect github.com/cosmos/btcutil v1.0.4 // indirect + github.com/cosmos/cosmos-db v0.0.0-20221226095112-f3c38ecb5e32 // indirect + github.com/cosmos/cosmos-proto v1.0.0-beta.1 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gorocksdb v1.2.0 // indirect - github.com/cosmos/iavl v0.19.4 // indirect - github.com/cosmos/ledger-cosmos-go v0.11.1 // indirect - github.com/cosmos/ledger-go v0.9.2 // indirect + github.com/cosmos/iavl v0.19.5 // indirect + github.com/cosmos/ibc-go/v3 v3.0.0 // indirect + github.com/cosmos/ledger-cosmos-go v0.12.2 // indirect github.com/creachadair/taskgroup v0.3.2 // indirect - github.com/danieljoos/wincred v1.1.0 // indirect + github.com/danieljoos/wincred v1.1.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 // indirect github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect - github.com/dgraph-io/badger/v2 v2.2007.2 // indirect + github.com/dgraph-io/badger/v2 v2.2007.4 // indirect github.com/dgraph-io/ristretto v0.0.3 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dustin/go-humanize v1.0.0 // indirect - github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b // indirect + github.com/dvsekhvalnov/jose2go v1.5.0 // indirect github.com/felixge/httpsnoop v1.0.2 // indirect - github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/getsentry/sentry-go v0.17.0 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.1 // indirect @@ -62,7 +75,7 @@ require ( github.com/gogo/gateway v1.1.0 // indirect github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/btree v1.0.1 // indirect + github.com/google/btree v1.1.2 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/gorilla/handlers v1.5.1 // indirect @@ -72,16 +85,19 @@ require ( github.com/gtank/merlin v0.1.1 // indirect github.com/gtank/ristretto255 v0.1.2 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 // indirect + github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 // indirect github.com/improbable-eng/grpc-web v0.14.1 // indirect github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d // indirect github.com/klauspost/compress v1.15.11 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect github.com/lib/pq v1.10.6 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/linxGnu/grocksdb v1.7.10 // indirect github.com/magiconair/properties v1.8.6 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.16 // indirect @@ -94,27 +110,29 @@ require ( github.com/pelletier/go-toml/v2 v2.0.5 // indirect github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.12.2 // indirect - github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.34.0 // indirect + github.com/prometheus/client_golang v1.14.0 // indirect + github.com/prometheus/client_model v0.3.0 // indirect + github.com/prometheus/common v0.37.0 // indirect github.com/prometheus/procfs v0.8.0 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/regen-network/cosmos-proto v0.3.1 // indirect + github.com/rogpeppe/go-internal v1.9.0 // indirect github.com/rs/cors v1.8.2 // indirect github.com/rs/zerolog v1.27.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/spf13/afero v1.8.2 // indirect + github.com/spf13/afero v1.9.2 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.4.1 // indirect github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 // indirect - github.com/tendermint/btcd v0.1.1 // indirect - github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 // indirect + github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tendermint/go-amino v0.16.0 // indirect - github.com/zondax/hid v0.9.0 // indirect + github.com/tidwall/btree v1.5.0 // indirect + github.com/zondax/hid v0.9.1 // indirect + github.com/zondax/ledger-go v0.14.1 // indirect go.etcd.io/bbolt v1.3.6 // indirect - golang.org/x/crypto v0.1.0 // indirect - golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect + golang.org/x/crypto v0.5.0 // indirect + golang.org/x/exp v0.0.0-20221019170559-20944726eadf // indirect golang.org/x/net v0.7.0 // indirect golang.org/x/sys v0.5.0 // indirect golang.org/x/term v0.5.0 // indirect @@ -142,14 +160,13 @@ replace google.golang.org/grpc => google.golang.org/grpc v1.33.2 // At least until post-v0.34.14 is released with // https://github.com/tendermint/tendermint/issue/6899 resolved. -replace github.com/tendermint/tendermint => github.com/agoric-labs/tendermint v0.34.23-alpha.agoric.4 +replace github.com/tendermint/tendermint => github.com/agoric-labs/cometbft v0.34.27-alpha.agoric.2 // We need a fork of cosmos-sdk until all of the differences are merged. -replace github.com/cosmos/cosmos-sdk => github.com/agoric-labs/cosmos-sdk v0.45.11-alpha.agoric.4 +replace github.com/cosmos/cosmos-sdk => github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.1 replace github.com/cosmos/gaia/v7 => github.com/Agoric/ag0/v7 v7.0.2-alpha.agoric.1 // For testing against a local cosmos-sdk or tendermint // replace github.com/cosmos/cosmos-sdk => ../../../forks/cosmos-sdk - // replace github.com/tendermint/tendermint => ../../../forks/tendermint diff --git a/golang/cosmos/go.sum b/golang/cosmos/go.sum index 44df8ccd9e4..f1b57c51ee6 100644 --- a/golang/cosmos/go.sum +++ b/golang/cosmos/go.sum @@ -1,11 +1,13 @@ cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.43.0/go.mod h1:BOSR3VbTLkk6FDC/TcffxP4NF/FFBGA5ku+jvKOP7pg= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= @@ -22,6 +24,7 @@ cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvf cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -34,44 +37,54 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= +cosmossdk.io/api v0.2.6 h1:AoNwaLLapcLsphhMK6+o0kZl+D6MMUaHVqSdwinASGU= +cosmossdk.io/api v0.2.6/go.mod h1:u/d+GAxil0nWpl1XnQL8nkziQDIWuBDhv8VnDm/s6dI= +cosmossdk.io/core v0.5.1 h1:vQVtFrIYOQJDV3f7rw4pjjVqc1id4+mE0L9hHP66pyI= +cosmossdk.io/core v0.5.1/go.mod h1:KZtwHCLjcFuo0nmDc24Xy6CRNEL9Vl/MeimQ2aC7NLE= +cosmossdk.io/depinject v1.0.0-alpha.3 h1:6evFIgj//Y3w09bqOUOzEpFj5tsxBqdc5CfkO7z+zfw= +cosmossdk.io/depinject v1.0.0-alpha.3/go.mod h1:eRbcdQ7MRpIPEM5YUJh8k97nxHpYbc3sMUnEtt8HPWU= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.0.0-beta.2 h1:/BZRNzm8N4K4eWfK28dL4yescorxtO7YG1yun8fy+pI= -filippo.io/edwards25519 v1.0.0-beta.2/go.mod h1:X+pm78QAUPtFLi1z9PYIlS/bdDnvbCOGKtZ+ACWEf7o= +filippo.io/edwards25519 v1.0.0-rc.1 h1:m0VOOB23frXZvAOK44usCgLWvtsxIoMCTBGJZlpmGfU= +filippo.io/edwards25519 v1.0.0-rc.1/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFNuPos7vHmWXfszqImLppbc0wEhh6JBfJIUgw= +git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/Agoric/ag0/v7 v7.0.2-alpha.agoric.1 h1:IHiZYky5TOyFcrBc79Y1+UbwmGC6cjtbD36lhrrHXEA= github.com/Agoric/ag0/v7 v7.0.2-alpha.agoric.1/go.mod h1:NGENq70qLn4IP4yM6Nf3zTcSYyBOlU6RZTafQIAIKUY= -github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= -github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc= -github.com/Azure/azure-storage-blob-go v0.7.0/go.mod h1:f9YQKtsG1nMisotuTPpO0tjNuEjKRYAcJU8/ydDI++4= +github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= +github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= +github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d h1:nalkkPQcITbvhmL4+C4cKA87NW0tfm3Kl9VXRoPywFg= github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d/go.mod h1:URdX5+vg25ts3aCh8H5IFZybJYKWhJHYMTnf+ULtoC4= +github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EFZQ978U7x8IRnstaskI3IysnWY5Ao3QgZUKOXlsAdw= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= +github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= +github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= +github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= -github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= +github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= +github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= +github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7/go.mod h1:6E6s8o2AE4KhCrqr6GRJjdC/gNfTdxkIXvuGZZda2VM= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= -github.com/VictoriaMetrics/fastcache v1.5.7/go.mod h1:ptDBkNMQI4RtmVo8VS/XwRY6RoTu1dAWCbrk+6WsEM8= +github.com/VictoriaMetrics/fastcache v1.6.0/go.mod h1:0qHz5QP0GMX4pfmMA/zt5RgfNuXJrTP0zS7DqpHGGTw= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/Workiva/go-datastructures v1.0.53 h1:J6Y/52yX10Xc5JjXmGtWoSSxs3mZnGSaq37xZZh7Yig= @@ -80,53 +93,72 @@ github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1: github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/agoric-labs/cosmos-sdk v0.45.11-alpha.agoric.4 h1:OU1rRq0qS+5KNe7eF7ceXPpHeXWj+JSbUpHgiQTml2E= -github.com/agoric-labs/cosmos-sdk v0.45.11-alpha.agoric.4/go.mod h1:fdXvzy+wmYB+W+N139yb0+szbT7zAGgUjmxm5DBrjto= +github.com/agoric-labs/cometbft v0.34.27-alpha.agoric.2 h1:uxyEDxypJPHAdywY2ECDZu+//JaLKZenslkNNd+gyFs= +github.com/agoric-labs/cometbft v0.34.27-alpha.agoric.2/go.mod h1:BcCbhKv7ieM0KEddnYXvQZR+pZykTKReJJYf7YC7qhw= +github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.1 h1:hYFQe3ndZ+9L6RUYdPqbU1AMRe3fV7gGLwNg2iUwU4M= +github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.1/go.mod h1:T0VCPrAAeps81/pnD8b0+oBCMDxrkrD48W1t/XYYUeI= github.com/agoric-labs/cosmos-sdk/ics23/go v0.8.0-alpha.agoric.1 h1:2jvHI/2d+psWAZy6FQ0vXJCHUtfU3ZbbW+pQFL04arQ= github.com/agoric-labs/cosmos-sdk/ics23/go v0.8.0-alpha.agoric.1/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= -github.com/agoric-labs/tendermint v0.34.23-alpha.agoric.4 h1:NWqGDUk5UkkXxsEVRtCWFpMeuCtu2MyRtC0Cib7sKH8= -github.com/agoric-labs/tendermint v0.34.23-alpha.agoric.4/go.mod h1:rXVrl4OYzmIa1I91av3iLv2HS0fGSiucyW9J4aMTpKI= +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/alecthomas/participle/v2 v2.0.0-alpha7 h1:cK4vjj0VSgb3lN1nuKA5F7dw+1s1pWBe5bx7nNCnN+c= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= +github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/aristanetworks/goarista v0.0.0-20170210015632-ea17b1a17847/go.mod h1:D/tb0zPVXnP7fmsLZjtdUhSsumbK/ij54UXjjVgMGxQ= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.4.0 h1:yCQqn7dwca4ITXb+CbubHmedzaQYHhNhrEXLYUeEe8Q= -github.com/armon/go-metrics v0.4.0/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo= +github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y= +github.com/aws/aws-sdk-go-v2/credentials v1.1.1/go.mod h1:mM2iIjwl7LULWtS6JCACyInboHirisUUdkBPoTHMOUo= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.2/go.mod h1:3hGg3PpiEjHnrkrlasTfxFqUsZ2GCk/fMUn4CbKgSkM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.0.2/go.mod h1:45MfaXZ0cNbeuT0KQ1XJylq8A6+OpVV2E5kvY/Kq+u8= +github.com/aws/aws-sdk-go-v2/service/route53 v1.1.1/go.mod h1:rLiOUrPLW/Er5kRcQ7NkwbjlijluLsrIbu/iyl35RO4= +github.com/aws/aws-sdk-go-v2/service/sso v1.1.1/go.mod h1:SuZJxklHxLAXgLTc1iFXbEWkXs7QRTQpCLGaKIprQW0= +github.com/aws/aws-sdk-go-v2/service/sts v1.1.1/go.mod h1:Wi0EBZwiz/K44YliU0EKxqTCJGUfYTWXrrBwkq736bM= +github.com/aws/smithy-go v1.1.0/go.mod h1:EzMw8dbp/YJL4A5/sbhGddag+NPT7q084agLbB9LgIw= +github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/btcsuite/btcd v0.0.0-20171128150713-2e60448ffcc6/go.mod h1:Dmm/EzmjnCiweXmzRIAiUWCInVmPgjkzgv5k4tVyXiQ= -github.com/btcsuite/btcd v0.0.0-20190115013929-ed77733ec07d/go.mod h1:d3C0AkH6BRcvO8T0UEPu53cnw4IbV63x1bEjildYhO0= +github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816 h1:41iFGWnSlI2gVpmOtVTJZNodLdLQLn/KsJqFvXwnd/s= +github.com/bgentry/speakeasy v0.1.1-0.20220910012023-760eaf8b6816/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/btcsuite/btcd v0.0.0-20190315201642-aa6e0f35703c/go.mod h1:DrZx5ec/dmnfpw9KyYoQyYo7d0KEvTkk/5M/vbZjAr8= github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ= -github.com/btcsuite/btcd v0.21.0-beta/go.mod h1:ZSWyehm27aAuS9bvkATT+Xte3hjHZ+MRgMY/8NJ7K94= +github.com/btcsuite/btcd v0.21.0-beta.0.20201114000516-e9c7a5ac6401/go.mod h1:Sv4JPQ3/M+teHz9Bo5jBpkNcP0x6r7rdihlNL/7tTAs= github.com/btcsuite/btcd v0.22.1 h1:CnwP9LM/M9xuRrGSCGeMVs9iv09uMqwsVX7EeIpgV2c= github.com/btcsuite/btcd v0.22.1/go.mod h1:wqgTSL29+50LRkmOVknEdmt8ZojIzhuWvgu/iptuN7Y= +github.com/btcsuite/btcd/btcec/v2 v2.1.2/go.mod h1:ctjw4H1kknNJmRN4iP1R7bTQ+v3GJkZBd6mui8ZsAZE= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.2 h1:XLMbX8JQEiwMcYft2EGi8zPUkoa0abKIU6/BJSRsjzQ= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.0/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA= -github.com/btcsuite/btcutil v0.0.0-20180706230648-ab6388e0c60a/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190207003914-4c204d697803/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg= github.com/btcsuite/btcutil v1.0.2/go.mod h1:j9HUFwoQRsZL3V4n+qG+CUnEGHOarIxfC3Le2Yhbcts= -github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce h1:YtWJF7RHm2pYCvA5t0RPmAaLUhREsKuKd+SLhxFbFeQ= +github.com/btcsuite/btcutil v1.0.3-0.20201208143702-a53e38424cce/go.mod h1:0DVlHczLPewLcPGEIeUEzfOJhqGPQ0mJJRDBtD307+o= github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg= github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY= github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I= @@ -134,6 +166,8 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= +github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= +github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= @@ -150,12 +184,37 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/cloudflare/cloudflare-go v0.10.2-0.20190916151808-a80f83b9add9/go.mod h1:1MxXX1Ux4x6mqPmjkUgTP1CdXIBXKX7T+Jk9Gxrmx+U= +github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cockroachdb/apd/v3 v3.1.0 h1:MK3Ow7LH0W8zkd5GMKA1PvS9qG3bWFI95WaVNfyZJ/w= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v1.0.0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= +github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.6.1/go.mod h1:tm6FTP5G81vwJ5lC0SizQo374JNCOPrHyXGitRJoDqM= +github.com/cockroachdb/errors v1.8.1/go.mod h1:qGwQn6JmZ+oMjuLwjWzUNqblqk0xl4CVV3SQbGwK7Ac= +github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= +github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v0.0.0-20220817183557-09c6e030a677 h1:qbb/AE938DFhOajUYh9+OXELpSF9KZw2ZivtmW6eX1Q= +github.com/cockroachdb/pebble v0.0.0-20220817183557-09c6e030a677/go.mod h1:890yq1fUb9b6dGNwssgeUO5vQV9qfXnCPxAJhBQfXw0= +github.com/cockroachdb/redact v1.0.8/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= +github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2/go.mod h1:8BT+cPK6xvFOcRlk0R8eg+OTkcqI6baNH4xAkpiYVvQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/coinbase/rosetta-sdk-go v0.7.0 h1:lmTO/JEpCvZgpbkOITL95rA80CPKb5CtMzLaqF2mCNg= -github.com/coinbase/rosetta-sdk-go v0.7.0/go.mod h1:7nD3oBPIiHqhRprqvMgPoGxe/nyq3yftRmpsy29coWE= +github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= +github.com/coinbase/kryptology v1.8.0/go.mod h1:RYXOAPdzOGUe3qlSFkMGn58i3xUA8hmxYHksuq+8ciI= +github.com/coinbase/rosetta-sdk-go v0.7.9 h1:lqllBjMnazTjIqYrOGv8h8jxjg9+hJazIGZr9ZvoCcA= +github.com/coinbase/rosetta-sdk-go v0.7.9/go.mod h1:0/knutI7XGVqXmmH4OQD8OckFrbQ8yMsUZTG7FXCR2M= +github.com/cometbft/cometbft-db v0.7.0 h1:uBjbrBx4QzU0zOEnU8KxoDl18dMNgDh+zZRUE0ucsbo= +github.com/cometbft/cometbft-db v0.7.0/go.mod h1:yiKJIm2WKrt6x8Cyxtq9YTEcIMPcEe4XPxhgX59Fzf0= +github.com/consensys/bavard v0.1.8-0.20210406032232-f3452dc9b572/go.mod h1:Bpd0/3mZuaj6Sj+PqrmIquiOKy397AKGThQPaGzNXAQ= +github.com/consensys/bavard v0.1.8-0.20210915155054-088da2f7f54a/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= +github.com/consensys/gnark-crypto v0.4.1-0.20210426202927-39ac3d4b3f1f/go.mod h1:815PAHg3wvysy0SyIqanF8gZ0Y1wjk/hrDHD/iT88+Q= +github.com/consensys/gnark-crypto v0.5.3/go.mod h1:hOdPlWQV1gDLp7faZVeg8Y0iEPFaOUnCc4XeCCk96p0= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= @@ -165,92 +224,132 @@ github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1 github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.4 h1:n7C2ngKXo7UC9gNyMNLbzqz7Asuf+7Qv4gnX/rOdQ44= github.com/cosmos/btcutil v1.0.4/go.mod h1:Ffqc8Hn6TJUdDgHBwIZLtrLQC1KdJ9jGJl/TvgUaxbU= +github.com/cosmos/cosmos-db v0.0.0-20221226095112-f3c38ecb5e32 h1:zlCp9n3uwQieELltZWHRmwPmPaZ8+XoL2Sj+A2YJlr8= +github.com/cosmos/cosmos-db v0.0.0-20221226095112-f3c38ecb5e32/go.mod h1:kwMlEC4wWvB48zAShGKVqboJL6w4zCLesaNQ3YLU2BQ= +github.com/cosmos/cosmos-proto v1.0.0-beta.1 h1:iDL5qh++NoXxG8hSy93FdYJut4XfgbShIocllGaXx/0= +github.com/cosmos/cosmos-proto v1.0.0-beta.1/go.mod h1:8k2GNZghi5sDRFw/scPL8gMSowT1vDA+5ouxL8GjaUE= github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d/go.mod h1:tSxLoYXyBmiFeKpvmq4dzayMdCjCnu8uqmCysIGBT2Y= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4Y= github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= -github.com/cosmos/iavl v0.19.4 h1:t82sN+Y0WeqxDLJRSpNd8YFX5URIrT+p8n6oJbJ2Dok= -github.com/cosmos/iavl v0.19.4/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= -github.com/cosmos/ibc-go/v3 v3.4.0 h1:ha3cqEG36pqMWqA1D+kxDWBTZXpeFMd/aZIQF7I0xro= -github.com/cosmos/ibc-go/v3 v3.4.0/go.mod h1:VwB/vWu4ysT5DN2aF78d17LYmx3omSAdq6gpKvM7XRA= +github.com/cosmos/iavl v0.19.5 h1:rGA3hOrgNxgRM5wYcSCxgQBap7fW82WZgY78V9po/iY= +github.com/cosmos/iavl v0.19.5/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= +github.com/cosmos/ibc-go/v3 v3.0.0 h1:XUNplHVS51Q2gMnTFsFsH9QJ7flsovMamnltKbEgPQ4= +github.com/cosmos/ibc-go/v3 v3.0.0/go.mod h1:Mb+1NXiPOLd+CPFlOC6BKeAUaxXlhuWenMmRiUiSmwY= +github.com/cosmos/ibc-go/v4 v4.4.2 h1:PG4Yy0/bw6Hvmha3RZbc53KYzaCwuB07Ot4GLyzcBvo= +github.com/cosmos/ibc-go/v4 v4.4.2/go.mod h1:j/kD2JCIaV5ozvJvaEkWhLxM2zva7/KTM++EtKFYcB8= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 h1:DdzS1m6o/pCqeZ8VOAit/gyATedRgjvkVI+UCrLpyuU= github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76/go.mod h1:0mkLWIoZuQ7uBoospo5Q9zIpqq6rYCPJDSUdeCJvPM8= -github.com/cosmos/ledger-cosmos-go v0.11.1 h1:9JIYsGnXP613pb2vPjFeMMjBI5lEDsEaF6oYorTy6J4= -github.com/cosmos/ledger-cosmos-go v0.11.1/go.mod h1:J8//BsAGTo3OC/vDLjMRFLW6q0WAaXvHnVc7ZmE8iUY= -github.com/cosmos/ledger-go v0.9.2 h1:Nnao/dLwaVTk1Q5U9THldpUMMXU94BOTWPddSmVB6pI= -github.com/cosmos/ledger-go v0.9.2/go.mod h1:oZJ2hHAZROdlHiwTg4t7kP+GKIIkBT+o6c9QWFanOyI= +github.com/cosmos/ledger-cosmos-go v0.12.2 h1:/XYaBlE2BJxtvpkHiBm97gFGSGmYGKunKyF3nNqAXZA= +github.com/cosmos/ledger-cosmos-go v0.12.2/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creachadair/taskgroup v0.3.2 h1:zlfutDS+5XG40AOxcHDSThxKzns8Tnr9jnr6VqkYlkM= github.com/creachadair/taskgroup v0.3.2/go.mod h1:wieWwecHVzsidg2CsUnFinW1faVN4+kq+TDlRJQ0Wbk= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cucumber/common/gherkin/go/v22 v22.0.0 h1:4K8NqptbvdOrjL9DEea6HFjSpbdT9+Q5kgLpmmsHYl0= +github.com/cucumber/common/messages/go/v17 v17.1.1 h1:RNqopvIFyLWnKv0LfATh34SWBhXeoFTJnSrgm9cT/Ts= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= -github.com/danieljoos/wincred v1.1.0 h1:3RNcEpBg4IhIChZdFRSdlQt1QjCp1sMAPIrOnm7Yf8g= -github.com/danieljoos/wincred v1.1.0/go.mod h1:XYlo+eRTsVA9aHGp7NGjFkPla4m+DCL7hqDjlFjiygg= +github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= +github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set v0.0.0-20180603214616-504e848d77ea/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= +github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= +github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= +github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= +github.com/deepmap/oapi-codegen v1.8.2/go.mod h1:YLgSKSDv/bZQB7N4ws6luhozi3cEdRktEqrX88CvjIw= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= -github.com/dgraph-io/badger/v2 v2.2007.2 h1:EjjK0KqwaFMlPin1ajhP943VPENHJdEz1KLIegjaI3k= -github.com/dgraph-io/badger/v2 v2.2007.2/go.mod h1:26P/7fbL4kUZVEVKLAKXkBXKOydDmM2p1e+NhhnBCAE= +github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= +github.com/dgraph-io/badger/v2 v2.2007.4 h1:TRWBQg8UrlUhaFdco01nO2uXwzKS7zd+HVdwV/GHc4o= +github.com/dgraph-io/badger/v2 v2.2007.4/go.mod h1:vSw/ax2qojzbN6eXHIx6KPKtCSHJN/Uz0X0VPruTIhk= github.com/dgraph-io/ristretto v0.0.3-0.20200630154024-f66de99634de/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgraph-io/ristretto v0.0.3 h1:jh22xisGBjrEVnRZ1DVTpBVQm0Xndu8sMl0CWDzSIBI= github.com/dgraph-io/ristretto v0.0.3/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/docker v1.4.2-0.20180625184442-8e610b2b55bf/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= -github.com/dop251/goja v0.0.0-20200721192441-a695b0cdd498/go.mod h1:Mw6PkjjMXWbTj+nnj4s3QPXq1jaT0s5pC0iFD4+BOAA= +github.com/dop251/goja v0.0.0-20211011172007-d99e4b8cbf48/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= +github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b h1:HBah4D48ypg3J7Np4N+HY/ZR76fx3HEUGxDU6Uk39oQ= github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= -github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw= +github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM= +github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v0.0.0-20160512033002-935e0e8a636c/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.9.25/go.mod h1:vMkFiYLHI4tgPw4k2j4MHKoovchFE8plZ0M9VMk4/oM= +github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= +github.com/ethereum/go-ethereum v1.10.17/go.mod h1:Lt5WzjM07XlXc95YzrhosmR4J9Ahd6X2wyEV2SvGhk0= github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c h1:8ISkoahWXwZR41ois5lSJBSVw4D0OV19Ht/JSTzvSv0= github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojtoVVWjGfOF9635RETekkoH6Cc9SX0A= github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 h1:7HZCaLC5+BZpmbhCOZJ293Lz68O7PYrF2EzeiFMwCLk= -github.com/fatih/color v1.3.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4/go.mod h1:T9YF2M40nIgbVgp3rreNmTged+9HrbNTIQf1PsaIiTA= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= +github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getkin/kin-openapi v0.61.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= +github.com/getsentry/sentry-go v0.17.0 h1:UustVWnOoDFHBS7IJUB2QK/nB5pap748ZEp0swnQJak= +github.com/getsentry/sentry-go v0.17.0/go.mod h1:B82dxtBvxG0KaPD8/hfSV+VcHD+Lg/xUS4JuQn1P4cM= +github.com/ghemawat/stream v0.0.0-20171120220530-696b145b53b9/go.mod h1:106OIgooyS7OzLDOpUGgm9fA3bQENb/cFSyyBmMoJDs= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3 h1:ahKqKTFpO5KTPHxWZjEdPScmYaGtLo8Y4DMHoEsnp14= +github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= +github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= +github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= +github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= +github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -268,16 +367,20 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.1/go.mod h1:7FAglXiTm7HKlQRDeOQ6ZNUHidzCWXuZWq/1dTyBNF8= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= +github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.4.1 h1:pH2c5ADXtd66mxoE0Zm9SUhxE20r7aM3F26W0hOn+GE= -github.com/go-sourcemap/sourcemap v2.1.2+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= +github.com/go-playground/validator/v10 v10.11.1 h1:prmOlTVv+YjZjmRmNSF3VmspqJIxJWXmqUsHwfTRRkQ= +github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= @@ -285,11 +388,21 @@ github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.9.11 h1:/pAaQDLHEoCq/5FFmSKBswWmK6H0e8g4159Kc/X/nqk= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v4.3.0+incompatible h1:CaSVZxm5B+7o45rtab4jC2G37WGYX1zQfuU2i6DSvnc= github.com/gogo/gateway v1.1.0 h1:u0SuhL9+Il+UbjM9VIE3ntfRujKbvVpFvNB4HbjeVQ0= github.com/gogo/gateway v1.1.0/go.mod h1:S7rR8FRQyG3QFESeSv4l2WnsyzlCLG0CzBbUUo/mbic= +github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= +github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -322,14 +435,16 @@ github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaS github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3-0.20201103224600-674baa8c7fc3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= +github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -341,6 +456,7 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.1-0.20200604201612-c04b05f3adfa/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -365,6 +481,7 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= @@ -377,11 +494,12 @@ github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2z github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1-0.20190629185528-ae1634f6a989/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/graph-gophers/graphql-go v0.0.0-20191115155744-f33e81362277/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= +github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= @@ -401,6 +519,7 @@ github.com/gtank/ristretto255 v0.1.2/go.mod h1:Ph5OpO6c7xKUGROZfWVLiJf9icMDwUeIv github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -416,39 +535,62 @@ github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d h1:dg1dEPuWpEqDnvIw251EVy4zlP8gWbsGj4BsUKCRpYs= +github.com/hashicorp/golang-lru v0.5.5-0.20210104140557-80c98217689d/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 h1:uUjLpLt6bVvZ72SQc/B4dXcPBw4Vgd7soowdRl52qEM= -github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87/go.mod h1:XGsKKeXxeRr95aEOgipvluMPlgjr7dGlk9ZTWOjcUcg= -github.com/holiman/uint256 v1.1.1/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3 h1:aSVUgRRRtOrZOC1fYmY9gV0e9z/Iu+xNVSASWjsuyGU= +github.com/hdevalence/ed25519consensus v0.0.0-20220222234857-c00d1f31bab3/go.mod h1:5PC6ZNPde8bBqU/ewGZig35+UIZtw9Ytxez8/q5ZyFE= +github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= +github.com/holiman/uint256 v1.2.0/go.mod h1:y4ga/t+u+Xwd7CpDgZESaRcWy0I7XMlTMA25ApIH5Jw= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc= +github.com/huin/goupnp v1.0.3-0.20220313090229-ca81a64b4204/go.mod h1:ZxNlw5WqJj6wSsRK5+YfflQGXYfccj5VgQsMNixHM7Y= github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o= +github.com/hydrogen18/memlistener v0.0.0-20141126152155-54553eb933fb/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= +github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/improbable-eng/grpc-web v0.14.1 h1:NrN4PY71A6tAz2sKDvC5JCauENWp0ykG8Oq1H3cpFvw= github.com/improbable-eng/grpc-web v0.14.1/go.mod h1:zEjGHa8DAlkoOXmswrNvhUGEYQA9UI7DhrGeHR1DMGU= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/influxdb v1.2.3-0.20180221223340-01288bdb0883/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= +github.com/influxdata/influxdb v1.8.3/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= +github.com/influxdata/influxdb-client-go/v2 v2.4.0/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/jackpal/go-nat-pmp v1.0.2-0.20160603034137-1fa385a6f458/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= +github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= +github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/line-protocol v0.0.0-20210311194329-9aa0e372d097/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= +github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= +github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= +github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= +github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= +github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= +github.com/iris-contrib/i18n v0.0.0-20171121225848-987a633949d0/go.mod h1:pMCz62A0xJL6I+umB2YTlFRwWXaDFA0jy+5HzGiJjqI= +github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= +github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= +github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= +github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jedisct1/go-minisign v0.0.0-20190909160543-45766022959e/go.mod h1:G1CVv03EnqU1wYL2dFwXxW2An0az9JTl/ZsqXQeBlkU= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= -github.com/jhump/protoreflect v1.12.1-0.20220721211354-060cc04fc18b h1:izTof8BKh/nE1wrKOrloNA5q4odOarjf+Xpe+4qow98= +github.com/jhump/protoreflect v1.13.1-0.20220928232736-101791cb1b4c h1:XImQJfpJLmGEEd8ll5yPVyL/aEvmgGHW4WYTyNseLOM= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -464,62 +606,112 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.1.1-0.20170430222011-975b5c4c7c21/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= +github.com/juju/loggo v0.0.0-20180524022052-584905176618/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= +github.com/juju/testing v0.0.0-20180920084828-472a3e8b2073/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= +github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= +github.com/karalabe/usb v0.0.2/go.mod h1:Od972xHfMJowv7NGVDiWVxk2zxnWgjLlJzE+F4F7AGU= +github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= +github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= +github.com/kataras/iris/v12 v12.0.1/go.mod h1:udK4vLQKkdDqMGJJVd/msuMtN6hpYJhg/lSzuxjhO+U= +github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= +github.com/kataras/neffos v0.0.10/go.mod h1:ZYmJC07hQPW67eKuzlfY7SO3bC0mw83A3j6im82hfqw= +github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= +github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d/go.mod h1:NV88laa9UiiDuX9AhMbDPkGYSPugBOV6yTZB1l2K9Z0= +github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= +github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= +github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= +github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= +github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.9.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.12.3/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= +github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= +github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= +github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linxGnu/grocksdb v1.7.10 h1:dz7RY7GnFUA+GJO6jodyxgkUeGMEkPp3ikt9hAcNGEw= +github.com/linxGnu/grocksdb v1.7.10/go.mod h1:0hTf+iA+GOr0jDX4CgIYyJZxqOH9XlBh6KVj8+zmF34= github.com/lucasjones/reggen v0.0.0-20180717132126-cdb49ff09d77/go.mod h1:5ELEyG+X8f+meRWHuqUOewBOhvHkl7M76pdGEansxW4= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.0/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= -github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.5-0.20180830101745-3fb116b82035/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= +github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= +github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= +github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= +github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643/go.mod h1:43+3pMjjKimDBf5Kr4ZFNGbLql1zKkbImw+fZbw3geM= github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 h1:QRUSJEgZn2Snx0EmT/QLXibWjSUDjKWvXIT19NBVp94= @@ -534,9 +726,11 @@ github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS4 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -544,6 +738,9 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= +github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -555,22 +752,26 @@ github.com/naoina/toml v0.1.2-0.20170918210437-9fafd6967416/go.mod h1:NBIhNtsFMo github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/neilotoole/errgroup v0.1.5/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= +github.com/neilotoole/errgroup v0.1.6/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.2-0.20190409134802-7e037d187b0c/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= @@ -585,6 +786,7 @@ github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= @@ -596,7 +798,7 @@ github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIw github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v0.0.0-20170112150404-1b00554d8222/go.mod h1:VyrYX9gd7irzKovcSS6BIIEwPRkP2Wm2m9ufcdFSJ34= +github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= @@ -604,18 +806,24 @@ github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCko github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= @@ -627,26 +835,28 @@ github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3O github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34= -github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= +github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.34.0 h1:RBmGO9d/FVjqHT0yUGQwBJhkwKV+wPCn7KGpvfab0uE= -github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= +github.com/prometheus/common v0.37.0 h1:ccBbHCgIiT9uSoFY0vX8H3zsNR5eLt17/RQLUvn8pXE= +github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -657,7 +867,7 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= -github.com/prometheus/tsdb v0.6.2-0.20190402121629-4f204dcbc150/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ= github.com/rakyll/statik v0.1.7/go.mod h1:AlZONWzMtEnMs7W4e/1LURLiI49pIMmp6V9Unghqrcc= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= @@ -665,18 +875,21 @@ github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5X github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/regen-network/cosmos-proto v0.3.1 h1:rV7iM4SSFAagvy8RiyhiACbWEGotmqzywPxOvwMdxcg= github.com/regen-network/cosmos-proto v0.3.1/go.mod h1:jO0sVX6a1B36nmE8C9xBFXpNwWejXC7QqCOnH3O0+YM= +github.com/regen-network/gocuke v0.6.2 h1:pHviZ0kKAq2U2hN2q3smKNxct6hS0mGByFMHGnWA97M= github.com/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4= github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI= +github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc= github.com/rjeczalik/notify v0.9.1/go.mod h1:rKwnCoCGeuQnwBtTSPL9Dad03Vh2n40ePRrjvIXnJho= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= -github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= github.com/rs/cors v1.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xhandler v0.0.0-20160618193221-ed27b6fd6521/go.mod h1:RvLn4FgxWubrpZHtQLnOf6EwhN2hEMusxZOhcW9H3UQ= github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg= github.com/rs/zerolog v1.27.0 h1:1T7qCieN22GVc8S4Q2yuexzBb1EqjbgjSH9RohbMjKs= github.com/rs/zerolog v1.27.0/go.mod h1:7frBqO0oezxmnO7GF86FY++uy8I0Tk/If5ni1G9Qc0U= @@ -684,12 +897,19 @@ github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= +github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= -github.com/shirou/gopsutil v2.20.5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/shirou/gopsutil v3.21.4-0.20210419000835-c7a38de76ee5+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -704,15 +924,15 @@ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasO github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= -github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= +github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/cobra v1.6.0 h1:42a0n6jwCot1pUmomAp4T7DeMD+20LFv4Q54pxLf2LI= -github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= +github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= @@ -721,19 +941,19 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.13.0 h1:BWSJ/M+f+3nmdz9bxB+bWX28kkALN2ok11D0rSo8EJU= -github.com/spf13/viper v1.13.0/go.mod h1:Icm2xNL3/8uyh/wFuB1jI7TiTNKp8632Nwegu+zgdYw= +github.com/spf13/viper v1.14.0 h1:Rg7d3Lo706X9tHsJMUjdiwMpHB7W8WnSVOssIY+JElU= +github.com/spf13/viper v1.14.0/go.mod h1:WT//axPky3FdvXHzGw33dNdXXXfFQqmEalje+egj8As= github.com/status-im/keycard-go v0.0.0-20190316090335-8537d3370df4/go.mod h1:RZLeN1LMWmRsyYjvAu+I6Dm9QmlDaIIt+Y+4Kd7Tp+Q= -github.com/steakknife/bloomfilter v0.0.0-20180922174646-6819c0d2a570/go.mod h1:8OR4w3TdeIHIh1g6EMY5p0gVNOovcWC+1vpc7naMuAw= -github.com/steakknife/hamming v0.0.0-20180906055917-c99c65617cd3/go.mod h1:hpGUWaI9xL8pRQCTXQgocU38Qw1g0Us7n5PxxTwTCYU= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -741,50 +961,73 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca/go.mod h1:u2MKkTVTVJWe5D1rCvame8WqhBd88EuIwODJZ1VHCPM= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= -github.com/tendermint/btcd v0.1.1 h1:0VcxPfflS2zZ3RiOAHkBiFUcPvbtRj5O7zHmcJWHV7s= -github.com/tendermint/btcd v0.1.1/go.mod h1:DC6/m53jtQzr/NFmMNEu0rxf18/ktVoVtMrnDD5pN+U= -github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15 h1:hqAk8riJvK4RMWx1aInLzndwxKalgi5rTqgfXxOxbEI= -github.com/tendermint/crypto v0.0.0-20191022145703-50d29ede1e15/go.mod h1:z4YtwM70uOnk8h0pjJYlj3zdYwi9l03By6iAIF5j/Pk= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= +github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/tendermint/go-amino v0.16.0 h1:GyhmgQKvqF82e2oZeuMSp9JTN0N09emoSZlb2lyGa2E= github.com/tendermint/go-amino v0.16.0/go.mod h1:TQU0M1i/ImAo+tYpZi73AU3V/dKeCoMC9Sphe2ZwGME= github.com/tendermint/tm-db v0.6.7 h1:fE00Cbl0jayAoqlExN6oyQJ7fR/ZtoVOmvPJ//+shu8= github.com/tendermint/tm-db v0.6.7/go.mod h1:byQDzFkZV1syXr/ReXS808NxA2xvyuuVgXOJ/088L6I= -github.com/tidwall/gjson v1.6.7/go.mod h1:zeFuBCIqD4sN/gmqBzZ4j7Jd6UcA2Fc56x7QFsv+8fI= -github.com/tidwall/match v1.0.3/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.0.2/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tidwall/sjson v1.1.4/go.mod h1:wXpKXu8CtDjKAZ+3DrKY5ROCorDFahq8l0tey/Lx1fg= +github.com/tidwall/btree v1.5.0 h1:iV0yVY/frd7r6qGBXfEYs7DH0gTDgrKTrDjS7xt/IyQ= +github.com/tidwall/btree v1.5.0/go.mod h1:LGm8L/DZjPLmeWGjv5kFrY8dL4uVhMmzmmLYmsObdKE= +github.com/tidwall/gjson v1.12.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.14.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/sjson v1.2.4/go.mod h1:098SZ494YoMWPmMO6ct4dcFnqxwj9r/gF0Etp19pSNM= +github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk10Udg= +github.com/tklauser/go-sysconf v0.3.5/go.mod h1:MkWzOF4RMCshBAMXuhXJs64Rte09mITnppBXY/rYEFI= +github.com/tklauser/numcpus v0.2.2/go.mod h1:x3qojaO3uyYt0i56EW/VUYs7uBvdl2fkfZFu0T9wgjM= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ttacon/chalk v0.0.0-20160626202418-22c06c80ed31/go.mod h1:onvgF043R+lC5RZ8IT9rBXDaEDnpnw/Cl+HFiw+v/7Q= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tyler-smith/go-bip39 v1.0.1-0.20181017060643-dbb3b84ba2ef/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= github.com/tyler-smith/go-bip39 v1.0.2/go.mod h1:sJ5fKU0s6JVwZjjcUEX2zFOnvq0ASQ2K9Zr6cf67kNs= +github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.1.7 h1:/68gy2h+1mWMrwZFeD1kQialdSzAb432dtpeJ42ovdo= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7 h1:2SvQaVZ1ouYrrKKwoSk2pzd4A9evlKJb9oTL+OaLUSs= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vmihailenco/msgpack/v5 v5.1.4/go.mod h1:C5gboKD0TJPqWDTVTtrQNfRbiBwHZGo8UTqP/9/XvLI= -github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/wsddn/go-ecdh v0.0.0-20161211032359-48726bab9208/go.mod h1:IotVbo4F+mw0EzQ08zFqg7pK3FebNXpaMsRy2RT+Ees= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= +github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= +github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zondax/hid v0.9.1-0.20220302062450-5552068d2266 h1:O9XLFXGkVswDFmH9LaYpqu+r/AAFWqr0DL6V00KEVFg= github.com/zondax/hid v0.9.1-0.20220302062450-5552068d2266/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.1 h1:Pip65OOl4iJ84WTpA4BKChvOufMhhbxED3BaihoZN4c= +github.com/zondax/ledger-go v0.14.1/go.mod h1:fZ3Dqg6qcdXWSOJFKMG8GCTnD7slO/RL2feOQv8K320= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= @@ -803,6 +1046,7 @@ go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -817,19 +1061,26 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190909091759-094676da4a83/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200115085410-6d4e4cb37c7d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.1.0 h1:MDRAIl0xIo9Io2xV565hzXHw3zVseKrJKodhohM5CjU= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= +golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -838,8 +1089,10 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= -golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= +golang.org/x/exp v0.0.0-20200513190911-00229845015e/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20221019170559-20944726eadf h1:nFVjjKDgNY37+ZSYCJmtYf7tOlfQswHqplG2eosjOMg= +golang.org/x/exp v0.0.0-20221019170559-20944726eadf/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -852,23 +1105,22 @@ golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRu golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mobile v0.0.0-20200801112145-973feb4309de/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0 h1:b9gGHsz9/HhJ3HF5DHQytPpuwocVTChQJK3AvoLRD5I= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.7.0 h1:LapD9S96VoQRhi/GrNTqeBJFrUjs5UHCAtTlgwA5oZA= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -877,6 +1129,7 @@ golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -886,6 +1139,7 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -903,14 +1157,20 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= @@ -936,6 +1196,8 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -946,6 +1208,7 @@ golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -956,6 +1219,7 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -966,6 +1230,7 @@ golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -985,9 +1250,8 @@ golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200824131525-c12d262b63d8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -996,20 +1260,31 @@ golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210316164454-77fc1eacc6aa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420205809-ac73e9fd8988/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210909193231-528a39cd75f3/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= @@ -1029,11 +1304,17 @@ golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -1054,7 +1335,7 @@ golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1083,12 +1364,22 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.2.0 h1:G6AHpWxTMGY1KyEYoAQ5WTtIekUUvDNjan3ugu60JvE= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.4.0 h1:7mTAgkunk3fr4GAloyyCasadO6h9zSsQZbwvcaIciV4= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df h1:5Pf6pFKu98ODmgnpvkJ3kFUOQGGLIzLIkbzUHp47618= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/gonum v0.8.2 h1:CCXrcPKiGGotvnN6jfUsKk4rRqm7q09/YbKb5xCEvtM= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= @@ -1116,6 +1407,7 @@ google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1123,6 +1415,7 @@ google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= @@ -1130,6 +1423,7 @@ google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvx google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= @@ -1158,8 +1452,9 @@ google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a h1:GH6UPn3ixhWcKDhpnEC55S75cerLPdpp3hrhfKYjZgw= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa h1:qQPhfbPO23fwm/9lQr91L1u62Zo6cm+zI+slZT+uf+o= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1179,14 +1474,21 @@ google.golang.org/protobuf v1.28.2-0.20220831092852-f930b1dc76e8/go.mod h1:HV8QO gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= +gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= +gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= @@ -1204,11 +1506,14 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1216,10 +1521,14 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +pgregory.net/rapid v0.5.3 h1:163N50IHFqr1phZens4FQOdPgfJscR7a562mjQqeo4M= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +rsc.io/tmplfunc v0.0.3/go.mod h1:AG3sTPzElb1Io3Yg4voV9AGZJuleGAwaVRxL9M49PhA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/golang/cosmos/x/vibc/ibc.go b/golang/cosmos/x/vibc/ibc.go index a8a73e07ed1..4590b294a85 100644 --- a/golang/cosmos/x/vibc/ibc.go +++ b/golang/cosmos/x/vibc/ibc.go @@ -7,11 +7,11 @@ import ( "github.com/Agoric/agoric-sdk/golang/cosmos/vm" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" capability "github.com/cosmos/cosmos-sdk/x/capability/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types" - host "github.com/cosmos/ibc-go/v3/modules/core/24-host" + channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v4/modules/core/05-port/types" + host "github.com/cosmos/ibc-go/v4/modules/core/24-host" - "github.com/cosmos/ibc-go/v3/modules/core/exported" + "github.com/cosmos/ibc-go/v4/modules/core/exported" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -167,8 +167,8 @@ func (im IBCModule) OnChanOpenInit( channelCap *capability.Capability, counterparty channeltypes.Counterparty, version string, -) error { - return sdkerrors.Wrap( +) (string, error) { + return "", sdkerrors.Wrap( channeltypes.ErrChannelNotFound, fmt.Sprintf("vibc does not allow synthetic channelOpenInit for port %s", portID), ) @@ -224,15 +224,15 @@ func (im IBCModule) OnChanOpenTry( } type channelOpenAckEvent struct { - Type string `json:"type"` // IBC - Event string `json:"event"` // channelOpenAck - PortID string `json:"portID"` - ChannelID string `json:"channelID"` - CounterpartyVersion string `json:"counterpartyVersion"` - Counterparty channeltypes.Counterparty `json:"counterparty"` - ConnectionHops []string `json:"connectionHops"` - BlockHeight int64 `json:"blockHeight"` - BlockTime int64 `json:"blockTime"` + Type string `json:"type"` // IBC + Event string `json:"event"` // channelOpenAck + PortID string `json:"portID"` + ChannelID string `json:"channelID"` + CounterpartyVersion string `json:"counterpartyVersion"` + Counterparty channeltypes.Counterparty `json:"counterparty"` + ConnectionHops []string `json:"connectionHops"` + BlockHeight int64 `json:"blockHeight"` + BlockTime int64 `json:"blockTime"` } func (im IBCModule) OnChanOpenAck( @@ -248,15 +248,15 @@ func (im IBCModule) OnChanOpenAck( channel.Counterparty.ChannelId = counterpartyChannelID event := channelOpenAckEvent{ - Type: "IBC_EVENT", - Event: "channelOpenAck", - PortID: portID, - ChannelID: channelID, - CounterpartyVersion: counterpartyVersion, - Counterparty: channel.Counterparty, - ConnectionHops: channel.ConnectionHops, - BlockHeight: ctx.BlockHeight(), - BlockTime: ctx.BlockTime().Unix(), + Type: "IBC_EVENT", + Event: "channelOpenAck", + PortID: portID, + ChannelID: channelID, + CounterpartyVersion: counterpartyVersion, + Counterparty: channel.Counterparty, + ConnectionHops: channel.ConnectionHops, + BlockHeight: ctx.BlockHeight(), + BlockTime: ctx.BlockTime().Unix(), } return im.PushAction(ctx, event) @@ -373,7 +373,7 @@ func (im IBCModule) OnRecvPacket( err := im.PushAction(ctx, event) if err != nil { - return channeltypes.NewErrorAcknowledgement(err.Error()) + return channeltypes.NewErrorAcknowledgement(err) } return nil diff --git a/golang/cosmos/x/vibc/keeper/keeper.go b/golang/cosmos/x/vibc/keeper/keeper.go index 465b171c2e0..b52b126c256 100644 --- a/golang/cosmos/x/vibc/keeper/keeper.go +++ b/golang/cosmos/x/vibc/keeper/keeper.go @@ -9,10 +9,10 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" capability "github.com/cosmos/cosmos-sdk/x/capability/types" - channeltypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v3/modules/core/05-port/types" - host "github.com/cosmos/ibc-go/v3/modules/core/24-host" - ibcexported "github.com/cosmos/ibc-go/v3/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v4/modules/core/05-port/types" + host "github.com/cosmos/ibc-go/v4/modules/core/24-host" + ibcexported "github.com/cosmos/ibc-go/v4/modules/core/exported" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" diff --git a/golang/cosmos/x/vibc/types/expected_keepers.go b/golang/cosmos/x/vibc/types/expected_keepers.go index 49dc2953ff6..e8ec912498d 100644 --- a/golang/cosmos/x/vibc/types/expected_keepers.go +++ b/golang/cosmos/x/vibc/types/expected_keepers.go @@ -3,9 +3,9 @@ package types import ( sdk "github.com/cosmos/cosmos-sdk/types" capability "github.com/cosmos/cosmos-sdk/x/capability/types" - connection "github.com/cosmos/ibc-go/v3/modules/core/03-connection/types" - channel "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v3/modules/core/exported" + connection "github.com/cosmos/ibc-go/v4/modules/core/03-connection/types" + channel "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v4/modules/core/exported" ) // ChannelKeeper defines the expected IBC channel keeper diff --git a/golang/cosmos/x/vibc/types/msgs.go b/golang/cosmos/x/vibc/types/msgs.go index 94577e83f2f..825dd0651f5 100644 --- a/golang/cosmos/x/vibc/types/msgs.go +++ b/golang/cosmos/x/vibc/types/msgs.go @@ -4,7 +4,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - chanTypes "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" + chanTypes "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" ) const RouterKey = ModuleName // this was defined in your key.go file diff --git a/golang/cosmos/x/vibc/types/msgs.pb.go b/golang/cosmos/x/vibc/types/msgs.pb.go index e4549940037..a864263a139 100644 --- a/golang/cosmos/x/vibc/types/msgs.pb.go +++ b/golang/cosmos/x/vibc/types/msgs.pb.go @@ -7,7 +7,7 @@ import ( context "context" fmt "fmt" github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types" - types "github.com/cosmos/ibc-go/v3/modules/core/04-channel/types" + types "github.com/cosmos/ibc-go/v4/modules/core/04-channel/types" _ "github.com/gogo/protobuf/gogoproto" grpc1 "github.com/gogo/protobuf/grpc" proto "github.com/gogo/protobuf/proto" From f113b2d92fb941491416141655cf4440bb073a67 Mon Sep 17 00:00:00 2001 From: Jim Larson Date: Wed, 25 Oct 2023 11:15:37 -0700 Subject: [PATCH 13/39] build: eliminate dependence on gaia/ag0 --- golang/cosmos/app/sim_test.go | 8 ++++---- golang/cosmos/go.mod | 11 ++--------- golang/cosmos/go.sum | 14 ++------------ 3 files changed, 8 insertions(+), 25 deletions(-) diff --git a/golang/cosmos/app/sim_test.go b/golang/cosmos/app/sim_test.go index 8766386dd57..577ad4a25ab 100644 --- a/golang/cosmos/app/sim_test.go +++ b/golang/cosmos/app/sim_test.go @@ -6,9 +6,9 @@ import ( "os" "testing" - gaia "github.com/cosmos/gaia/v7/app" + gaia "github.com/Agoric/agoric-sdk/golang/cosmos/app" - "github.com/cosmos/gaia/v7/app/helpers" + "github.com/Agoric/agoric-sdk/golang/cosmos/app/helpers" "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/libs/log" "github.com/tendermint/tendermint/libs/rand" @@ -76,8 +76,8 @@ func interBlockCacheOpt() func(*baseapp.BaseApp) { return baseapp.SetInterBlockCache(store.NewCommitKVStoreCacheManager()) } -//// TODO: Make another test for the fuzzer itself, which just has noOp txs -//// and doesn't depend on the application. +// // TODO: Make another test for the fuzzer itself, which just has noOp txs +// // and doesn't depend on the application. func TestAppStateDeterminism(t *testing.T) { if !simapp.FlagEnabledValue { t.Skip("skipping application simulation") diff --git a/golang/cosmos/go.mod b/golang/cosmos/go.mod index ebcaafde44a..225f4377ee0 100644 --- a/golang/cosmos/go.mod +++ b/golang/cosmos/go.mod @@ -5,7 +5,6 @@ go 1.20 require ( github.com/armon/go-metrics v0.4.1 github.com/cosmos/cosmos-sdk v0.45.16 - github.com/cosmos/gaia/v7 v7.0.0-00010101000000-000000000000 github.com/cosmos/ibc-go/v4 v4.4.2 github.com/gogo/protobuf v1.3.3 github.com/golang/protobuf v1.5.2 @@ -29,6 +28,7 @@ require ( cosmossdk.io/core v0.5.1 // indirect cosmossdk.io/depinject v1.0.0-alpha.3 // indirect filippo.io/edwards25519 v1.0.0-rc.1 // indirect + github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.1 // indirect github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/DataDog/zstd v1.5.0 // indirect @@ -52,7 +52,6 @@ require ( github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gorocksdb v1.2.0 // indirect github.com/cosmos/iavl v0.19.5 // indirect - github.com/cosmos/ibc-go/v3 v3.0.0 // indirect github.com/cosmos/ledger-cosmos-go v0.12.2 // indirect github.com/creachadair/taskgroup v0.3.2 // indirect github.com/danieljoos/wincred v1.1.2 // indirect @@ -91,7 +90,6 @@ require ( github.com/improbable-eng/grpc-web v0.14.1 // indirect github.com/inconshreveable/mousetrap v1.0.1 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d // indirect github.com/klauspost/compress v1.15.11 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect @@ -143,14 +141,11 @@ require ( nhooyr.io/websocket v1.8.6 // indirect ) -// Silence a warning on MacOS -replace github.com/keybase/go-keychain => github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 - // At least until post-v0.9.0 is released with // https://github.com/Zondax/hid/issues/4 resolved. replace github.com/zondax/hid => github.com/zondax/hid v0.9.1-0.20220302062450-5552068d2266 -replace github.com/99designs/keyring => github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 +replace github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 replace github.com/confio/ics23/go => github.com/agoric-labs/cosmos-sdk/ics23/go v0.8.0-alpha.agoric.1 @@ -165,8 +160,6 @@ replace github.com/tendermint/tendermint => github.com/agoric-labs/cometbft v0.3 // We need a fork of cosmos-sdk until all of the differences are merged. replace github.com/cosmos/cosmos-sdk => github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.1 -replace github.com/cosmos/gaia/v7 => github.com/Agoric/ag0/v7 v7.0.2-alpha.agoric.1 - // For testing against a local cosmos-sdk or tendermint // replace github.com/cosmos/cosmos-sdk => ../../../forks/cosmos-sdk // replace github.com/tendermint/tendermint => ../../../forks/tendermint diff --git a/golang/cosmos/go.sum b/golang/cosmos/go.sum index f1b57c51ee6..b0b21ef7cea 100644 --- a/golang/cosmos/go.sum +++ b/golang/cosmos/go.sum @@ -51,8 +51,6 @@ git.sr.ht/~sircmpwn/getopt v0.0.0-20191230200459-23622cc906b3/go.mod h1:wMEGFFFN git.sr.ht/~sircmpwn/go-bare v0.0.0-20210406120253-ab86bc2846d9/go.mod h1:BVJwbDfVjCjoFiKrhkei6NdGcZYpkDkdyCdg1ukytRA= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= -github.com/Agoric/ag0/v7 v7.0.2-alpha.agoric.1 h1:IHiZYky5TOyFcrBc79Y1+UbwmGC6cjtbD36lhrrHXEA= -github.com/Agoric/ag0/v7 v7.0.2-alpha.agoric.1/go.mod h1:NGENq70qLn4IP4yM6Nf3zTcSYyBOlU6RZTafQIAIKUY= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= @@ -235,12 +233,10 @@ github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4 github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= github.com/cosmos/iavl v0.19.5 h1:rGA3hOrgNxgRM5wYcSCxgQBap7fW82WZgY78V9po/iY= github.com/cosmos/iavl v0.19.5/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= -github.com/cosmos/ibc-go/v3 v3.0.0 h1:XUNplHVS51Q2gMnTFsFsH9QJ7flsovMamnltKbEgPQ4= -github.com/cosmos/ibc-go/v3 v3.0.0/go.mod h1:Mb+1NXiPOLd+CPFlOC6BKeAUaxXlhuWenMmRiUiSmwY= github.com/cosmos/ibc-go/v4 v4.4.2 h1:PG4Yy0/bw6Hvmha3RZbc53KYzaCwuB07Ot4GLyzcBvo= github.com/cosmos/ibc-go/v4 v4.4.2/go.mod h1:j/kD2JCIaV5ozvJvaEkWhLxM2zva7/KTM++EtKFYcB8= -github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76 h1:DdzS1m6o/pCqeZ8VOAit/gyATedRgjvkVI+UCrLpyuU= -github.com/cosmos/keyring v1.1.7-0.20210622111912-ef00f8ac3d76/go.mod h1:0mkLWIoZuQ7uBoospo5Q9zIpqq6rYCPJDSUdeCJvPM8= +github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= +github.com/cosmos/keyring v1.2.0/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/cosmos/ledger-cosmos-go v0.12.2 h1:/XYaBlE2BJxtvpkHiBm97gFGSGmYGKunKyF3nNqAXZA= github.com/cosmos/ledger-cosmos-go v0.12.2/go.mod h1:ZcqYgnfNJ6lAXe4HPtWgarNEY+B74i+2/8MhZw4ziiI= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= @@ -253,7 +249,6 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/cucumber/common/gherkin/go/v22 v22.0.0 h1:4K8NqptbvdOrjL9DEea6HFjSpbdT9+Q5kgLpmmsHYl0= github.com/cucumber/common/messages/go/v17 v17.1.1 h1:RNqopvIFyLWnKv0LfATh34SWBhXeoFTJnSrgm9cT/Ts= github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= -github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= @@ -294,7 +289,6 @@ github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dvsekhvalnov/jose2go v0.0.0-20200901110807-248326c1351b/go.mod h1:7BvyPhdbLxMXIYTFPLsyJRFMsKmOZnQmzh6Gb+uquuM= github.com/dvsekhvalnov/jose2go v1.5.0 h1:3j8ya4Z4kMCwT5nXIKFSV84YS+HdqSSO0VsTQxaLAeM= github.com/dvsekhvalnov/jose2go v1.5.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= @@ -626,8 +620,6 @@ github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2 github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d/go.mod h1:NV88laa9UiiDuX9AhMbDPkGYSPugBOV6yTZB1l2K9Z0= github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= -github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= -github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= @@ -949,7 +941,6 @@ github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3 github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -1217,7 +1208,6 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= From 7ae9a705478727d1d7ace7c665861cfee14b5f28 Mon Sep 17 00:00:00 2001 From: Jim Larson Date: Sat, 4 Nov 2023 18:14:00 -0700 Subject: [PATCH 14/39] fix: handle hang-on-halt behavior from agoric-labs/cosmos-sdk#305 The backport referenced above has the agd process hang around after halting. Wrote a wrapper utility which scans stderr for the halt application message, interrupts the process, then propagates its error signal. Conventional shell scripting is not up to the challenge of expressing this behavior. --- golang/cosmos/Makefile | 7 +++- golang/cosmos/cmd/runtillmsg/main.go | 60 ++++++++++++++++++++++++++++ packages/cosmic-swingset/Makefile | 9 ++++- 3 files changed, 72 insertions(+), 4 deletions(-) create mode 100644 golang/cosmos/cmd/runtillmsg/main.go diff --git a/golang/cosmos/Makefile b/golang/cosmos/Makefile index 3b1aee787f3..02692a44cb3 100644 --- a/golang/cosmos/Makefile +++ b/golang/cosmos/Makefile @@ -47,7 +47,7 @@ SHARED_BUILD_FLAGS := -tags "$(build_tags)" -gcflags '$(gcflags)' -ldflags '$(sh all: compile-chain -compile-chain: compile-agd compile-daemon +compile-chain: compile-agd compile-daemon compile-tools compile-go: compile-agd compile-libdaemon compile-node: node-compile-gyp @@ -77,6 +77,9 @@ compile-libdaemon: go-mod-cache go build -v $(MOD_READONLY) $(SHARED_BUILD_FLAGS) -buildmode=c-shared \ -o build/libagcosmosdaemon.so ./cmd/libdaemon/main.go +compile-tools: + go build -o build/runtillmsg ./cmd/runtillmsg + go-mod-cache: go.sum @echo "--> Download go modules to local cache" @go mod download @@ -106,7 +109,7 @@ t: TM_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/tendermint/tendermint)/proto/tendermint GOGO_PROTO_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/gogo/protobuf) -IBC_PROTO_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/cosmos/ibc-go/v3)/proto/ibc/core +IBC_PROTO_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/cosmos/ibc-go/v4)/proto/ibc/core COSMOS_SDK_PROTO_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/cosmos/cosmos-sdk)/proto/cosmos GOGO_PROTO_TYPES = third_party/proto/gogoproto diff --git a/golang/cosmos/cmd/runtillmsg/main.go b/golang/cosmos/cmd/runtillmsg/main.go new file mode 100644 index 00000000000..2c99708b1db --- /dev/null +++ b/golang/cosmos/cmd/runtillmsg/main.go @@ -0,0 +1,60 @@ +package main + +// Runs a subcommand until a given string is seen on a line in the stderr output, +// then sends SIGINT the subprocess and propagates its exit status. + +import ( + "bufio" + "log" + "os" + "os/exec" + "strings" + "syscall" +) + +func main() { + if len(os.Args) < 3 { + log.Fatal("usage: runtillmsg msg cmd arg...") + } + msg, cmdName, args := os.Args[1], os.Args[2], os.Args[3:] + + // launch the command and listen to its stderr + cmd := exec.Command(cmdName, args...) + stderr, err := cmd.StderrPipe() + if err != nil { + log.Fatal(err) + } + err = cmd.Start() + if err != nil { + log.Fatal(err) + } + + // copy lines of stderr, but interrupt the command if we see msg + scanner := bufio.NewScanner(stderr) + for scanner.Scan() { + line := scanner.Text() + if strings.Contains(line, msg) { + err = cmd.Process.Signal(syscall.SIGINT) + if err != nil { + log.Fatal(err) + } + } + os.Stderr.WriteString(line + "\n") + } + err = scanner.Err() + if err != nil { + log.Fatal(err) + } + stderr.Close() + + // wait for the command to exit, and propagate its exit code + err = cmd.Wait() + if err != nil { + if exitErr, ok := err.(*exec.ExitError); ok { + os.Exit(exitErr.ExitCode()) + } + log.Fatal(err) + os.Exit(2) + } + // if cmd.Wait returns nil, exit code was 0, so just end +} diff --git a/packages/cosmic-swingset/Makefile b/packages/cosmic-swingset/Makefile index be464ea28f6..e87f9b1a94c 100644 --- a/packages/cosmic-swingset/Makefile +++ b/packages/cosmic-swingset/Makefile @@ -156,11 +156,16 @@ scenario2-run-chain: ../vats/decentral-devnet-config.json OTEL_EXPORTER_PROMETHEUS_PORT=$(OTEL_EXPORTER_PROMETHEUS_PORT) \ $(AGC) --home=t1/n0 start --log_level=warn $(AGC_START_ARGS) +tools: + cd ../../golang/cosmos && make compile-tools + # Run a chain with an explicit halt. BLOCKS_TO_RUN=3 -scenario2-run-chain-to-halt: t1/decentral-economy-config.json +scenario2-run-chain-to-halt: t1/decentral-economy-config.json tools CHAIN_BOOTSTRAP_VAT_CONFIG="$$PWD/t1/decentral-economy-config.json" \ - $(AGC) --home=t1/n0 start --log_level=warn --halt-height=$$(($(INITIAL_HEIGHT) + $(BLOCKS_TO_RUN))); \ + DEBUG=$(DEBUG) PATH="$$PWD/bin:$$PATH" \ + ../../golang/cosmos/build/runtillmsg "halt application" \ + "$(SDK_ROOT)/bin/agd" --home=t1/n0 start --log_level=warn --halt-height=$$(($(INITIAL_HEIGHT) + $(BLOCKS_TO_RUN))); \ test "$$?" -eq 98 echo ran to $(INITIAL_HEIGHT) + $(BLOCKS_TO_RUN) From 3a37f5e472405d1d3bee2075b47ecd3632ba4073 Mon Sep 17 00:00:00 2001 From: Jim Larson Date: Thu, 9 Nov 2023 10:20:22 -0800 Subject: [PATCH 15/39] Revert "fix: handle hang-on-halt behavior from agoric-labs/cosmos-sdk#305" This reverts commit efcc3b0dd1d45938cbb69a158bf78f29c17b75a1. We decided to roll back the problematic change (agoric-labs/cosmos-sdk#305). --- golang/cosmos/Makefile | 7 +--- golang/cosmos/cmd/runtillmsg/main.go | 60 ---------------------------- packages/cosmic-swingset/Makefile | 9 +---- 3 files changed, 4 insertions(+), 72 deletions(-) delete mode 100644 golang/cosmos/cmd/runtillmsg/main.go diff --git a/golang/cosmos/Makefile b/golang/cosmos/Makefile index 02692a44cb3..3b1aee787f3 100644 --- a/golang/cosmos/Makefile +++ b/golang/cosmos/Makefile @@ -47,7 +47,7 @@ SHARED_BUILD_FLAGS := -tags "$(build_tags)" -gcflags '$(gcflags)' -ldflags '$(sh all: compile-chain -compile-chain: compile-agd compile-daemon compile-tools +compile-chain: compile-agd compile-daemon compile-go: compile-agd compile-libdaemon compile-node: node-compile-gyp @@ -77,9 +77,6 @@ compile-libdaemon: go-mod-cache go build -v $(MOD_READONLY) $(SHARED_BUILD_FLAGS) -buildmode=c-shared \ -o build/libagcosmosdaemon.so ./cmd/libdaemon/main.go -compile-tools: - go build -o build/runtillmsg ./cmd/runtillmsg - go-mod-cache: go.sum @echo "--> Download go modules to local cache" @go mod download @@ -109,7 +106,7 @@ t: TM_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/tendermint/tendermint)/proto/tendermint GOGO_PROTO_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/gogo/protobuf) -IBC_PROTO_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/cosmos/ibc-go/v4)/proto/ibc/core +IBC_PROTO_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/cosmos/ibc-go/v3)/proto/ibc/core COSMOS_SDK_PROTO_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/cosmos/cosmos-sdk)/proto/cosmos GOGO_PROTO_TYPES = third_party/proto/gogoproto diff --git a/golang/cosmos/cmd/runtillmsg/main.go b/golang/cosmos/cmd/runtillmsg/main.go deleted file mode 100644 index 2c99708b1db..00000000000 --- a/golang/cosmos/cmd/runtillmsg/main.go +++ /dev/null @@ -1,60 +0,0 @@ -package main - -// Runs a subcommand until a given string is seen on a line in the stderr output, -// then sends SIGINT the subprocess and propagates its exit status. - -import ( - "bufio" - "log" - "os" - "os/exec" - "strings" - "syscall" -) - -func main() { - if len(os.Args) < 3 { - log.Fatal("usage: runtillmsg msg cmd arg...") - } - msg, cmdName, args := os.Args[1], os.Args[2], os.Args[3:] - - // launch the command and listen to its stderr - cmd := exec.Command(cmdName, args...) - stderr, err := cmd.StderrPipe() - if err != nil { - log.Fatal(err) - } - err = cmd.Start() - if err != nil { - log.Fatal(err) - } - - // copy lines of stderr, but interrupt the command if we see msg - scanner := bufio.NewScanner(stderr) - for scanner.Scan() { - line := scanner.Text() - if strings.Contains(line, msg) { - err = cmd.Process.Signal(syscall.SIGINT) - if err != nil { - log.Fatal(err) - } - } - os.Stderr.WriteString(line + "\n") - } - err = scanner.Err() - if err != nil { - log.Fatal(err) - } - stderr.Close() - - // wait for the command to exit, and propagate its exit code - err = cmd.Wait() - if err != nil { - if exitErr, ok := err.(*exec.ExitError); ok { - os.Exit(exitErr.ExitCode()) - } - log.Fatal(err) - os.Exit(2) - } - // if cmd.Wait returns nil, exit code was 0, so just end -} diff --git a/packages/cosmic-swingset/Makefile b/packages/cosmic-swingset/Makefile index e87f9b1a94c..be464ea28f6 100644 --- a/packages/cosmic-swingset/Makefile +++ b/packages/cosmic-swingset/Makefile @@ -156,16 +156,11 @@ scenario2-run-chain: ../vats/decentral-devnet-config.json OTEL_EXPORTER_PROMETHEUS_PORT=$(OTEL_EXPORTER_PROMETHEUS_PORT) \ $(AGC) --home=t1/n0 start --log_level=warn $(AGC_START_ARGS) -tools: - cd ../../golang/cosmos && make compile-tools - # Run a chain with an explicit halt. BLOCKS_TO_RUN=3 -scenario2-run-chain-to-halt: t1/decentral-economy-config.json tools +scenario2-run-chain-to-halt: t1/decentral-economy-config.json CHAIN_BOOTSTRAP_VAT_CONFIG="$$PWD/t1/decentral-economy-config.json" \ - DEBUG=$(DEBUG) PATH="$$PWD/bin:$$PATH" \ - ../../golang/cosmos/build/runtillmsg "halt application" \ - "$(SDK_ROOT)/bin/agd" --home=t1/n0 start --log_level=warn --halt-height=$$(($(INITIAL_HEIGHT) + $(BLOCKS_TO_RUN))); \ + $(AGC) --home=t1/n0 start --log_level=warn --halt-height=$$(($(INITIAL_HEIGHT) + $(BLOCKS_TO_RUN))); \ test "$$?" -eq 98 echo ran to $(INITIAL_HEIGHT) + $(BLOCKS_TO_RUN) From 9d750dd39993d380a5e889ea7faa4bb78c3257aa Mon Sep 17 00:00:00 2001 From: Jim Larson Date: Thu, 9 Nov 2023 11:00:28 -0800 Subject: [PATCH 16/39] fix: update dependencies to fix tests --- golang/cosmos/go.mod | 4 ++-- golang/cosmos/go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/golang/cosmos/go.mod b/golang/cosmos/go.mod index 225f4377ee0..c7e7b8692ea 100644 --- a/golang/cosmos/go.mod +++ b/golang/cosmos/go.mod @@ -155,10 +155,10 @@ replace google.golang.org/grpc => google.golang.org/grpc v1.33.2 // At least until post-v0.34.14 is released with // https://github.com/tendermint/tendermint/issue/6899 resolved. -replace github.com/tendermint/tendermint => github.com/agoric-labs/cometbft v0.34.27-alpha.agoric.2 +replace github.com/tendermint/tendermint => github.com/agoric-labs/cometbft v0.34.27-alpha.agoric.3 // We need a fork of cosmos-sdk until all of the differences are merged. -replace github.com/cosmos/cosmos-sdk => github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.1 +replace github.com/cosmos/cosmos-sdk => github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.2 // For testing against a local cosmos-sdk or tendermint // replace github.com/cosmos/cosmos-sdk => ../../../forks/cosmos-sdk diff --git a/golang/cosmos/go.sum b/golang/cosmos/go.sum index b0b21ef7cea..af840110b2c 100644 --- a/golang/cosmos/go.sum +++ b/golang/cosmos/go.sum @@ -91,10 +91,10 @@ github.com/Zilliqa/gozilliqa-sdk v1.2.1-0.20201201074141-dd0ecada1be6/go.mod h1: github.com/adlio/schema v1.3.3 h1:oBJn8I02PyTB466pZO1UZEn1TV5XLlifBSyMrmHl/1I= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/agoric-labs/cometbft v0.34.27-alpha.agoric.2 h1:uxyEDxypJPHAdywY2ECDZu+//JaLKZenslkNNd+gyFs= -github.com/agoric-labs/cometbft v0.34.27-alpha.agoric.2/go.mod h1:BcCbhKv7ieM0KEddnYXvQZR+pZykTKReJJYf7YC7qhw= -github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.1 h1:hYFQe3ndZ+9L6RUYdPqbU1AMRe3fV7gGLwNg2iUwU4M= -github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.1/go.mod h1:T0VCPrAAeps81/pnD8b0+oBCMDxrkrD48W1t/XYYUeI= +github.com/agoric-labs/cometbft v0.34.27-alpha.agoric.3 h1:RrKcZClqKav60DA4XEEskEwSsNB3l4ENkBVR66jORvQ= +github.com/agoric-labs/cometbft v0.34.27-alpha.agoric.3/go.mod h1:BcCbhKv7ieM0KEddnYXvQZR+pZykTKReJJYf7YC7qhw= +github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.2 h1:zwYWlYI1le3ctFlgnOX0tFDnTa5jCxKaLfFfNbTJuOg= +github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.2/go.mod h1:T0VCPrAAeps81/pnD8b0+oBCMDxrkrD48W1t/XYYUeI= github.com/agoric-labs/cosmos-sdk/ics23/go v0.8.0-alpha.agoric.1 h1:2jvHI/2d+psWAZy6FQ0vXJCHUtfU3ZbbW+pQFL04arQ= github.com/agoric-labs/cosmos-sdk/ics23/go v0.8.0-alpha.agoric.1/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= From db4dc7b1ffbddfa05d9e2eb6703eddf567c6ec89 Mon Sep 17 00:00:00 2001 From: Jim Larson Date: Thu, 9 Nov 2023 15:33:17 -0800 Subject: [PATCH 17/39] chore: upgrade ibc-go to latest patch version --- golang/cosmos/go.mod | 4 ++-- golang/cosmos/go.sum | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/golang/cosmos/go.mod b/golang/cosmos/go.mod index c7e7b8692ea..a15c42a7e9e 100644 --- a/golang/cosmos/go.mod +++ b/golang/cosmos/go.mod @@ -5,7 +5,7 @@ go 1.20 require ( github.com/armon/go-metrics v0.4.1 github.com/cosmos/cosmos-sdk v0.45.16 - github.com/cosmos/ibc-go/v4 v4.4.2 + github.com/cosmos/ibc-go/v4 v4.5.1 github.com/gogo/protobuf v1.3.3 github.com/golang/protobuf v1.5.2 github.com/gorilla/mux v1.8.0 @@ -45,7 +45,7 @@ require ( github.com/cockroachdb/redact v1.1.3 // indirect github.com/coinbase/rosetta-sdk-go v0.7.9 // indirect github.com/cometbft/cometbft-db v0.7.0 // indirect - github.com/confio/ics23/go v0.9.0 // indirect + github.com/confio/ics23/go v0.9.1 // indirect github.com/cosmos/btcutil v1.0.4 // indirect github.com/cosmos/cosmos-db v0.0.0-20221226095112-f3c38ecb5e32 // indirect github.com/cosmos/cosmos-proto v1.0.0-beta.1 // indirect diff --git a/golang/cosmos/go.sum b/golang/cosmos/go.sum index af840110b2c..bc689e53a52 100644 --- a/golang/cosmos/go.sum +++ b/golang/cosmos/go.sum @@ -233,8 +233,8 @@ github.com/cosmos/gorocksdb v1.2.0 h1:d0l3jJG8M4hBouIZq0mDUHZ+zjOx044J3nGRskwTb4 github.com/cosmos/gorocksdb v1.2.0/go.mod h1:aaKvKItm514hKfNJpUJXnnOWeBnk2GL4+Qw9NHizILw= github.com/cosmos/iavl v0.19.5 h1:rGA3hOrgNxgRM5wYcSCxgQBap7fW82WZgY78V9po/iY= github.com/cosmos/iavl v0.19.5/go.mod h1:X9PKD3J0iFxdmgNLa7b2LYWdsGd90ToV5cAONApkEPw= -github.com/cosmos/ibc-go/v4 v4.4.2 h1:PG4Yy0/bw6Hvmha3RZbc53KYzaCwuB07Ot4GLyzcBvo= -github.com/cosmos/ibc-go/v4 v4.4.2/go.mod h1:j/kD2JCIaV5ozvJvaEkWhLxM2zva7/KTM++EtKFYcB8= +github.com/cosmos/ibc-go/v4 v4.5.1 h1:+P73X7aIikGAXBUJ9vP9rEbvdSuekt3KGXmAWCSYets= +github.com/cosmos/ibc-go/v4 v4.5.1/go.mod h1:2EOi40Bx/j6rJrtP1ui8k8yUAMpGybmL1EjakYqYv5U= github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= github.com/cosmos/keyring v1.2.0/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/cosmos/ledger-cosmos-go v0.12.2 h1:/XYaBlE2BJxtvpkHiBm97gFGSGmYGKunKyF3nNqAXZA= From 057f9f0c85acfdf6ac5f25d10475f633dcf16038 Mon Sep 17 00:00:00 2001 From: Jim Larson Date: Fri, 10 Nov 2023 19:14:50 -0800 Subject: [PATCH 18/39] docs: update changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68309f64855..68752e15373 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline ## Unreleased +* Cosmos-SDK updates + * Consensus library to cometbft/cometbft v0.34.27 + * Cosmos library to cosmos/cosmos-sdk v0.45.16 + * IBC module to cosmos/ibc-go v4.5.1 + ## Mainnet1B (agoric-upgrade-10) * Vaults From 8111c4344bcaa6e06085020813e2431cba9d1632 Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Thu, 16 Nov 2023 19:05:39 +0000 Subject: [PATCH 19/39] fix(cli): handle not found error in vstorage requests --- packages/agoric-cli/src/lib/rpc.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/agoric-cli/src/lib/rpc.js b/packages/agoric-cli/src/lib/rpc.js index c4214726b43..759ab9f9df0 100644 --- a/packages/agoric-cli/src/lib/rpc.js +++ b/packages/agoric-cli/src/lib/rpc.js @@ -79,9 +79,13 @@ export const makeVStorage = (powers, config = networkConfig) => { result: { response }, } = data; if (response?.code !== 0) { - throw Error( + /** @type {any} */ + const err = Error( `error code ${response?.code} reading ${kind} of ${path}: ${response.log}`, ); + err.code = response?.code; + err.codespace = response?.codespace; + throw err; } return data; }); @@ -143,7 +147,14 @@ export const makeVStorage = (powers, config = networkConfig) => { )); // console.debug('readAt returned', { blockHeight }); } catch (err) { - if (err.message.match(/unknown request/)) { + if ( + // CosmosSDK ErrNotFound; there is no data at the path + (err.codespace === 'sdk' && err.code === 38) || + // CosmosSDK ErrUnknownRequest; misrepresentation of the same until + // https://github.com/Agoric/agoric-sdk/commit/dafc7c1708977aaa55e245dc09a73859cf1df192 + // TODO remove after upgrade-12 + err.message.match(/unknown request/) + ) { // console.error(err); break; } From 715141be8356cf2798d21de2ab06e129c51a7dfe Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Fri, 17 Nov 2023 02:21:48 +0000 Subject: [PATCH 20/39] chore(x/vstorage): add querier test --- .../cosmos/x/vstorage/keeper/querier_test.go | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 golang/cosmos/x/vstorage/keeper/querier_test.go diff --git a/golang/cosmos/x/vstorage/keeper/querier_test.go b/golang/cosmos/x/vstorage/keeper/querier_test.go new file mode 100644 index 00000000000..c07494bb168 --- /dev/null +++ b/golang/cosmos/x/vstorage/keeper/querier_test.go @@ -0,0 +1,112 @@ +package keeper + +import ( + "bytes" + "testing" + + agoric "github.com/Agoric/agoric-sdk/golang/cosmos/types" + + abci "github.com/tendermint/tendermint/abci/types" + + "github.com/cosmos/cosmos-sdk/codec" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +func TestQuerier(t *testing.T) { + testKit := makeTestKit() + ctx, keeper := testKit.ctx, testKit.vstorageKeeper + legacyQuerierCdc := codec.NewAminoCodec(codec.NewLegacyAmino()) + querier := NewQuerier(keeper, legacyQuerierCdc.LegacyAmino) + + // Populate mock data + keeper.SetStorage(ctx, agoric.NewKVEntry("foo.bar", "42")) + keeper.SetStorage(ctx, agoric.NewKVEntry("foo.baz", "hello")) + + type testCase struct { + label string + path []string + expected []byte + err *sdkerrors.Error + } + testCases := []testCase{} + + // Test invalid endpoint + testCases = append(testCases, []testCase{ + {label: "invalid endpoint", + path: []string{"foo"}, + err: sdkerrors.ErrUnknownRequest, + }, + }...) + + // Test invalid arguments to valid data and children endpoints + for _, endpoint := range []string{"data", "children"} { + testCases = append(testCases, []testCase{ + {label: endpoint + ": no entry path", + path: []string{endpoint}, + err: sdkerrors.ErrInvalidRequest, + }, + {label: endpoint + ": too many segments", + path: []string{endpoint, "foo", "bar"}, + err: sdkerrors.ErrInvalidRequest, + }, + {label: endpoint + ": invalid path", + path: []string{endpoint, ".", ""}, + err: sdkerrors.ErrInvalidRequest, + }, + }...) + } + + // Test data endpoint with valid vstorage path + testCases = append(testCases, []testCase{ + {label: "data: non-existent path", + path: []string{"data", "bar"}, + // DO NOT CHANGE + // The UI and CLI check for the specific cosmos-sdk error code & codespace + err: sdkerrors.ErrNotFound, + }, + {label: "data: path with no data", + path: []string{"data", "foo"}, + // DO NOT CHANGE + // The UI and CLI check for the specific cosmos-sdk error code & codespace + err: sdkerrors.ErrNotFound, + }, + {label: "data: path with data", + path: []string{"data", "foo.bar"}, + expected: []byte("{\n \"value\": \"42\"\n}"), + }, + }...) + + // Ensure stability of cosmos-sdk error codes + if codespace, code, _ := sdkerrors.ABCIInfo(sdkerrors.ErrNotFound, true); codespace != "sdk" || code != 38 { + t.Errorf("cosmos-sdk ErrNotFound has codespace %s, code %d, expected sdk/38", codespace, code) + } + + // Test children endpoint with valid vstorage path + testCases = append(testCases, []testCase{ + {label: "children: non-existent path", + path: []string{"children", "bar"}, + expected: []byte("{\n \"children\": []\n}"), + }, + {label: "children: path with no children", + path: []string{"children", "foo.bar"}, + expected: []byte("{\n \"children\": []\n}"), + }, + {label: "children: path with children", + path: []string{"children", "foo"}, + expected: []byte("{\n \"children\": [\n \"bar\",\n \"baz\"\n ]\n}"), + }, + }...) + + for _, desc := range testCases { + res, err := querier(ctx, desc.path, abci.RequestQuery{}) + if desc.err != nil { + if err == nil { + t.Errorf("%s: got no error, want error %q", desc.label, *desc.err) + } else if codespace, code, _ := sdkerrors.ABCIInfo(err, true); codespace != desc.err.Codespace() || code != desc.err.ABCICode() { + t.Errorf("%s: got error %v, want error %q", desc.label, err, *desc.err) + } + } else if !bytes.Equal(res, desc.expected) { + t.Errorf("%s: wrong result: %#v, expected %#v", desc.label, string(res), string(desc.expected)) + } + } +} From 0095b0d8ef4cfd42e17b64f391c30eac8a5f018a Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Wed, 15 Nov 2023 17:48:53 -0600 Subject: [PATCH 21/39] fix(solo): properly expose `/wallet/bridge.html` (#8533) --- packages/solo/src/web.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/solo/src/web.js b/packages/solo/src/web.js index 25547a6b550..25749f006f7 100644 --- a/packages/solo/src/web.js +++ b/packages/solo/src/web.js @@ -9,6 +9,7 @@ import { createProxyMiddleware } from 'http-proxy-middleware'; import WebSocket from 'ws'; import anylogger from 'anylogger'; import morgan from 'morgan'; +import { format as urlFormat } from 'url'; import { getAccessToken } from '@agoric/access-token'; @@ -148,21 +149,29 @@ export async function makeHTTPListener( const htmldir = path.join(basedir, 'html'); log(`Serving static files from ${htmldir}`); app.use(express.static(htmldir)); - app.use(express.static(new URL('../public', import.meta.url).pathname)); + const soloHtmlDir = new URL('../public', import.meta.url).pathname; + app.use(express.static(soloHtmlDir)); if (walletHtmlDir && !bridgeTarget) { - // Transition localStorage based bridge + // Guide all callers to /wallet/bridge.html if (existsSync(path.join(walletHtmlDir, 'bridge.html'))) { - console.log('redirecting wallet bridge'); + console.log('redirecting /wallet-bridge.html to /wallet/bridge.html'); app.get('/wallet-bridge.html', (req, res) => - res.redirect('/wallet/bridge.html'), + res.redirect( + urlFormat({ pathname: '/wallet/bridge.html', query: req.query }), + ), + ); + } else { + console.log('serving /wallet/bridge.html from solo wallet-bridge.html'); + app.get('/wallet/bridge.html', (_, res) => + res.sendFile(path.resolve(soloHtmlDir, 'wallet-bridge.html')), ); } // Serve the wallet directory. app.use('/wallet', express.static(walletHtmlDir)); - // Default GETs to /wallet/index.html for history routing. + // Default non-bridge GETs to /wallet/index.html for history routing. app.get('/wallet/*', (_, res) => res.sendFile(path.resolve(walletHtmlDir, 'index.html')), ); From 3f0136994c0b4033c872f9593cabb19bab05f01c Mon Sep 17 00:00:00 2001 From: samsiegart Date: Thu, 23 Nov 2023 09:37:54 -0800 Subject: [PATCH 22/39] fix(casting): dont crash on bad capdata --- packages/agoric-cli/src/lib/wallet.js | 7 ++++ packages/casting/src/follower-cosmjs.js | 15 ++++--- packages/casting/src/types.js | 11 +++-- packages/casting/test/test-mvp.js | 56 +++++++++++++++++++++++++ 4 files changed, 80 insertions(+), 9 deletions(-) diff --git a/packages/agoric-cli/src/lib/wallet.js b/packages/agoric-cli/src/lib/wallet.js index d37188f9c5b..36c7d6d7bcc 100644 --- a/packages/agoric-cli/src/lib/wallet.js +++ b/packages/agoric-cli/src/lib/wallet.js @@ -112,6 +112,13 @@ export const coalesceWalletState = async (follower, invitationBrand) => { // values with oldest last const history = []; for await (const followerElement of iterateReverse(follower)) { + if ('error' in followerElement) { + console.error( + 'Skipping wallet update due to error:', + followerElement.error, + ); + continue; + } history.push(followerElement.value); } diff --git a/packages/casting/src/follower-cosmjs.js b/packages/casting/src/follower-cosmjs.js index 8a966fb4c1e..3ba1b59526b 100644 --- a/packages/casting/src/follower-cosmjs.js +++ b/packages/casting/src/follower-cosmjs.js @@ -330,11 +330,16 @@ export const makeCosmjsFollower = ( blockHeight, currentBlockHeight, ) => { - // AWAIT - const value = await /** @type {T} */ ( - unserializer ? E(unserializer).fromCapData(data) : data - ); - return { value, blockHeight, currentBlockHeight }; + await null; + try { + // AWAIT + const value = await /** @type {T} */ ( + unserializer ? E(unserializer).fromCapData(data) : data + ); + return { value, blockHeight, currentBlockHeight }; + } catch (e) { + return { blockHeight, currentBlockHeight, error: e, value: undefined }; + } }; /** diff --git a/packages/casting/src/types.js b/packages/casting/src/types.js index a746b16cd12..b789ae7a291 100644 --- a/packages/casting/src/types.js +++ b/packages/casting/src/types.js @@ -40,14 +40,17 @@ export {}; */ /** - * @see {ChangeFollower} - * @template T - * @typedef {object} ValueFollowerElement - * @property {T} value + * @typedef {object} ValueFollowerBase * @property {number} blockHeight * @property {number} currentBlockHeight */ +/** + * @see {ChangeFollower} + * @template T + * @typedef {ValueFollowerBase & ({ value: T } | { value: undefined, error: any })} ValueFollowerElement + */ + /** * @typedef {Pick, 'fromCapData' | 'unserialize'>} Unserializer */ diff --git a/packages/casting/test/test-mvp.js b/packages/casting/test/test-mvp.js index 6a7f051c27a..1dfffc138b2 100644 --- a/packages/casting/test/test-mvp.js +++ b/packages/casting/test/test-mvp.js @@ -1,5 +1,8 @@ // @ts-nocheck // eslint-disable-next-line import/order +import './lockdown.js'; + +import { makeMarshal } from '@endo/marshal'; import { test } from './prepare-test-env-ava.js'; import { @@ -167,6 +170,59 @@ test('unrecognized proof', async t => { ); }); +test('yields error on bad capdata without terminating', async t => { + const marshal = makeMarshal(); + const improperlyMarshalledData = { bad: 'data' }; + const properlyMarshalledData = { foo: 'bar' }; + const fakeValues = [ + improperlyMarshalledData, + marshal.toCapData(harden(properlyMarshalledData)), + ]; + t.plan(4); + const options = { batchSize: 1, marshaller: { toCapData: data => data } }; + const { controller, PORT } = await t.context.startFakeServer( + t, + fakeValues, + options, + ); + controller.advance(0); + /** @type {import('../src/types.js').LeaderOptions} */ + const lo = { + retryCallback: null, // fail fast, no retries + keepPolling: () => delay(1000).then(() => true), // poll really quickly + jitter: null, // no jitter + }; + /** @type {import('../src/types.js').FollowerOptions} */ + const so = { + proof: 'none', + }; + + const leader = makeLeader(`http://localhost:${PORT}/network-config`, lo); + const castingSpec = makeCastingSpec(':mailbox.agoric1foobarbaz'); + const follower = await makeFollower(castingSpec, leader, so); + let i = 0; + // eslint-disable-next-line no-unreachable-loop + for await (const { value, error } of iterateEach(follower)) { + if (i === 0) { + t.log(`value from follower, should be undefined:`, value); + t.log(`error from follower, should be defined:`, error); + + t.deepEqual(value, undefined); + t.assert(typeof error === 'object'); + + i += 1; + controller.advance(1); + } else if (i === 1) { + t.log(`value from follower, should be defined:`, value); + t.log(`error from follower, should be undefined:`, error); + + t.deepEqual(value, properlyMarshalledData); + t.deepEqual(error, undefined); + break; + } + } +}); + test.before(t => { t.context.cleanups = []; t.context.startFakeServer = startFakeServer; From 0ac969746c7337d45287fd040b636d27d296a062 Mon Sep 17 00:00:00 2001 From: Dan Connolly Date: Fri, 13 Oct 2023 21:48:22 -0500 Subject: [PATCH 23/39] fix(agops): fix continuing id lookup in oracle setPrice needs instance based on --pair --- packages/agoric-cli/src/commands/oracle.js | 39 +++++++++++++++------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/packages/agoric-cli/src/commands/oracle.js b/packages/agoric-cli/src/commands/oracle.js index 5161a35311f..5019d73091b 100644 --- a/packages/agoric-cli/src/commands/oracle.js +++ b/packages/agoric-cli/src/commands/oracle.js @@ -71,6 +71,11 @@ export const makeOracleCommand = (logger, io = {}) => { env.AGORIC_KEYRING_BACKEND, ); + const normalizeAddress = literalOrName => + normalizeAddressWithOptions(literalOrName, oracle.opts(), { + execFileSync, + }); + const rpcTools = async () => { // XXX pass fetch to getNetworkConfig() explicitly const networkConfig = await getNetworkConfig(env); @@ -162,7 +167,7 @@ export const makeOracleCommand = (logger, io = {}) => { console.warn('Now execute the prepared offer'); }); - const findOracleCap = async (from, readLatestHead) => { + const findOracleCap = async (instance, from, readLatestHead) => { const current = await getCurrent(from, { readLatestHead }); const { offerToUsedInvitation: entries } = /** @type {any} */ (current); @@ -170,8 +175,8 @@ export const makeOracleCommand = (logger, io = {}) => { for (const [offerId, { value }] of entries) { /** @type {{ description: string, instance: unknown }[]} */ - const [{ description }] = value; - if (description === 'oracle invitation') { + const [{ description, instance: candidate }] = value; + if (description === 'oracle invitation' && candidate === instance) { return offerId; } } @@ -180,11 +185,22 @@ export const makeOracleCommand = (logger, io = {}) => { oracle .command('find-continuing-id') .description('print id of specified oracle continuing invitation') - .requiredOption('--from
', 'from address', String) + .requiredOption( + '--from
', + 'wallet address literal or name', + normalizeAddress, + ) + .requiredOption( + '--pair [brandIn.brandOut]', + 'token pair (brandIn.brandOut)', + s => s.split('.'), + ) .action(async opts => { - const { readLatestHead } = await makeRpcUtils({ fetch }); + const { readLatestHead, lookupPriceAggregatorInstance } = + await rpcTools(); + const instance = lookupPriceAggregatorInstance(opts.pair); - const offerId = await findOracleCap(opts.from, readLatestHead); + const offerId = await findOracleCap(instance, opts.from, readLatestHead); if (!offerId) { console.error('No continuing ids found'); } @@ -212,11 +228,6 @@ export const makeOracleCommand = (logger, io = {}) => { console.log(inspect(capDatas[0], { depth: 10, colors: true })); }); - /** @param {string} literalOrName */ - const normalizeAddress = literalOrName => - normalizeAddressWithOptions(literalOrName, oracle.opts(), { - execFileSync, - }); const show = (info, indent = false) => stdout.write( `${JSON.stringify(info, bigintReplacer, indent ? 2 : undefined)}\n`, @@ -250,7 +261,8 @@ export const makeOracleCommand = (logger, io = {}) => { * }} */ { pair, keys, price }, ) => { - const { readLatestHead, networkConfig } = await rpcTools(); + const { readLatestHead, networkConfig, lookupPriceAggregatorInstance } = + await rpcTools(); const wutil = await makeWalletUtils( { fetch, execFileSync, delay }, networkConfig, @@ -308,9 +320,12 @@ export const makeOracleCommand = (logger, io = {}) => { console.warn(err); }); + const instance = lookupPriceAggregatorInstance(pair); + console.error('pushPrice from each:', keyOrder); for await (const from of keyOrder) { const oracleAdminAcceptOfferId = await findOracleCap( + instance, from, readLatestHead, ); From 54127afe397f2ee64e20a9d69d85b4427a6139c0 Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Sun, 3 Dec 2023 21:57:19 +0000 Subject: [PATCH 24/39] chore(upgrade-test): various fixes --- packages/deployment/upgrade-test/Makefile | 2 +- .../deployment/upgrade-test/upgrade-test-scripts/env_setup.sh | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/deployment/upgrade-test/Makefile b/packages/deployment/upgrade-test/Makefile index ce3e13f8fa9..037ca5df85d 100644 --- a/packages/deployment/upgrade-test/Makefile +++ b/packages/deployment/upgrade-test/Makefile @@ -41,6 +41,6 @@ run_test: $(RUN) -e "DEST=0" $(REPOSITORY):$(dockerLabel) shell: - docker exec -it `docker ps --latest --format json | jq -r .Names` bash + docker exec -it `docker ps --latest --format '{{json .}}' | jq -r .Names` bash .PHONY: local_sdk agoric-upgrade-13 build build_test run diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/env_setup.sh b/packages/deployment/upgrade-test/upgrade-test-scripts/env_setup.sh index 5f1248f3c12..8fca4b63ec5 100755 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/env_setup.sh +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/env_setup.sh @@ -1,6 +1,8 @@ #!/bin/bash -set -e # exit when any command fails +if [ -z "$PS1" ]; then + set -e # exit when any command fails +fi echo ENV_SETUP starting From 868f69274a80fbf23ade9e3fadbe05e45c1f8625 Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Sun, 3 Dec 2023 23:59:23 +0000 Subject: [PATCH 25/39] chore(upgrade-test): remove BOOTSTRAP_MODE --- .github/workflows/test-all-packages.yml | 5 +---- packages/deployment/upgrade-test/Dockerfile | 8 +++----- packages/deployment/upgrade-test/Makefile | 11 +++-------- .../upgrade-test/upgrade-test-scripts/constants.js | 1 - .../upgrade-test/upgrade-test-scripts/env_setup.sh | 12 +++--------- .../upgrade-test/upgrade-test-scripts/start_to_to.sh | 5 ----- 6 files changed, 10 insertions(+), 32 deletions(-) diff --git a/.github/workflows/test-all-packages.yml b/.github/workflows/test-all-packages.yml index ab79771ce14..de43fda2f16 100644 --- a/.github/workflows/test-all-packages.yml +++ b/.github/workflows/test-all-packages.yml @@ -550,9 +550,6 @@ jobs: test-docker-build: runs-on: ubuntu-latest timeout-minutes: 60 - strategy: - matrix: - bootstrap-version: ['test', 'main'] steps: - name: free up additional worker space run: | @@ -571,7 +568,7 @@ jobs: # XXX skip TAP test output and collection for now; it hides the output from the logs run: cd packages/deployment && make docker-build-sdk - name: docker build upgrade test - run: cd packages/deployment/upgrade-test && docker build --build-arg BOOTSTRAP_MODE=${{ matrix.bootstrap-version }} --build-arg DEST_IMAGE=ghcr.io/agoric/agoric-sdk:latest -t docker-upgrade-test:latest -f Dockerfile upgrade-test-scripts + run: cd packages/deployment/upgrade-test && docker build --build-arg DEST_IMAGE=ghcr.io/agoric/agoric-sdk:latest -t docker-upgrade-test:latest -f Dockerfile upgrade-test-scripts - name: docker run upgrade final stage run: docker run --env "DEST=0" docker-upgrade-test:latest - uses: ./.github/actions/post-test diff --git a/packages/deployment/upgrade-test/Dockerfile b/packages/deployment/upgrade-test/Dockerfile index d39fa17a4a8..12120ca898b 100644 --- a/packages/deployment/upgrade-test/Dockerfile +++ b/packages/deployment/upgrade-test/Dockerfile @@ -1,14 +1,13 @@ # Defaults ARG BASE_IMAGE=ghcr.io/agoric/agoric-3-proposals:pr-33 ARG DEST_IMAGE=ghcr.io/agoric/agoric-sdk:dev -ARG BOOTSTRAP_MODE=main # TODO different naming scheme for upgrade handler (in app.go) and the image name # UPGRADE FROM ${BASE_IMAGE} as propose-agoric-upgrade-13 -ARG BOOTSTRAP_MODE UPGRADE_INFO -ENV THIS_NAME= UPGRADE_TO="agoric-upgrade-13" UPGRADE_INFO=${UPGRADE_INFO} BOOTSTRAP_MODE=${BOOTSTRAP_MODE} +ARG UPGRADE_INFO +ENV THIS_NAME= UPGRADE_TO="agoric-upgrade-13" UPGRADE_INFO=${UPGRADE_INFO} WORKDIR /usr/src/agoric-sdk/ COPY --chmod=755 ./env_setup.sh ./start_to_to.sh ./upgrade-test-scripts/ @@ -19,8 +18,7 @@ RUN . ./upgrade-test-scripts/start_to_to.sh #this is agoric-upgrade-13 ARG DEST_IMAGE FROM ${DEST_IMAGE} as agoric-upgrade-13 -ARG BOOTSTRAP_MODE -ENV THIS_NAME=agoric-upgrade-13 BOOTSTRAP_MODE=${BOOTSTRAP_MODE} USE_JS=1 +ENV THIS_NAME=agoric-upgrade-13 USE_JS=1 COPY --from=propose-agoric-upgrade-13 /root/.agoric /root/.agoric # start-chain boilerplate WORKDIR /usr/src/agoric-sdk/ diff --git a/packages/deployment/upgrade-test/Makefile b/packages/deployment/upgrade-test/Makefile index 037ca5df85d..9f85b6881a1 100644 --- a/packages/deployment/upgrade-test/Makefile +++ b/packages/deployment/upgrade-test/Makefile @@ -1,7 +1,6 @@ REPOSITORY = agoric/upgrade-test # use :dev (latest prerelease image) unless we build local sdk DEST_IMAGE ?= $(if $(findstring local_sdk,$(MAKECMDGOALS)),ghcr.io/agoric/agoric-sdk:latest,ghcr.io/agoric/agoric-sdk:dev) -BOOTSTRAP_MODE?=main TARGET?=agoric-upgrade-13 dockerLabel?=$(TARGET) @echo target: $(TARGET) @@ -10,22 +9,18 @@ local_sdk: (cd ../ && make docker-build-sdk) BUILD = docker build --progress=plain $(BUILD_OPTS) \ - --build-arg BOOTSTRAP_MODE=$(BOOTSTRAP_MODE) --build-arg DEST_IMAGE=$(DEST_IMAGE) \ + --build-arg DEST_IMAGE=$(DEST_IMAGE) \ -f Dockerfile upgrade-test-scripts propose-agoric-upgrade-13: - $(BUILD) --target propose-agoric-upgrade-13 -t $(REPOSITORY):propose-agoric-upgrade-13$(TAG_SUFFIX) + $(BUILD) --target propose-agoric-upgrade-13 -t $(REPOSITORY):propose-agoric-upgrade-13 agoric-upgrade-13: propose-agoric-upgrade-13 - $(BUILD) --target agoric-upgrade-13 -t $(REPOSITORY):agoric-upgrade-13$(TAG_SUFFIX) + $(BUILD) --target agoric-upgrade-13 -t $(REPOSITORY):agoric-upgrade-13 # build main bootstrap build: $(TARGET) -# build test bootstrap -build_test: BOOTSTRAP_MODE=test -build_test: $(TARGET) - DEBUG ?= SwingSet:ls,SwingSet:vat RUN = docker run --rm -it \ -p 26656:26656 -p 26657:26657 -p 1317:1317 \ diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/constants.js b/packages/deployment/upgrade-test/upgrade-test-scripts/constants.js index d5a7d1c3e8e..35235a95478 100644 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/constants.js +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/constants.js @@ -4,7 +4,6 @@ export const GOV3ADDR = process.env.GOV3ADDR; export const USER1ADDR = process.env.USER1ADDR; export const VALIDATORADDR = process.env.VALIDATORADDR; -export const BOOTSTRAP_MODE = process.env.BOOTSTRAP_MODE; export const PSM_PAIR = process.env.PSM_PAIR; export const ATOM_DENOM = process.env.ATOM_DENOM; diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/env_setup.sh b/packages/deployment/upgrade-test/upgrade-test-scripts/env_setup.sh index 8fca4b63ec5..e1b2ee402c5 100755 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/env_setup.sh +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/env_setup.sh @@ -206,15 +206,9 @@ printKeys() { } -export USDC_DENOM="ibc/toyusdc" -# Recent transfer to Emerynet -export ATOM_DENOM="ibc/06362C6F7F4FB702B94C13CD2E7C03DEC357683FD978936340B43FBFBC5351EB" -export PSM_PAIR="IST.ToyUSD" -if [[ "$BOOTSTRAP_MODE" == "main" ]]; then - export USDC_DENOM="ibc/295548A78785A1007F232DE286149A6FF512F180AF5657780FC89C009E2C348F" - export ATOM_DENOM="ibc/BA313C4A19DFBF943586C0387E6B11286F9E416B4DD27574E6909CABE0E342FA" - export PSM_PAIR="IST.USDC_axl" -fi +export USDC_DENOM="ibc/295548A78785A1007F232DE286149A6FF512F180AF5657780FC89C009E2C348F" +export ATOM_DENOM="ibc/BA313C4A19DFBF943586C0387E6B11286F9E416B4DD27574E6909CABE0E342FA" +export PSM_PAIR="IST.USDC_axl" # additional env specific to a version if [[ -n "$THIS_NAME" ]] && test -f ./upgrade-test-scripts/$THIS_NAME/env_setup.sh; then diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/start_to_to.sh b/packages/deployment/upgrade-test/upgrade-test-scripts/start_to_to.sh index 75ed52d120c..192780549a8 100644 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/start_to_to.sh +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/start_to_to.sh @@ -26,11 +26,6 @@ if [[ "$DEST" != "1" ]]; then exit 0 fi - if [[ "$BOOTSTRAP_MODE" == "test" ]]; then - UPGRADE_TO=${UPGRADE_TO//agoric-/agorictest-} - fi - - voting_period_s=10 latest_height=$(agd status | jq -r .SyncInfo.latest_block_height) height=$(( $latest_height + $voting_period_s + 10 )) From deab7e4065fe5dd6cc1a3c5bf8c0db861cb7856b Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Mon, 4 Dec 2023 08:58:15 -0600 Subject: [PATCH 26/39] fix(agoric): print errors while following --- packages/agoric-cli/src/follow.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/agoric-cli/src/follow.js b/packages/agoric-cli/src/follow.js index c39ceefb705..745afc5830f 100644 --- a/packages/agoric-cli/src/follow.js +++ b/packages/agoric-cli/src/follow.js @@ -142,9 +142,12 @@ export default async function followerMain(progname, rawArgs, powers, opts) { verbose && console.warn('Following', spec); const castingSpec = makeCastingSpec(spec); const follower = makeFollower(castingSpec, leader, followerOptions); - for await (const { value, blockHeight, currentBlockHeight } of iterate( - follower, - )) { + for await (const obj of iterate(follower)) { + if ('error' in obj) { + console.error('Error following:', obj.error); + continue; + } + const { value, blockHeight, currentBlockHeight } = obj; const blockHeightPrefix = opts.blockHeight ? `${blockHeight}:` : ''; const currentBlockHeightPrefix = opts.currentBlockHeight ? `${currentBlockHeight}:` From 48296f78f783e8e5ae1e5fbe92ae10e5e7880837 Mon Sep 17 00:00:00 2001 From: Michael FIG Date: Mon, 4 Dec 2023 09:00:30 -0600 Subject: [PATCH 27/39] fix(casting): properly follow an unpopulated state entry --- packages/casting/src/follower-cosmjs.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/casting/src/follower-cosmjs.js b/packages/casting/src/follower-cosmjs.js index 3ba1b59526b..70a54c78664 100644 --- a/packages/casting/src/follower-cosmjs.js +++ b/packages/casting/src/follower-cosmjs.js @@ -447,10 +447,12 @@ export const makeCosmjsFollower = ( // If the block has no corresponding data, wait for the first block to // contain data. for (;;) { - ({ value: cursorData, height: cursorBlockHeight } = await getDataAtHeight( + let thisHeight; + ({ value: cursorData, height: thisHeight } = await getDataAtHeight( cursorBlockHeight, )); if (cursorData.length !== 0) { + cursorBlockHeight = thisHeight; const cursorStreamCell = streamCellForData( cursorBlockHeight, cursorData, From 16435d20e9ede86916a54c7bae54ecfc59e4c950 Mon Sep 17 00:00:00 2001 From: Brian Warner Date: Tue, 5 Dec 2023 17:12:25 -0600 Subject: [PATCH 28/39] feat: add exporter.getHostKV() API Add a new API to the exporter, `exporter.getHostKV(key)`, so that the cosmic-swingset state-sync exporter process can query `host.height` without accidentally creating a read-write transaction too. refs #8523 --- .../cosmic-swingset/src/import-kernel-db.js | 3 ++ packages/swing-store/src/exporter.js | 33 +++++++++++++++++++ packages/swing-store/test/test-bundles.js | 6 ++++ packages/swing-store/test/test-export.js | 9 +++++ packages/swing-store/test/test-import.js | 3 ++ 5 files changed, 54 insertions(+) diff --git a/packages/cosmic-swingset/src/import-kernel-db.js b/packages/cosmic-swingset/src/import-kernel-db.js index d41e6309cd1..93f9f18ae51 100755 --- a/packages/cosmic-swingset/src/import-kernel-db.js +++ b/packages/cosmic-swingset/src/import-kernel-db.js @@ -145,6 +145,9 @@ export const performStateSyncImport = async ( // Represent the data in `exportDir` as a SwingSetExporter object. /** @type {import('@agoric/swing-store').SwingStoreExporter} */ const exporter = harden({ + getHostKV(_key) { + return undefined; + }, async *getExportData() { log?.('importing export data'); const exportData = createReadStream( diff --git a/packages/swing-store/src/exporter.js b/packages/swing-store/src/exporter.js index 777340c4d0f..5d74bb92dd4 100644 --- a/packages/swing-store/src/exporter.js +++ b/packages/swing-store/src/exporter.js @@ -36,6 +36,11 @@ import { validateArtifactMode } from './internal.js'; * the concurrent activity of other swingStore instances, the data representing * the commit point will stay consistent and available. * + * @property {(key: string) => string | undefined} getHostKV + * + * Retrieve a value from the "host" portion of the kvStore, just like + * hostStorage.hostKVStore.get() would do. + * * @property {() => AnyIterableIterator} getExportData * * Get a full copy of the first-stage export data (key-value pairs) from the @@ -112,6 +117,33 @@ export function makeSwingStoreExporter(dirPath, options = {}) { assertComplete(internal, artifactMode); } + const sqlKVGet = db.prepare(` + SELECT value + FROM kvStore + WHERE key = ? + `); + sqlKVGet.pluck(true); + + /** + * Obtain the value stored for a given host key. This is for the + * benefit of clients who need to briefly query the DB to ensure + * they are exporting the right thing, and need to avoid modifying + * anything (or creating a read-write DB lock) in the process. + * + * @param {string} key The key whose value is sought. + * + * @returns {string | undefined} the (string) value for the given key, or + * undefined if there is no such value. + * + * @throws if key is not a string, or the key is not in the host + * section + */ + function getHostKV(key) { + typeof key === 'string' || Fail`key must be a string`; + getKeyType(key) === 'host' || Fail`getHostKV requires host keys`; + return sqlKVGet.get(key); + } + const sqlGetAllKVData = db.prepare(` SELECT key, value FROM kvStore @@ -173,6 +205,7 @@ export function makeSwingStoreExporter(dirPath, options = {}) { } return harden({ + getHostKV, getExportData, getArtifactNames, getArtifact, diff --git a/packages/swing-store/test/test-bundles.js b/packages/swing-store/test/test-bundles.js index 928741d4ab7..a26ed526e88 100644 --- a/packages/swing-store/test/test-bundles.js +++ b/packages/swing-store/test/test-bundles.js @@ -107,6 +107,9 @@ test('b0 import', async t => { const idA = makeB0ID(b0A); const nameA = `bundle.${idA}`; const exporter = { + getHostKV(_key) { + return undefined; + }, async *getExportData() { yield /** @type {const} */ ([nameA, idA]); }, @@ -135,6 +138,9 @@ test('b0 bad import', async t => { const idA = makeB0ID(b0A); const nameA = `bundle.${idA}`; const exporter = { + getHostKV(_key) { + return undefined; + }, async *getExportData() { yield /** @type {const} */ ([nameA, idA]); }, diff --git a/packages/swing-store/test/test-export.js b/packages/swing-store/test/test-export.js index fae8e295c00..ea7a88458a6 100644 --- a/packages/swing-store/test/test-export.js +++ b/packages/swing-store/test/test-export.js @@ -36,6 +36,8 @@ const exportTest = test.macro(async (t, mode) => { const ss1 = initSwingStore(dbDir, options); const ks = ss1.kernelStorage; + ss1.hostStorage.kvStore.set('host.h1', 'hostvalue1'); + // build a DB with four spans (one in an old incarnation, two // historical but current incarnation, only one inUse) and two // snapshots (only one inUSe) @@ -88,6 +90,13 @@ const exportTest = test.macro(async (t, mode) => { } const exporter = makeSwingStoreExporter(dbDir, { artifactMode }); + // hostKV + t.is(exporter.getHostKV('host.h1'), 'hostvalue1'); + t.is(exporter.getHostKV('host.hmissing'), undefined); + t.throws(() => exporter.getHostKV('nonhost'), { + message: 'getHostKV requires host keys', + }); + // exportData { const exportData = new Map(); diff --git a/packages/swing-store/test/test-import.js b/packages/swing-store/test/test-import.js index a5c25d620a8..288bc27745b 100644 --- a/packages/swing-store/test/test-import.js +++ b/packages/swing-store/test/test-import.js @@ -54,6 +54,9 @@ function convert(orig) { */ export function makeExporter(exportData, artifacts) { return { + getHostKV(_key) { + return undefined; + }, async *getExportData() { for (const [key, value] of exportData.entries()) { /** @type { KVPair } */ From 50a5a557956562fc05b8c2defd99a0102a35153f Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Wed, 29 Nov 2023 00:40:34 +0000 Subject: [PATCH 29/39] feat(x/swingset): refuse smart wallet messages if not provisioned --- golang/cosmos/ante/inbound_test.go | 4 +++ golang/cosmos/x/swingset/keeper/keeper.go | 20 ++++++++++++++ .../x/swingset/types/expected_keepers.go | 10 +++++++ golang/cosmos/x/swingset/types/msgs.go | 27 +++++++++++++++++++ 4 files changed, 61 insertions(+) diff --git a/golang/cosmos/ante/inbound_test.go b/golang/cosmos/ante/inbound_test.go index 6795d793130..e79bae6f763 100644 --- a/golang/cosmos/ante/inbound_test.go +++ b/golang/cosmos/ante/inbound_test.go @@ -217,3 +217,7 @@ func (msk mockSwingsetKeeper) GetBeansPerUnit(ctx sdk.Context) map[string]sdk.Ui func (msk mockSwingsetKeeper) ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, beans sdk.Uint) error { return fmt.Errorf("not implemented") } + +func (msk mockSwingsetKeeper) GetSmartWalletState(ctx sdk.Context, addr sdk.AccAddress) swingtypes.SmartWalletState { + panic(fmt.Errorf("not implemented")) +} diff --git a/golang/cosmos/x/swingset/keeper/keeper.go b/golang/cosmos/x/swingset/keeper/keeper.go index 29139e8e5fd..2c10e9696f7 100644 --- a/golang/cosmos/x/swingset/keeper/keeper.go +++ b/golang/cosmos/x/swingset/keeper/keeper.go @@ -37,6 +37,12 @@ const ( StoragePathSwingStore = "swingStore" ) +const ( + // WalletStoragePathSegment matches the value of WALLET_STORAGE_PATH_SEGMENT + // packages/vats/src/core/startWalletFactory.js + WalletStoragePathSegment = "wallet" +) + const ( stateKey = "state" swingStoreKeyPrefix = "swingStore." @@ -151,6 +157,20 @@ func (k Keeper) IsHighPriorityAddress(ctx sdk.Context, addr sdk.AccAddress) (boo return k.vstorageKeeper.HasEntry(ctx, path), nil } +// GetSmartWalletState returns the provision state of the smart wallet for the account address +func (k Keeper) GetSmartWalletState(ctx sdk.Context, addr sdk.AccAddress) types.SmartWalletState { + // walletStoragePath is path of `walletStorageNode` constructed in + // `provideSmartWallet` from packages/smart-wallet/src/walletFactory.js + walletStoragePath := StoragePathCustom + "." + WalletStoragePathSegment + "." + addr.String() + + // TODO: implement a pending provision state + if k.vstorageKeeper.HasEntry(ctx, walletStoragePath) { + return types.SmartWalletStateProvisioned + } + + return types.SmartWalletStateNone +} + func (k Keeper) InboundQueueLength(ctx sdk.Context) (int32, error) { size := sdk.NewInt(0) diff --git a/golang/cosmos/x/swingset/types/expected_keepers.go b/golang/cosmos/x/swingset/types/expected_keepers.go index d470193e2e9..307e4d1bc54 100644 --- a/golang/cosmos/x/swingset/types/expected_keepers.go +++ b/golang/cosmos/x/swingset/types/expected_keepers.go @@ -5,6 +5,15 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ) +type SmartWalletState uint8 + +const ( + SmartWalletStateUnspecified SmartWalletState = iota + SmartWalletStateNone + SmartWalletStatePending + SmartWalletStateProvisioned +) + type AccountKeeper interface { GetAccount(ctx sdk.Context, addr sdk.AccAddress) authtypes.AccountI NewAccountWithAddress(ctx sdk.Context, addr sdk.AccAddress) authtypes.AccountI @@ -15,4 +24,5 @@ type SwingSetKeeper interface { GetBeansPerUnit(ctx sdk.Context) map[string]sdk.Uint ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, beans sdk.Uint) error IsHighPriorityAddress(ctx sdk.Context, addr sdk.AccAddress) (bool, error) + GetSmartWalletState(ctx sdk.Context, addr sdk.AccAddress) SmartWalletState } diff --git a/golang/cosmos/x/swingset/types/msgs.go b/golang/cosmos/x/swingset/types/msgs.go index d819a13c172..84b98ef9b4e 100644 --- a/golang/cosmos/x/swingset/types/msgs.go +++ b/golang/cosmos/x/swingset/types/msgs.go @@ -48,6 +48,23 @@ func chargeAdmission(ctx sdk.Context, keeper SwingSetKeeper, addr sdk.AccAddress return keeper.ChargeBeans(ctx, addr, beans) } +// checkSmartWalletProvisioned verifies if a smart wallet message (MsgWalletAction +// and MsgWalletSpendAction) can be delivered for the owner's address. +func checkSmartWalletProvisioned(ctx sdk.Context, keeper SwingSetKeeper, addr sdk.AccAddress) error { + walletState := keeper.GetSmartWalletState(ctx, addr) + + switch walletState { + case SmartWalletStateProvisioned: + // The address has a smart wallet + return nil + case SmartWalletStatePending: + // A provision is pending execution + return nil + default: + return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "Owner address does not have a smart wallet") + } +} + func NewMsgDeliverInbound(msgs *Messages, submitter sdk.AccAddress) *MsgDeliverInbound { return &MsgDeliverInbound{ Messages: msgs.Messages, @@ -137,6 +154,11 @@ func (msg MsgWalletAction) CheckAdmissibility(ctx sdk.Context, data interface{}) return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "data must be a SwingSetKeeper, not a %T", data) } + err := checkSmartWalletProvisioned(ctx, keeper, msg.Owner) + if err != nil { + return err + } + return chargeAdmission(ctx, keeper, msg.Owner, []string{msg.Action}, 0) } @@ -204,6 +226,11 @@ func (msg MsgWalletSpendAction) CheckAdmissibility(ctx sdk.Context, data interfa return sdkerrors.Wrapf(sdkerrors.ErrInvalidRequest, "data must be a SwingSetKeeper, not a %T", data) } + err := checkSmartWalletProvisioned(ctx, keeper, msg.Owner) + if err != nil { + return err + } + return chargeAdmission(ctx, keeper, msg.Owner, []string{msg.SpendAction}, 0) } From 2d388c2d51425b9d98b79d54ea6a2de96da67042 Mon Sep 17 00:00:00 2001 From: Brian Warner Date: Tue, 5 Dec 2023 17:28:01 -0600 Subject: [PATCH 30/39] fix: export state-sync snapshot without a DB write-lock Exporting a state-sync snapshot is a read-only operation, and is designed to run "in the background", i.e. in parallel with normal mutating operations. It accomplishes this by opening a read-only transaction right away, effectively capturing a snapshot of the SQLite database state, to insulate the export process from ongoing writes by the execution host. The cosmic-swingset exporter starts with a query of `host.height`, to confirm that the database has not already advanced to a new block before this snapshot/read-transaction can be taken. Previously, this query worked by using `openSwingStore`, and then calling `hostStorage.hostKVStore.get('host.height')`. This had two problems: * TOCTTOU: the `hostKVStore.get` used a different DB connection (and different txn) than the exporter, so it might return a different height, negating the accuracy of the consistency check * read-write txn: `openSwingStore` creates a read-*write* txn, even when merely opening the DB (because it might need to create the initial tables). This txn is closed right away, before `openSwingStore()` returns, so it did not present a threat to ongoing operations. But if the exporter was created while the ongoing execution side already had its own read-write txn open (e.g. while `controller.run()` was running), then it would fail, and `makeSwingStoreExporter` would fail with `SQLITE_BUSY` Instead, we take advantage of the new `swingStoreExporter.getHostKV()` API, and use *it* to fetch `host.height`. Unlike the normal swingstore, the swingstore-exporter refrains from creating read-write transactions entirely. So the cosmic-swingset export code can safely query the height without fear of getting the wrong value or failing because of an ongoing write transaction. We think this should fix the SQLITE_BUSY errors. refs #8523 --- packages/cosmic-swingset/src/export-kernel-db.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/cosmic-swingset/src/export-kernel-db.js b/packages/cosmic-swingset/src/export-kernel-db.js index b9920f355b4..401622c0430 100755 --- a/packages/cosmic-swingset/src/export-kernel-db.js +++ b/packages/cosmic-swingset/src/export-kernel-db.js @@ -14,7 +14,7 @@ import { makePromiseKit } from '@endo/promise-kit'; import { Fail, q } from '@agoric/assert'; import { makeAggregateError } from '@agoric/internal'; import { makeShutdown } from '@agoric/internal/src/node/shutdown.js'; -import { openSwingStore, makeSwingStoreExporter } from '@agoric/swing-store'; +import { makeSwingStoreExporter } from '@agoric/swing-store'; import { isEntrypoint } from './helpers/is-entrypoint.js'; import { makeProcessValue } from './helpers/process-value.js'; @@ -144,7 +144,6 @@ export const validateExporterOptions = options => { * @param {Pick} powers.fs * @param {import('path')['resolve']} powers.pathResolve * @param {typeof import('@agoric/swing-store')['makeSwingStoreExporter']} [powers.makeSwingStoreExporter] - * @param {typeof import('@agoric/swing-store')['openSwingStore']} [powers.openSwingStore] * @param {null | ((...args: any[]) => void)} [powers.log] * @returns {StateSyncExporter} */ @@ -154,7 +153,6 @@ export const initiateSwingStoreExport = ( fs: { open, writeFile }, pathResolve, makeSwingStoreExporter: makeExporter = makeSwingStoreExporter, - openSwingStore: openDB = openSwingStore, log = console.log, }, ) => { @@ -183,10 +181,7 @@ export const initiateSwingStoreExport = ( }); cleanup.push(async () => swingStoreExporter.close()); - const { hostStorage } = openDB(stateDir); - - savedBlockHeight = Number(hostStorage.kvStore.get('host.height')) || 0; - await hostStorage.close(); + savedBlockHeight = Number(swingStoreExporter.getHostKV('host.height')) || 0; if (blockHeight) { blockHeight === savedBlockHeight || From 2338ba2c16eb979887d4f5ca689c0ca2e6948d06 Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Wed, 29 Nov 2023 16:31:33 +0000 Subject: [PATCH 31/39] chore(cosmos): always update swingset params on upgrade --- golang/cosmos/app/app.go | 6 + golang/cosmos/x/swingset/keeper/migrations.go | 9 +- golang/cosmos/x/swingset/legacy/v32/params.go | 37 ----- .../x/swingset/legacy/v32/params_test.go | 133 ------------------ golang/cosmos/x/swingset/types/params.go | 74 ++++++++++ golang/cosmos/x/swingset/types/params_test.go | 116 +++++++++++++++ 6 files changed, 203 insertions(+), 172 deletions(-) delete mode 100644 golang/cosmos/x/swingset/legacy/v32/params.go delete mode 100644 golang/cosmos/x/swingset/legacy/v32/params_test.go create mode 100644 golang/cosmos/x/swingset/types/params_test.go diff --git a/golang/cosmos/app/app.go b/golang/cosmos/app/app.go index 4a8a823180b..fb91d57c1a6 100644 --- a/golang/cosmos/app/app.go +++ b/golang/cosmos/app/app.go @@ -837,6 +837,12 @@ func upgrade13Handler(app *GaiaApp, targetUpgrade string) func(sdk.Context, upgr return mvm, err } + m := swingsetkeeper.NewMigrator(app.SwingSetKeeper) + err = m.MigrateParams(ctx) + if err != nil { + return mvm, err + } + return mvm, nil } } diff --git a/golang/cosmos/x/swingset/keeper/migrations.go b/golang/cosmos/x/swingset/keeper/migrations.go index fdad01fceb6..7f2fdfd00c4 100644 --- a/golang/cosmos/x/swingset/keeper/migrations.go +++ b/golang/cosmos/x/swingset/keeper/migrations.go @@ -1,7 +1,7 @@ package keeper import ( - v32 "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/legacy/v32" + "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/types" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -17,8 +17,13 @@ func NewMigrator(keeper Keeper) Migrator { // Migrate1to2 migrates from version 1 to 2. func (m Migrator) Migrate1to2(ctx sdk.Context) error { + return m.MigrateParams(ctx) +} + +// MigrateParams migrates params by setting new params to their default value +func (m Migrator) MigrateParams(ctx sdk.Context) error { params := m.keeper.GetParams(ctx) - newParams, err := v32.UpdateParams(params) + newParams, err := types.UpdateParams(params) if err != nil { return err } diff --git a/golang/cosmos/x/swingset/legacy/v32/params.go b/golang/cosmos/x/swingset/legacy/v32/params.go deleted file mode 100644 index aa76940a13f..00000000000 --- a/golang/cosmos/x/swingset/legacy/v32/params.go +++ /dev/null @@ -1,37 +0,0 @@ -package v32 - -import ( - "fmt" - - "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/types" -) - -// UpdateParams performs the parameter updates to migrate to version 2, -// returning the updated params or an error. -func UpdateParams(params types.Params) (types.Params, error) { - newBpu, err := addStorageBeanCost(params.BeansPerUnit) - if err != nil { - return params, err - } - params.BeansPerUnit = newBpu - return params, nil -} - -// addStorageBeanCost adds the default beans per storage byte cost, -// if it's not in the list of bean costs already, returning the possibly-updated list. -// or an error if there's no default storage cost. -func addStorageBeanCost(bpu []types.StringBeans) ([]types.StringBeans, error) { - for _, ob := range bpu { - if ob.Key == types.BeansPerStorageByte { - // success if there's already an entry - return bpu, nil - } - } - defaultParams := types.DefaultParams() - for _, b := range defaultParams.BeansPerUnit { - if b.Key == types.BeansPerStorageByte { - return append(bpu, b), nil - } - } - return bpu, fmt.Errorf("no beans per storage byte in default params %v", defaultParams) -} diff --git a/golang/cosmos/x/swingset/legacy/v32/params_test.go b/golang/cosmos/x/swingset/legacy/v32/params_test.go deleted file mode 100644 index 3c8d20ab5a3..00000000000 --- a/golang/cosmos/x/swingset/legacy/v32/params_test.go +++ /dev/null @@ -1,133 +0,0 @@ -package v32 - -import ( - "reflect" - "testing" - - "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/types" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -type beans = types.StringBeans - -func TestAddStorageBeanCost(t *testing.T) { - var defaultStorageCost beans - for _, b := range types.DefaultParams().BeansPerUnit { - if b.Key == types.BeansPerStorageByte { - defaultStorageCost = b - } - } - if defaultStorageCost.Key == "" { - t.Fatalf("no beans per storage byte in default params") - } - - for _, tt := range []struct { - name string - in []beans - want []beans - }{ - { - name: "empty", - in: []beans{}, - want: []beans{defaultStorageCost}, - }, - { - name: "already_only_same", - in: []beans{defaultStorageCost}, - want: []beans{defaultStorageCost}, - }, - { - name: "already_only_different", - in: []beans{types.NewStringBeans(types.BeansPerStorageByte, sdk.NewUint(123))}, - want: []beans{types.NewStringBeans(types.BeansPerStorageByte, sdk.NewUint(123))}, - }, - { - name: "already_same", - in: []beans{ - types.NewStringBeans("foo", sdk.NewUint(123)), - defaultStorageCost, - types.NewStringBeans("bar", sdk.NewUint(456)), - }, - want: []beans{ - types.NewStringBeans("foo", sdk.NewUint(123)), - defaultStorageCost, - types.NewStringBeans("bar", sdk.NewUint(456)), - }, - }, - { - name: "already_different", - in: []beans{ - types.NewStringBeans("foo", sdk.NewUint(123)), - types.NewStringBeans(types.BeansPerStorageByte, sdk.NewUint(789)), - types.NewStringBeans("bar", sdk.NewUint(456)), - }, - want: []beans{ - types.NewStringBeans("foo", sdk.NewUint(123)), - types.NewStringBeans(types.BeansPerStorageByte, sdk.NewUint(789)), - types.NewStringBeans("bar", sdk.NewUint(456)), - }, - }, - { - name: "missing", - in: []beans{ - types.NewStringBeans("foo", sdk.NewUint(123)), - types.NewStringBeans("bar", sdk.NewUint(456)), - }, - want: []beans{ - types.NewStringBeans("foo", sdk.NewUint(123)), - types.NewStringBeans("bar", sdk.NewUint(456)), - defaultStorageCost, - }, - }, - } { - t.Run(tt.name, func(t *testing.T) { - got, err := addStorageBeanCost(tt.in) - if err != nil { - t.Errorf("got error %v", err) - } else if !reflect.DeepEqual(got, tt.want) { - t.Errorf("want %v, got %v", tt.want, got) - } - }) - } -} - -func TestUpdateParams(t *testing.T) { - var defaultStorageCost beans - for _, b := range types.DefaultParams().BeansPerUnit { - if b.Key == types.BeansPerStorageByte { - defaultStorageCost = b - } - } - if defaultStorageCost.Key == "" { - t.Fatalf("no beans per storage byte in default params") - } - - in := types.Params{ - BeansPerUnit: []beans{ - types.NewStringBeans("foo", sdk.NewUint(123)), - types.NewStringBeans("bar", sdk.NewUint(456)), - }, - BootstrapVatConfig: "baz", - FeeUnitPrice: sdk.NewCoins(sdk.NewInt64Coin("denom", 789)), - PowerFlagFees: types.DefaultPowerFlagFees, - QueueMax: types.DefaultQueueMax, - } - want := types.Params{ - BeansPerUnit: []beans{ - types.NewStringBeans("foo", sdk.NewUint(123)), - types.NewStringBeans("bar", sdk.NewUint(456)), - defaultStorageCost, - }, - BootstrapVatConfig: "baz", - FeeUnitPrice: sdk.NewCoins(sdk.NewInt64Coin("denom", 789)), - PowerFlagFees: types.DefaultPowerFlagFees, - QueueMax: types.DefaultQueueMax, - } - got, err := UpdateParams(in) - if err != nil { - t.Fatalf("UpdateParam error %v", err) - } - if !reflect.DeepEqual(got, want) { - t.Errorf("got %v, want %v", got, want) - } -} diff --git a/golang/cosmos/x/swingset/types/params.go b/golang/cosmos/x/swingset/types/params.go index 25c75003695..3606396e6d4 100644 --- a/golang/cosmos/x/swingset/types/params.go +++ b/golang/cosmos/x/swingset/types/params.go @@ -163,3 +163,77 @@ func validateQueueMax(i interface{}) error { } return nil } + +// UpdateParams appends any missing params, configuring them to their defaults, +// then returning the updated params or an error. Existing params are not +// modified, regardless of their value, and they are not removed if they no +// longer appear in the defaults. +func UpdateParams(params Params) (Params, error) { + newBpu, err := appendMissingDefaultBeansPerUnit(params.BeansPerUnit, DefaultBeansPerUnit()) + if err != nil { + return params, err + } + newPff, err := appendMissingDefaultPowerFlagFees(params.PowerFlagFees, DefaultPowerFlagFees) + if err != nil { + return params, err + } + newQm, err := appendMissingDefaultQueueSize(params.QueueMax, DefaultQueueMax) + if err != nil { + return params, err + } + + params.BeansPerUnit = newBpu + params.PowerFlagFees = newPff + params.QueueMax = newQm + return params, nil +} + +// appendMissingDefaultBeansPerUnit appends the default beans per unit entries +// not in the list of bean costs already, returning the possibly-updated list, +// or an error. +func appendMissingDefaultBeansPerUnit(bpu []StringBeans, defaultBpu []StringBeans) ([]StringBeans, error) { + existingBpu := make(map[string]struct{}, len(bpu)) + for _, ob := range bpu { + existingBpu[ob.Key] = struct{}{} + } + + for _, b := range defaultBpu { + if _, exists := existingBpu[b.Key]; !exists { + bpu = append(bpu, b) + } + } + return bpu, nil +} + +// appendMissingDefaultPowerFlagFees appends the default power flag fee entries +// not in the list of power flags already, returning the possibly-updated list, +// or an error. +func appendMissingDefaultPowerFlagFees(pff []PowerFlagFee, defaultPff []PowerFlagFee) ([]PowerFlagFee, error) { + existingPff := make(map[string]struct{}, len(pff)) + for _, of := range pff { + existingPff[of.PowerFlag] = struct{}{} + } + + for _, f := range defaultPff { + if _, exists := existingPff[f.PowerFlag]; !exists { + pff = append(pff, f) + } + } + return pff, nil +} + +// appendMissingDefaultQueueSize appends the default queue size entries not in +// the list of sizes already, returning the possibly-updated list, or an error. +func appendMissingDefaultQueueSize(qs []QueueSize, defaultQs []QueueSize) ([]QueueSize, error) { + existingQs := make(map[string]struct{}, len(qs)) + for _, os := range qs { + existingQs[os.Key] = struct{}{} + } + + for _, s := range defaultQs { + if _, exists := existingQs[s.Key]; !exists { + qs = append(qs, s) + } + } + return qs, nil +} diff --git a/golang/cosmos/x/swingset/types/params_test.go b/golang/cosmos/x/swingset/types/params_test.go new file mode 100644 index 00000000000..e75986736ad --- /dev/null +++ b/golang/cosmos/x/swingset/types/params_test.go @@ -0,0 +1,116 @@ +package types + +import ( + "reflect" + "testing" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +type beans = StringBeans + +func TestAddStorageBeanCost(t *testing.T) { + var defaultStorageCost beans + for _, b := range DefaultParams().BeansPerUnit { + if b.Key == BeansPerStorageByte { + defaultStorageCost = b + } + } + if defaultStorageCost.Key == "" { + t.Fatalf("no beans per storage byte in default params") + } + + for _, tt := range []struct { + name string + in []beans + want []beans + }{ + { + name: "empty", + in: []beans{}, + want: []beans{defaultStorageCost}, + }, + { + name: "already_only_same", + in: []beans{defaultStorageCost}, + want: []beans{defaultStorageCost}, + }, + { + name: "already_only_different", + in: []beans{NewStringBeans(BeansPerStorageByte, sdk.NewUint(123))}, + want: []beans{NewStringBeans(BeansPerStorageByte, sdk.NewUint(123))}, + }, + { + name: "already_same", + in: []beans{ + NewStringBeans("foo", sdk.NewUint(123)), + defaultStorageCost, + NewStringBeans("bar", sdk.NewUint(456)), + }, + want: []beans{ + NewStringBeans("foo", sdk.NewUint(123)), + defaultStorageCost, + NewStringBeans("bar", sdk.NewUint(456)), + }, + }, + { + name: "already_different", + in: []beans{ + NewStringBeans("foo", sdk.NewUint(123)), + NewStringBeans(BeansPerStorageByte, sdk.NewUint(789)), + NewStringBeans("bar", sdk.NewUint(456)), + }, + want: []beans{ + NewStringBeans("foo", sdk.NewUint(123)), + NewStringBeans(BeansPerStorageByte, sdk.NewUint(789)), + NewStringBeans("bar", sdk.NewUint(456)), + }, + }, + { + name: "missing", + in: []beans{ + NewStringBeans("foo", sdk.NewUint(123)), + NewStringBeans("bar", sdk.NewUint(456)), + }, + want: []beans{ + NewStringBeans("foo", sdk.NewUint(123)), + NewStringBeans("bar", sdk.NewUint(456)), + defaultStorageCost, + }, + }, + } { + t.Run(tt.name, func(t *testing.T) { + got, err := appendMissingDefaultBeansPerUnit(tt.in, []StringBeans{defaultStorageCost}) + if err != nil { + t.Errorf("got error %v", err) + } else if !reflect.DeepEqual(got, tt.want) { + t.Errorf("want %v, got %v", tt.want, got) + } + }) + } +} + +func TestUpdateParams(t *testing.T) { + + in := Params{ + BeansPerUnit: []beans{}, + BootstrapVatConfig: "baz", + FeeUnitPrice: sdk.NewCoins(sdk.NewInt64Coin("denom", 789)), + PowerFlagFees: []PowerFlagFee{}, + QueueMax: []QueueSize{}, + } + want := Params{ + BeansPerUnit: DefaultBeansPerUnit(), + BootstrapVatConfig: "baz", + FeeUnitPrice: sdk.NewCoins(sdk.NewInt64Coin("denom", 789)), + PowerFlagFees: DefaultPowerFlagFees, + QueueMax: DefaultQueueMax, + } + got, err := UpdateParams(in) + if err != nil { + t.Fatalf("UpdateParam error %v", err) + } + if !reflect.DeepEqual(got, want) { + t.Errorf("got %v, want %v", got, want) + } +} From 975533e088f96c80cf8d6f6b7c5f45665e3495ba Mon Sep 17 00:00:00 2001 From: Jim Larson Date: Tue, 5 Dec 2023 13:26:40 -0800 Subject: [PATCH 32/39] feat: pick up return-grants from latest cosmos-sdk --- golang/cosmos/Makefile | 2 +- golang/cosmos/go.mod | 2 +- golang/cosmos/go.sum | 4 ++-- golang/cosmos/x/lien/keeper/account.go | 21 +++++++++++++-------- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/golang/cosmos/Makefile b/golang/cosmos/Makefile index 3b1aee787f3..ce268857fdd 100644 --- a/golang/cosmos/Makefile +++ b/golang/cosmos/Makefile @@ -106,7 +106,7 @@ t: TM_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/tendermint/tendermint)/proto/tendermint GOGO_PROTO_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/gogo/protobuf) -IBC_PROTO_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/cosmos/ibc-go/v3)/proto/ibc/core +IBC_PROTO_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/cosmos/ibc-go/v4)/proto/ibc/core COSMOS_SDK_PROTO_URL := file://$(shell go list -m -f '{{ .Dir }}' github.com/cosmos/cosmos-sdk)/proto/cosmos GOGO_PROTO_TYPES = third_party/proto/gogoproto diff --git a/golang/cosmos/go.mod b/golang/cosmos/go.mod index a15c42a7e9e..f3b06910e3f 100644 --- a/golang/cosmos/go.mod +++ b/golang/cosmos/go.mod @@ -158,7 +158,7 @@ replace google.golang.org/grpc => google.golang.org/grpc v1.33.2 replace github.com/tendermint/tendermint => github.com/agoric-labs/cometbft v0.34.27-alpha.agoric.3 // We need a fork of cosmos-sdk until all of the differences are merged. -replace github.com/cosmos/cosmos-sdk => github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.2 +replace github.com/cosmos/cosmos-sdk => github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.3 // For testing against a local cosmos-sdk or tendermint // replace github.com/cosmos/cosmos-sdk => ../../../forks/cosmos-sdk diff --git a/golang/cosmos/go.sum b/golang/cosmos/go.sum index bc689e53a52..50ba6a7a047 100644 --- a/golang/cosmos/go.sum +++ b/golang/cosmos/go.sum @@ -93,8 +93,8 @@ github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBA github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agoric-labs/cometbft v0.34.27-alpha.agoric.3 h1:RrKcZClqKav60DA4XEEskEwSsNB3l4ENkBVR66jORvQ= github.com/agoric-labs/cometbft v0.34.27-alpha.agoric.3/go.mod h1:BcCbhKv7ieM0KEddnYXvQZR+pZykTKReJJYf7YC7qhw= -github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.2 h1:zwYWlYI1le3ctFlgnOX0tFDnTa5jCxKaLfFfNbTJuOg= -github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.2/go.mod h1:T0VCPrAAeps81/pnD8b0+oBCMDxrkrD48W1t/XYYUeI= +github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.3 h1:kEcWMDCGVHOrk9FBvHPCgpVK4uCjHtoKDbRQqj5T4Og= +github.com/agoric-labs/cosmos-sdk v0.45.16-alpha.agoric.3/go.mod h1:T0VCPrAAeps81/pnD8b0+oBCMDxrkrD48W1t/XYYUeI= github.com/agoric-labs/cosmos-sdk/ics23/go v0.8.0-alpha.agoric.1 h1:2jvHI/2d+psWAZy6FQ0vXJCHUtfU3ZbbW+pQFL04arQ= github.com/agoric-labs/cosmos-sdk/ics23/go v0.8.0-alpha.agoric.1/go.mod h1:E45NqnlpxGnpfTWL/xauN7MRwEE28T4Dd4uraToOaKg= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= diff --git a/golang/cosmos/x/lien/keeper/account.go b/golang/cosmos/x/lien/keeper/account.go index 41c962de84a..bfb7acad1e6 100644 --- a/golang/cosmos/x/lien/keeper/account.go +++ b/golang/cosmos/x/lien/keeper/account.go @@ -16,16 +16,16 @@ import ( // In addition to the methods declared in authtypes.AccountI, additional // expectations are enforced dynamically through casting and reflection: // -// - non-module accounts are expected to obey the GenesisAccount interface, -// i.e. to have a Validate() method; +// - non-module accounts are expected to obey the GenesisAccount interface, +// i.e. to have a Validate() method; // -// - UnpackInterfacesMessage is needed for unpacking accounts embedded -// in an Any message; +// - UnpackInterfacesMessage is needed for unpacking accounts embedded +// in an Any message; // -// - MarshalYAML() is used for String rendering; +// - MarshalYAML() is used for String rendering; // -// - protobuf Messages are expected to implement a number of "XXX"-prefixed -// methods not visible in the Message interface. +// - protobuf Messages are expected to implement a number of "XXX"-prefixed +// methods not visible in the Message interface. // // Declaring the expected methods here allows them to implicitly fall through // to an embedded omniAccount. @@ -116,7 +116,7 @@ func (uva unlockedVestingAccount) GetOriginalVesting() sdk.Coins { return sdk.NewCoins() } -//GetDelegatedFree implements the vestexported.VestingAccount interface. +// GetDelegatedFree implements the vestexported.VestingAccount interface. func (uva unlockedVestingAccount) GetDelegatedFree() sdk.Coins { return uva.lien.Delegated } @@ -172,6 +172,11 @@ func (fca fakeClawbackAccount) PostReward(ctx sdk.Context, reward sdk.Coins, act return nil } +// ReturnGrants implements the vestexported.ClawbackVestingAccountI interface. +func (fca fakeClawbackAccount) ReturnGrants(ctx sdk.Context, action vestexported.ReturnGrantAction) error { + return action.TakeGrants(ctx, fca.omniGrantAccount) // XXX or just fail here +} + // LienAccount wraps an omniClawbackAccount to implement lien encumbrance. // The LockedCoins() method is the maximum of the coins locked for // liens, and the coins locked in the underlying VestingAccount. From 5073800f87c92a194a21c9cc59ad1bb570a39b95 Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Wed, 29 Nov 2023 16:33:49 +0000 Subject: [PATCH 33/39] feat(x/swingset): auto-provision smart wallet --- golang/cosmos/ante/inbound_test.go | 4 ++ golang/cosmos/x/swingset/keeper/keeper.go | 19 +++++++ golang/cosmos/x/swingset/keeper/msg_server.go | 57 +++++++++++++++++-- .../cosmos/x/swingset/types/default-params.go | 38 +++++++------ .../x/swingset/types/expected_keepers.go | 1 + golang/cosmos/x/swingset/types/msgs.go | 26 +++++++-- 6 files changed, 118 insertions(+), 27 deletions(-) diff --git a/golang/cosmos/ante/inbound_test.go b/golang/cosmos/ante/inbound_test.go index e79bae6f763..d57450f88e6 100644 --- a/golang/cosmos/ante/inbound_test.go +++ b/golang/cosmos/ante/inbound_test.go @@ -221,3 +221,7 @@ func (msk mockSwingsetKeeper) ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, func (msk mockSwingsetKeeper) GetSmartWalletState(ctx sdk.Context, addr sdk.AccAddress) swingtypes.SmartWalletState { panic(fmt.Errorf("not implemented")) } + +func (msk mockSwingsetKeeper) ChargeForSmartWallet(ctx sdk.Context, addr sdk.AccAddress) error { + return fmt.Errorf("not implemented") +} diff --git a/golang/cosmos/x/swingset/keeper/keeper.go b/golang/cosmos/x/swingset/keeper/keeper.go index 2c10e9696f7..27086661119 100644 --- a/golang/cosmos/x/swingset/keeper/keeper.go +++ b/golang/cosmos/x/swingset/keeper/keeper.go @@ -335,6 +335,25 @@ func (k Keeper) ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, beans sdk.Uint return nil } +// ChargeForSmartWallet charges the fee for provisioning a smart wallet. +func (k Keeper) ChargeForSmartWallet(ctx sdk.Context, addr sdk.AccAddress) error { + beansPerUnit := k.GetBeansPerUnit(ctx) + beans := beansPerUnit[types.BeansPerSmartWalletProvision] + err := k.ChargeBeans(ctx, addr, beans) + if err != nil { + return err + } + + // TODO: mark that a smart wallet provision is pending. However in that case, + // auto-provisioning should still be performed (but without fees being charged), + // until the controller actually provisions the smart wallet (the operation may + // transiently fail, requiring retries until success). + // However the provisioning code is not currently idempotent, and has side + // effects when the smart wallet is already provisioned. + + return nil +} + // makeFeeMenu returns a map from power flag to its fee. In the case of duplicates, the // first one wins. func makeFeeMenu(powerFlagFees []types.PowerFlagFee) map[string]sdk.Coins { diff --git a/golang/cosmos/x/swingset/keeper/msg_server.go b/golang/cosmos/x/swingset/keeper/msg_server.go index 0d959ce23cc..e418bf7b3fb 100644 --- a/golang/cosmos/x/swingset/keeper/msg_server.go +++ b/golang/cosmos/x/swingset/keeper/msg_server.go @@ -80,6 +80,11 @@ type walletAction struct { func (keeper msgServer) WalletAction(goCtx context.Context, msg *types.MsgWalletAction) (*types.MsgWalletActionResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) + err := keeper.provisionIfNeeded(ctx, msg.Owner) + if err != nil { + return nil, err + } + action := &walletAction{ Type: "WALLET_ACTION", Owner: msg.Owner.String(), @@ -89,7 +94,7 @@ func (keeper msgServer) WalletAction(goCtx context.Context, msg *types.MsgWallet } // fmt.Fprintf(os.Stderr, "Context is %+v\n", ctx) - err := keeper.routeAction(ctx, msg, action) + err = keeper.routeAction(ctx, msg, action) // fmt.Fprintln(os.Stderr, "Returned from SwingSet", out, err) if err != nil { return nil, err @@ -108,6 +113,11 @@ type walletSpendAction struct { func (keeper msgServer) WalletSpendAction(goCtx context.Context, msg *types.MsgWalletSpendAction) (*types.MsgWalletSpendActionResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) + err := keeper.provisionIfNeeded(ctx, msg.Owner) + if err != nil { + return nil, err + } + action := &walletSpendAction{ Type: "WALLET_SPEND_ACTION", Owner: msg.Owner.String(), @@ -116,7 +126,7 @@ func (keeper msgServer) WalletSpendAction(goCtx context.Context, msg *types.MsgW BlockTime: ctx.BlockTime().Unix(), } // fmt.Fprintf(os.Stderr, "Context is %+v\n", ctx) - err := keeper.routeAction(ctx, msg, action) + err = keeper.routeAction(ctx, msg, action) if err != nil { return nil, err } @@ -125,9 +135,46 @@ func (keeper msgServer) WalletSpendAction(goCtx context.Context, msg *types.MsgW type provisionAction struct { *types.MsgProvision - Type string `json:"type"` // PLEASE_PROVISION - BlockHeight int64 `json:"blockHeight"` - BlockTime int64 `json:"blockTime"` + Type string `json:"type"` // PLEASE_PROVISION + BlockHeight int64 `json:"blockHeight"` + BlockTime int64 `json:"blockTime"` + AutoProvision bool `json:"autoProvision"` +} + +// provisionIfNeeded generates a provision action if no smart wallet is already +// provisioned for the account. This assumes that all messages for +// non-provisioned smart wallets allowed by the admission AnteHandler should +// auto-provision the smart wallet. +func (keeper msgServer) provisionIfNeeded(ctx sdk.Context, owner sdk.AccAddress) error { + // We need to generate a provision action until the smart wallet has + // been fully provisioned by the controller. This is because a provision is + // not guaranteed to succeed (e.g. lack of provision pool funds) + walletState := keeper.GetSmartWalletState(ctx, owner) + if walletState == types.SmartWalletStateProvisioned { + return nil + } + + msg := &types.MsgProvision{ + Address: owner, + Submitter: owner, + PowerFlags: []string{types.PowerFlagSmartWallet}, + } + + action := &provisionAction{ + MsgProvision: msg, + Type: "PLEASE_PROVISION", + BlockHeight: ctx.BlockHeight(), + BlockTime: ctx.BlockTime().Unix(), + AutoProvision: true, + } + + err := keeper.routeAction(ctx, msg, action) + // fmt.Fprintln(os.Stderr, "Returned from SwingSet", out, err) + if err != nil { + return err + } + + return nil } func (keeper msgServer) Provision(goCtx context.Context, msg *types.MsgProvision) (*types.MsgProvisionResponse, error) { diff --git a/golang/cosmos/x/swingset/types/default-params.go b/golang/cosmos/x/swingset/types/default-params.go index 83e75ef109a..073c5a3ac22 100644 --- a/golang/cosmos/x/swingset/types/default-params.go +++ b/golang/cosmos/x/swingset/types/default-params.go @@ -11,20 +11,24 @@ import ( // experience if they don't. const ( - BeansPerFeeUnit = "feeUnit" - BeansPerInboundTx = "inboundTx" - BeansPerBlockComputeLimit = "blockComputeLimit" - BeansPerMessage = "message" - BeansPerMessageByte = "messageByte" - BeansPerMinFeeDebit = "minFeeDebit" - BeansPerStorageByte = "storageByte" - BeansPerVatCreation = "vatCreation" - BeansPerXsnapComputron = "xsnapComputron" + BeansPerFeeUnit = "feeUnit" + BeansPerInboundTx = "inboundTx" + BeansPerBlockComputeLimit = "blockComputeLimit" + BeansPerMessage = "message" + BeansPerMessageByte = "messageByte" + BeansPerMinFeeDebit = "minFeeDebit" + BeansPerStorageByte = "storageByte" + BeansPerVatCreation = "vatCreation" + BeansPerXsnapComputron = "xsnapComputron" + BeansPerSmartWalletProvision = "smartWalletProvision" // QueueSize keys. // Keep up-to-date with updateQueueAllowed() in packanges/cosmic-swingset/src/launch-chain.js QueueInbound = "inbound" QueueInboundMempool = "inbound_mempool" + + // PowerFlags. + PowerFlagSmartWallet = "SMART_WALLET" ) var ( @@ -43,17 +47,18 @@ var ( // TODO: create the cost model we want, and update these to be more principled. // These defaults currently make deploying an ag-solo cost less than $1.00. - DefaultBeansPerFeeUnit = sdk.NewUint(1_000_000_000_000) // $1 - DefaultBeansPerInboundTx = DefaultBeansPerFeeUnit.Quo(sdk.NewUint(100)) // $0.01 - DefaultBeansPerMessage = DefaultBeansPerFeeUnit.Quo(sdk.NewUint(1_000)) // $0.001 - DefaultBeansPerMessageByte = DefaultBeansPerFeeUnit.Quo(sdk.NewUint(50_000)) // $0.00002 - DefaultBeansPerMinFeeDebit = DefaultBeansPerFeeUnit.Quo(sdk.NewUint(5)) // $0.2 - DefaultBeansPerStorageByte = DefaultBeansPerFeeUnit.Quo(sdk.NewUint(500)) // $0.002 + DefaultBeansPerFeeUnit = sdk.NewUint(1_000_000_000_000) // $1 + DefaultBeansPerInboundTx = DefaultBeansPerFeeUnit.Quo(sdk.NewUint(100)) // $0.01 + DefaultBeansPerMessage = DefaultBeansPerFeeUnit.Quo(sdk.NewUint(1_000)) // $0.001 + DefaultBeansPerMessageByte = DefaultBeansPerFeeUnit.Quo(sdk.NewUint(50_000)) // $0.00002 + DefaultBeansPerMinFeeDebit = DefaultBeansPerFeeUnit.Quo(sdk.NewUint(5)) // $0.2 + DefaultBeansPerStorageByte = DefaultBeansPerFeeUnit.Quo(sdk.NewUint(500)) // $0.002 + DefaultBeansPerSmartWalletProvision = DefaultBeansPerFeeUnit // $1 DefaultBootstrapVatConfig = "@agoric/vats/decentral-core-config.json" DefaultPowerFlagFees = []PowerFlagFee{ - NewPowerFlagFee("SMART_WALLET", sdk.NewCoins(sdk.NewInt64Coin("ubld", 10_000_000))), + NewPowerFlagFee(PowerFlagSmartWallet, sdk.NewCoins(sdk.NewInt64Coin("ubld", 10_000_000))), } DefaultInboundQueueMax = int32(1_000) @@ -75,5 +80,6 @@ func DefaultBeansPerUnit() []StringBeans { NewStringBeans(BeansPerStorageByte, DefaultBeansPerStorageByte), NewStringBeans(BeansPerVatCreation, DefaultBeansPerVatCreation), NewStringBeans(BeansPerXsnapComputron, DefaultBeansPerXsnapComputron), + NewStringBeans(BeansPerSmartWalletProvision, DefaultBeansPerSmartWalletProvision), } } diff --git a/golang/cosmos/x/swingset/types/expected_keepers.go b/golang/cosmos/x/swingset/types/expected_keepers.go index 307e4d1bc54..03f3f3f1335 100644 --- a/golang/cosmos/x/swingset/types/expected_keepers.go +++ b/golang/cosmos/x/swingset/types/expected_keepers.go @@ -25,4 +25,5 @@ type SwingSetKeeper interface { ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, beans sdk.Uint) error IsHighPriorityAddress(ctx sdk.Context, addr sdk.AccAddress) (bool, error) GetSmartWalletState(ctx sdk.Context, addr sdk.AccAddress) SmartWalletState + ChargeForSmartWallet(ctx sdk.Context, addr sdk.AccAddress) error } diff --git a/golang/cosmos/x/swingset/types/msgs.go b/golang/cosmos/x/swingset/types/msgs.go index 84b98ef9b4e..318f9eca30b 100644 --- a/golang/cosmos/x/swingset/types/msgs.go +++ b/golang/cosmos/x/swingset/types/msgs.go @@ -49,19 +49,29 @@ func chargeAdmission(ctx sdk.Context, keeper SwingSetKeeper, addr sdk.AccAddress } // checkSmartWalletProvisioned verifies if a smart wallet message (MsgWalletAction -// and MsgWalletSpendAction) can be delivered for the owner's address. +// and MsgWalletSpendAction) can be delivered for the owner's address. A message +// is allowed if a smart wallet is already provisioned for the address, or if the +// provisioning fee is charged successfully. +// All messages for non-provisioned smart wallets allowed here will result in +// an auto-provision action generated by the msg server. func checkSmartWalletProvisioned(ctx sdk.Context, keeper SwingSetKeeper, addr sdk.AccAddress) error { walletState := keeper.GetSmartWalletState(ctx, addr) switch walletState { case SmartWalletStateProvisioned: - // The address has a smart wallet + // The address already has a smart wallet return nil case SmartWalletStatePending: - // A provision is pending execution + // A provision (either explicit or automatic) may be pending execution in + // the controller, or if we ever allow multiple swingset messages per + // transaction, a previous message may have provisioned the wallet. return nil default: - return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "Owner address does not have a smart wallet") + // Charge for the smart wallet. + // This is a separate charge from the smart wallet action which triggered the check + // TODO: Currently this call does not mark the smart wallet provisioning as + // pending, resulting in multiple provisioning charges for the owner. + return keeper.ChargeForSmartWallet(ctx, addr) } } @@ -298,8 +308,12 @@ func (msg MsgProvision) ValidateBasic() error { // CheckAdmissibility implements the vm.ControllerAdmissionMsg interface. func (msg MsgProvision) CheckAdmissibility(ctx sdk.Context, data interface{}) error { - // We have our own fee charging mechanism within Swingset itself, - // so there are no admission restriction here. + // TODO: consider disallowing a provision message for a smart wallet if the + // smart wallet is already provisioned or pending provisioning. However we + // currently do not track whether a smart wallet is pending provisioning. + + // For explicitly provisioning, swingset will take care of charging, + // so we skip admission fees. return nil } From e0a2f1d9b726d11f38ea528bdc52416e25d91f9e Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Sun, 3 Dec 2023 22:02:29 +0000 Subject: [PATCH 34/39] chore(upgrade-test): add test of auto-provision --- .../agoric-upgrade-13/actions.js | 18 ++++++- .../agoric-upgrade-13/actions.test.js | 48 ++++++++++++++----- .../upgrade-test-scripts/econHelpers.js | 2 +- .../upgrade-test-scripts/env_setup.sh | 15 ++---- 4 files changed, 58 insertions(+), 25 deletions(-) diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.js b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.js index 6ce8bbfc182..94af68fdb12 100644 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.js +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.js @@ -2,12 +2,26 @@ import { promises as fs } from 'fs'; import * as path from 'path'; import { dirname } from 'path'; import { fileURLToPath } from 'url'; -import { voteLatestProposalAndWait } from '../commonUpgradeHelpers.js'; -import { CHAINID, GOV1ADDR, VALIDATORADDR } from '../constants.js'; +import { getUser, voteLatestProposalAndWait } from '../commonUpgradeHelpers.js'; +import { CHAINID, GOV1ADDR, HOME, VALIDATORADDR } from '../constants.js'; import { agd, bundleSource } from '../cliHelper.js'; const directoryName = dirname(fileURLToPath(import.meta.url)); +export const addUser = async user => { + const userKeyData = await agd.keys('add', user, '--keyring-backend=test'); + await fs.writeFile(`${HOME}/.agoric/${user}.key`, userKeyData.mnemonic); + + const userAddress = await getUser(user); + return userAddress; +}; + +export const getISTBalance = async (addr, denom = 'uist', unit = 1_000_000) => { + const coins = await agd.query('bank', 'balances', addr); + const coin = coins.balances.find(a => a.denom === denom); + return Number(coin.amount) / unit; +}; + export const installBundles = async bundlesData => { const bundleIds = {}; diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.test.js b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.test.js index 823296571d0..3ebc09f7f10 100644 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.test.js +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/agoric-upgrade-13/actions.test.js @@ -1,21 +1,45 @@ import test from 'ava'; -import { agops } from '../cliHelper.js'; -import { GOV1ADDR } from '../constants.js'; -import { adjustVault, closeVault, mintIST, openVault } from '../econHelpers.js'; +import { agd } from '../cliHelper.js'; +import { ATOM_DENOM, CHAINID, GOV1ADDR } from '../constants.js'; +import { addUser, getISTBalance } from './actions.js'; +import { mintIST, openVault } from '../econHelpers.js'; +import { waitForBlock } from '../commonUpgradeHelpers.js'; test.before(async t => { await mintIST(GOV1ADDR, 12340000000, 10000, 2000); + + await waitForBlock(2); + const userAddress = await addUser('user-auto'); + await agd.tx( + 'bank', + 'send', + 'gov1', + userAddress, + `1000000uist,2100000000${ATOM_DENOM}`, + '--from', + GOV1ADDR, + '--chain-id', + CHAINID, + '--keyring-backend', + 'test', + '--yes', + ); + t.context = { userAddress }; + await waitForBlock(2); }); -test.skip('Open Vaults', async t => { - const currentVaults = await agops.vaults('list', '--from', GOV1ADDR); - t.is(currentVaults.length, 5); +test('Open Vaults with auto-provisioned wallet', async t => { + const { userAddress } = /** @type {{userAddress: string}} */ (t.context); + t.is(await getISTBalance(userAddress), 1); + + const ATOMGiven = 2000; + const ISTWanted = 400; + await openVault(userAddress, ISTWanted, ATOMGiven); + + await waitForBlock(2); - // TODO get as return value from openVault - const vaultId = 'vault6'; - await openVault(GOV1ADDR, 7, 11); - await adjustVault(GOV1ADDR, vaultId, { giveMinted: 1.5 }); - await adjustVault(GOV1ADDR, vaultId, { giveCollateral: 2.0 }); - await closeVault(GOV1ADDR, vaultId, 5.75); + const newISTBalance = await getISTBalance(userAddress); + console.log('New IST Balance in u13 account:', newISTBalance); + t.true(newISTBalance >= ISTWanted, 'Got the wanted IST'); }); diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/econHelpers.js b/packages/deployment/upgrade-test/upgrade-test-scripts/econHelpers.js index ced1dff0bb8..c4dbf759efd 100644 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/econHelpers.js +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/econHelpers.js @@ -69,5 +69,5 @@ export const mintIST = async (addr, sendValue, giveCollateral, wantMinted) => { 'test', '--yes', ); - await openVault(addr, giveCollateral, wantMinted); + await openVault(addr, wantMinted, giveCollateral); }; diff --git a/packages/deployment/upgrade-test/upgrade-test-scripts/env_setup.sh b/packages/deployment/upgrade-test/upgrade-test-scripts/env_setup.sh index e1b2ee402c5..c250fa020c5 100755 --- a/packages/deployment/upgrade-test/upgrade-test-scripts/env_setup.sh +++ b/packages/deployment/upgrade-test/upgrade-test-scripts/env_setup.sh @@ -192,16 +192,11 @@ newOfferId() { printKeys() { echo "========== GOVERNANCE KEYS ==========" - echo "gov1: $GOV1ADDR" - cat ~/.agoric/gov1.key || true - echo "gov2: $GOV2ADDR" - cat ~/.agoric/gov2.key || true - echo "gov3: $GOV3ADDR" - cat ~/.agoric/gov3.key || true - echo "validator: $VALIDATORADDR" - cat ~/.agoric/validator.key || true - echo "user1: $USER1ADDR" - cat ~/.agoric/user1.key || true + for i in ~/.agoric/*.key; do + name=$(basename $i .key) + echo "$name:"$'\t'$(agd keys add $name --dry-run --recover --keyring-backend=test --output=json < $i | jq -r .address) || true + echo $'\t'$(cat $i) + done echo "========== GOVERNANCE KEYS ==========" } From 19404a3c5cd10d9c454f190b60cbf0aa715f605c Mon Sep 17 00:00:00 2001 From: Mathieu Hofman <86499+mhofman@users.noreply.github.com> Date: Tue, 5 Dec 2023 21:26:58 -0800 Subject: [PATCH 35/39] feat(cosmos): un-wire x/crisis (#8582) * feat(cosmos): un-wire x/crisis * fixup! feat(cosmos): un-wire x/crisis --------- Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> --- golang/cosmos/app/app.go | 33 ++++++++++++------------- golang/cosmos/app/export.go | 3 --- golang/cosmos/daemon/cmd/root.go | 2 -- packages/agoric-cli/src/chain-config.js | 1 - 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/golang/cosmos/app/app.go b/golang/cosmos/app/app.go index fb91d57c1a6..e0430189e69 100644 --- a/golang/cosmos/app/app.go +++ b/golang/cosmos/app/app.go @@ -21,6 +21,7 @@ import ( "github.com/cosmos/cosmos-sdk/server/config" servertypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/cosmos/cosmos-sdk/simapp" + storetypes "github.com/cosmos/cosmos-sdk/store/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/errors" "github.com/cosmos/cosmos-sdk/types/module" @@ -43,8 +44,6 @@ import ( "github.com/cosmos/cosmos-sdk/x/capability" capabilitykeeper "github.com/cosmos/cosmos-sdk/x/capability/keeper" capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" - "github.com/cosmos/cosmos-sdk/x/crisis" - crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper" crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" distr "github.com/cosmos/cosmos-sdk/x/distribution" distrclient "github.com/cosmos/cosmos-sdk/x/distribution/client" @@ -159,7 +158,6 @@ var ( swingsetclient.CoreEvalProposalHandler, ), params.AppModuleBasic{}, - crisis.AppModuleBasic{}, slashing.AppModuleBasic{}, feegrantmodule.AppModuleBasic{}, authzmodule.AppModuleBasic{}, @@ -233,7 +231,6 @@ type GaiaApp struct { // nolint: golint MintKeeper mintkeeper.Keeper DistrKeeper distrkeeper.Keeper GovKeeper govkeeper.Keeper - CrisisKeeper crisiskeeper.Keeper UpgradeKeeper upgradekeeper.Keeper ParamsKeeper paramskeeper.Keeper // IBC Keeper must be a pointer in the app, so we can SetRouter on it correctly @@ -414,12 +411,6 @@ func NewAgoricApp( &stakingKeeper, app.GetSubspace(slashingtypes.ModuleName), ) - app.CrisisKeeper = crisiskeeper.NewKeeper( - app.GetSubspace(crisistypes.ModuleName), - invCheckPeriod, - app.BankKeeper, - vbanktypes.ReservePoolName, - ) app.UpgradeKeeper = upgradekeeper.NewKeeper( skipUpgradeHeights, keys[upgradetypes.StoreKey], @@ -595,7 +586,6 @@ func NewAgoricApp( app.EvidenceKeeper = *evidenceKeeper - skipGenesisInvariants := cast.ToBool(appOpts.Get(crisis.FlagSkipGenesisInvariants)) swingStoreExportDir := cast.ToString(appOpts.Get(FlagSwingStoreExportDir)) // NOTE: Any module instantiated in the module manager that is later modified @@ -611,7 +601,6 @@ func NewAgoricApp( vesting.NewAppModule(app.AccountKeeper, app.BankKeeper, app.StakingKeeper), bank.NewAppModule(appCodec, app.BankKeeper, app.AccountKeeper), capability.NewAppModule(appCodec, *app.CapabilityKeeper), - crisis.NewAppModule(&app.CrisisKeeper, skipGenesisInvariants), gov.NewAppModule(appCodec, app.GovKeeper, app.AccountKeeper, app.BankKeeper), mint.NewAppModule(appCodec, app.MintKeeper, app.AccountKeeper), slashing.NewAppModule(appCodec, app.SlashingKeeper, app.AccountKeeper, app.BankKeeper, app.StakingKeeper), @@ -641,7 +630,6 @@ func NewAgoricApp( // upgrades should be run first upgradetypes.ModuleName, capabilitytypes.ModuleName, - crisistypes.ModuleName, govtypes.ModuleName, stakingtypes.ModuleName, ibctransfertypes.ModuleName, @@ -670,7 +658,6 @@ func NewAgoricApp( vibc.ModuleName, vbank.ModuleName, lien.ModuleName, - crisistypes.ModuleName, govtypes.ModuleName, stakingtypes.ModuleName, ibctransfertypes.ModuleName, @@ -711,7 +698,6 @@ func NewAgoricApp( slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName, - crisistypes.ModuleName, ibctransfertypes.ModuleName, ibchost.ModuleName, icatypes.ModuleName, @@ -732,7 +718,6 @@ func NewAgoricApp( app.mm.SetOrderInitGenesis(moduleOrderForGenesisAndUpgrade...) app.mm.SetOrderMigrations(moduleOrderForGenesisAndUpgrade...) - app.mm.RegisterInvariants(&app.CrisisKeeper) app.mm.RegisterRoutes(app.Router(), app.QueryRouter(), encodingConfig.Amino) app.configurator = module.NewConfigurator(app.appCodec, app.MsgServiceRouter(), app.GRPCQueryRouter()) @@ -804,6 +789,21 @@ func NewAgoricApp( upgrade13Handler(app, upgradeNameTest), ) + upgradeInfo, err := app.UpgradeKeeper.ReadUpgradeInfoFromDisk() + if err != nil { + panic(err) + } + if (upgradeInfo.Name == upgradeName || upgradeInfo.Name == upgradeNameTest) && !app.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height) { + storeUpgrades := storetypes.StoreUpgrades{ + Deleted: []string{ + crisistypes.ModuleName, // The SDK discontinued the crisis module in v0.51.0 + }, + } + + // configure store loader that checks if version == upgradeHeight and applies store upgrades + app.SetStoreLoader(upgradetypes.UpgradeStoreLoader(upgradeInfo.Height, &storeUpgrades)) + } + if loadLatest { if err := app.LoadLatestVersion(); err != nil { tmos.Exit(fmt.Sprintf("failed to load latest version: %s", err)) @@ -1177,7 +1177,6 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino paramsKeeper.Subspace(distrtypes.ModuleName) paramsKeeper.Subspace(slashingtypes.ModuleName) paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypes.ParamKeyTable()) - paramsKeeper.Subspace(crisistypes.ModuleName) paramsKeeper.Subspace(ibctransfertypes.ModuleName) paramsKeeper.Subspace(ibchost.ModuleName) paramsKeeper.Subspace(icahosttypes.SubModuleName) diff --git a/golang/cosmos/app/export.go b/golang/cosmos/app/export.go index 0c000cdf31e..66e5f982042 100644 --- a/golang/cosmos/app/export.go +++ b/golang/cosmos/app/export.go @@ -65,9 +65,6 @@ func (app *GaiaApp) prepForZeroHeightGenesis(ctx sdk.Context, jailAllowedAddrs [ allowedAddrsMap[addr] = true } - /* Just to be safe, assert the invariants on current state. */ - app.CrisisKeeper.AssertInvariants(ctx) - /* Handle fee distribution state. */ // withdraw all validator commission diff --git a/golang/cosmos/daemon/cmd/root.go b/golang/cosmos/daemon/cmd/root.go index 35a59ceb101..6691efe4cfb 100644 --- a/golang/cosmos/daemon/cmd/root.go +++ b/golang/cosmos/daemon/cmd/root.go @@ -24,7 +24,6 @@ import ( "github.com/cosmos/cosmos-sdk/x/auth/types" vestingcli "github.com/cosmos/cosmos-sdk/x/auth/vesting/client/cli" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - "github.com/cosmos/cosmos-sdk/x/crisis" genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" "github.com/spf13/cast" "github.com/spf13/cobra" @@ -155,7 +154,6 @@ func initRootCmd(sender Sender, rootCmd *cobra.Command, encodingConfig params.En } func addModuleInitFlags(startCmd *cobra.Command) { - crisis.AddModuleInitFlags(startCmd) } func queryCommand() *cobra.Command { diff --git a/packages/agoric-cli/src/chain-config.js b/packages/agoric-cli/src/chain-config.js index 7a24c4c267e..9f52c49eec0 100644 --- a/packages/agoric-cli/src/chain-config.js +++ b/packages/agoric-cli/src/chain-config.js @@ -235,7 +235,6 @@ export function finishCosmosGenesis({ genesisJson, exportedGenesisJson }) { // Set the denomination for different modules. genesis.app_state.mint.params.mint_denom = MINT_DENOM; - genesis.app_state.crisis.constant_fee.denom = MINT_DENOM; genesis.app_state.gov.deposit_params.min_deposit = GOV_DEPOSIT_COINS; genesis.app_state.gov.voting_params.voting_period = GOV_VOTING_PERIOD; From 457beb3106776d2bf90ae5a7dab3a6b644ffd8ab Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Wed, 6 Dec 2023 00:41:32 +0000 Subject: [PATCH 36/39] chore(web-components): fix lint --- packages/web-components/src/keplr-connection/watchWallet.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/web-components/src/keplr-connection/watchWallet.js b/packages/web-components/src/keplr-connection/watchWallet.js index 4b3172f48df..b3504b616c2 100644 --- a/packages/web-components/src/keplr-connection/watchWallet.js +++ b/packages/web-components/src/keplr-connection/watchWallet.js @@ -69,7 +69,10 @@ export const watchWallet = async (leader, address, context, rpcs) => { const watchCurrent = async () => { let lastPaths; for await (const { value } of iterateLatest(currentFollower)) { - const { offerToPublicSubscriberPaths: currentPaths } = value; + const { offerToPublicSubscriberPaths: currentPaths } = + /** @type {import('@agoric/smart-wallet/src/smartWallet.js').CurrentWalletRecord} */ ( + value + ); // eslint-disable-next-line no-continue if (currentPaths === lastPaths) continue; From ffa91c6153f7db01beb47a64d40b22d87312dffa Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Thu, 7 Dec 2023 13:18:57 +0000 Subject: [PATCH 37/39] chore(xsnap-lockdown): Force version bump Reflect patch-package of transitive dependency --- packages/xsnap-lockdown/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/xsnap-lockdown/package.json b/packages/xsnap-lockdown/package.json index 51ea74f9fca..2dff85a15a0 100644 --- a/packages/xsnap-lockdown/package.json +++ b/packages/xsnap-lockdown/package.json @@ -43,4 +43,4 @@ "timeout": "2m", "workerThreads": false } -} +} \ No newline at end of file From 4597fe31dba6b9aad05a39a32f0f98befd1de052 Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Mon, 13 Nov 2023 13:19:50 +0000 Subject: [PATCH 38/39] chore: fix release instructions and tools --- MAINTAINERS.md | 2 +- scripts/get-released-tags | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/MAINTAINERS.md b/MAINTAINERS.md index 626080a453d..43492fa5faf 100644 --- a/MAINTAINERS.md +++ b/MAINTAINERS.md @@ -117,7 +117,7 @@ prior=$(git tag -l | sed -ne 's!^@agoric/sdk@\([0-9]*\).*!\1!p' | sort -n | tail SDKVER=$(( prior + 1 )) git tag @agoric/sdk@$SDKVER # Push the branch. -git push -u origin release-$now +git push -u origin prepare-release-$now # Tell which packages have actual news. scripts/have-news HEAD^ > have-news.md ``` diff --git a/scripts/get-released-tags b/scripts/get-released-tags index 8615f7d6147..adefbd38e54 100755 --- a/scripts/get-released-tags +++ b/scripts/get-released-tags @@ -5,7 +5,7 @@ otherTags= if test -z "$cmd"; then cmd=echo fi -for tag in $(git tag -l | grep -E '@[.0-9]+$'); do +for tag in $(git tag -l --contains HEAD | grep -E '@[0-9.]+(-[^.]*\.[0-9.]+)?$'); do case $tag in @agoric/sdk@*) sdkTags="$sdkTags $tag" ;; @agoric/cosmos@*) From 5a6cdeb0c18ae9700d706445acf402f8d1e873c3 Mon Sep 17 00:00:00 2001 From: Mathieu Hofman Date: Thu, 7 Dec 2023 14:55:32 +0000 Subject: [PATCH 39/39] chore(release): publish - @agoric/cosmos@0.35.0-u13.0 - @agoric/ertp@0.16.3-u13.0 - @agoric/swingset-vat@0.32.3-u13.0 - agoric@0.22.0-u13.0 - @agoric/cache@0.3.3-u13.0 - @agoric/casting@0.4.3-u13.0 - @agoric/cosmic-swingset@0.42.0-u13.0 - @agoric/deploy-script-support@0.10.4-u13.0 - @agoric/deployment@4.0.0-u13.0 - @agoric/governance@0.10.4-u13.0 - @agoric/import-manager@0.3.12-u13.0 - @agoric/inter-protocol@0.16.2-u13.0 - @agoric/internal@0.4.0-u13.0 - @agoric/notifier@0.6.3-u13.0 - @agoric/pegasus@0.7.13-u13.0 - @agoric/same-structure@0.2.8-u13.0 - @agoric/sharing-service@0.2.12-u13.0 - @agoric/smart-wallet@0.5.4-u13.0 - @agoric/solo@0.10.4-u13.0 - @agoric/spawner@0.6.9-u13.0 - @agoric/store@0.9.3-u13.0 - @agoric/swing-store@0.9.2-u13.0 - @agoric/swingset-liveslots@0.10.3-u13.0 - @agoric/swingset-runner@0.22.3-u13.0 - @agoric/swingset-xsnap-supervisor@0.10.3-u13.0 - @agoric/telemetry@0.6.3-u13.0 - @agoric/time@0.3.3-u13.0 - @agoric/ui-components@0.3.9-u13.0 - @agoric/vat-data@0.5.3-u13.0 - @agoric/vats@0.15.2-u13.0 - @agoric/wallet-connection@0.1.18-u13.0 - @agoric/wallet@0.18.4-u13.0 - @agoric/web-components@0.6.4-u13.0 - @agoric/xsnap-lockdown@0.14.1-u13.0 - @agoric/xsnap@0.14.3-u13.0 - @agoric/zoe@0.26.3-u13.0 - @agoric/zone@0.2.3-u13.0 - @agoric/wallet-backend@0.14.4-u13.0 --- golang/cosmos/CHANGELOG.md | 24 +++++++++++++ golang/cosmos/package.json | 2 +- packages/ERTP/CHANGELOG.md | 8 +++++ packages/ERTP/package.json | 10 +++--- packages/SwingSet/CHANGELOG.md | 9 +++++ packages/SwingSet/package.json | 20 +++++------ packages/agoric-cli/CHANGELOG.md | 26 ++++++++++++++ packages/agoric-cli/package.json | 26 +++++++------- packages/cache/CHANGELOG.md | 8 +++++ packages/cache/package.json | 12 +++---- packages/casting/CHANGELOG.md | 10 ++++++ packages/casting/package.json | 10 +++--- packages/cosmic-swingset/CHANGELOG.md | 14 ++++++++ packages/cosmic-swingset/package.json | 16 ++++----- packages/deploy-script-support/CHANGELOG.md | 8 +++++ packages/deploy-script-support/package.json | 16 ++++----- packages/deployment/CHANGELOG.md | 8 +++++ packages/deployment/package.json | 2 +- packages/governance/CHANGELOG.md | 8 +++++ packages/governance/package.json | 22 ++++++------ packages/import-manager/CHANGELOG.md | 8 +++++ packages/import-manager/package.json | 4 +-- packages/inter-protocol/CHANGELOG.md | 9 +++++ packages/inter-protocol/package.json | 28 +++++++-------- packages/internal/CHANGELOG.md | 8 +++++ packages/internal/package.json | 4 +-- packages/notifier/CHANGELOG.md | 8 +++++ packages/notifier/package.json | 12 +++---- packages/pegasus/CHANGELOG.md | 8 +++++ packages/pegasus/package.json | 18 +++++----- packages/same-structure/CHANGELOG.md | 8 +++++ packages/same-structure/package.json | 4 +-- packages/sharing-service/CHANGELOG.md | 8 +++++ packages/sharing-service/package.json | 4 +-- packages/smart-wallet/CHANGELOG.md | 8 +++++ packages/smart-wallet/package.json | 20 +++++------ packages/solo/CHANGELOG.md | 9 +++++ packages/solo/package.json | 28 +++++++-------- packages/spawner/CHANGELOG.md | 8 +++++ packages/spawner/package.json | 6 ++-- packages/store/CHANGELOG.md | 8 +++++ packages/store/package.json | 6 ++-- packages/swing-store/CHANGELOG.md | 9 +++++ packages/swing-store/package.json | 4 +-- packages/swingset-liveslots/CHANGELOG.md | 8 +++++ packages/swingset-liveslots/package.json | 8 ++--- packages/swingset-runner/CHANGELOG.md | 8 +++++ packages/swingset-runner/package.json | 16 ++++----- .../swingset-xsnap-supervisor/CHANGELOG.md | 8 +++++ .../swingset-xsnap-supervisor/package.json | 4 +-- packages/telemetry/CHANGELOG.md | 8 +++++ packages/telemetry/package.json | 6 ++-- packages/time/CHANGELOG.md | 8 +++++ packages/time/package.json | 4 +-- packages/ui-components/CHANGELOG.md | 8 +++++ packages/ui-components/package.json | 4 +-- packages/vat-data/CHANGELOG.md | 8 +++++ packages/vat-data/package.json | 8 ++--- packages/vats/CHANGELOG.md | 8 +++++ packages/vats/package.json | 36 +++++++++---------- packages/wallet-connection/CHANGELOG.md | 8 +++++ packages/wallet-connection/package.json | 4 +-- packages/wallet/CHANGELOG.md | 8 +++++ packages/wallet/api/CHANGELOG.md | 8 +++++ packages/wallet/api/package.json | 22 ++++++------ packages/wallet/package.json | 2 +- packages/web-components/CHANGELOG.md | 8 +++++ packages/web-components/package.json | 14 ++++---- packages/xsnap-lockdown/CHANGELOG.md | 8 +++++ packages/xsnap-lockdown/package.json | 4 +-- packages/xsnap/CHANGELOG.md | 8 +++++ packages/xsnap/package.json | 6 ++-- packages/zoe/CHANGELOG.md | 8 +++++ packages/zoe/package.json | 16 ++++----- packages/zone/CHANGELOG.md | 8 +++++ packages/zone/package.json | 6 ++-- 76 files changed, 567 insertions(+), 217 deletions(-) diff --git a/golang/cosmos/CHANGELOG.md b/golang/cosmos/CHANGELOG.md index 5c3c3984d23..c8d0499fde4 100644 --- a/golang/cosmos/CHANGELOG.md +++ b/golang/cosmos/CHANGELOG.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.35.0-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/cosmos@0.35.0-u12.0...@agoric/cosmos@0.35.0-u13.0) (2023-12-07) + + +### Features + +* **cosmos:** un-wire x/crisis ([#8582](https://github.com/Agoric/agoric-sdk/issues/8582)) ([19404a3](https://github.com/Agoric/agoric-sdk/commit/19404a3c5cd10d9c454f190b60cbf0aa715f605c)) +* **x/swingset:** auto-provision smart wallet ([5073800](https://github.com/Agoric/agoric-sdk/commit/5073800f87c92a194a21c9cc59ad1bb570a39b95)) +* **x/swingset:** refuse smart wallet messages if not provisioned ([50a5a55](https://github.com/Agoric/agoric-sdk/commit/50a5a557956562fc05b8c2defd99a0102a35153f)) +* pick up return-grants from latest cosmos-sdk ([975533e](https://github.com/Agoric/agoric-sdk/commit/975533e088f96c80cf8d6f6b7c5f45665e3495ba)) +* update ibc-go to v4, adapt packages and API ([6672e5c](https://github.com/Agoric/agoric-sdk/commit/6672e5cb780c8baa530ac59bff27d793e1ff8f50)) + + +### Bug Fixes + +* handle hang-on-halt behavior from agoric-labs/cosmos-sdk[#305](https://github.com/Agoric/agoric-sdk/issues/305) ([7ae9a70](https://github.com/Agoric/agoric-sdk/commit/7ae9a705478727d1d7ace7c665861cfee14b5f28)) +* update dependencies to fix tests ([9d750dd](https://github.com/Agoric/agoric-sdk/commit/9d750dd39993d380a5e889ea7faa4bb78c3257aa)) + + +### Reverts + +* Revert "fix: handle hang-on-halt behavior from agoric-labs/cosmos-sdk#305" ([3a37f5e](https://github.com/Agoric/agoric-sdk/commit/3a37f5e472405d1d3bee2075b47ecd3632ba4073)), closes [agoric-labs/cosmos-sdk#305](https://github.com/agoric-labs/cosmos-sdk/issues/305) [agoric-labs/cosmos-sdk#305](https://github.com/agoric-labs/cosmos-sdk/issues/305) + + + ## [0.35.0-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/cosmos@0.35.0-u11wf.0...@agoric/cosmos@0.35.0-u12.0) (2023-11-10) diff --git a/golang/cosmos/package.json b/golang/cosmos/package.json index 1d56e5879a0..a1ebed63ecb 100644 --- a/golang/cosmos/package.json +++ b/golang/cosmos/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/cosmos", - "version": "0.35.0-u12.0", + "version": "0.35.0-u13.0", "description": "Connect JS to the Cosmos blockchain SDK", "parsers": { "js": "mjs" diff --git a/packages/ERTP/CHANGELOG.md b/packages/ERTP/CHANGELOG.md index 9880157d6d1..64322419afb 100644 --- a/packages/ERTP/CHANGELOG.md +++ b/packages/ERTP/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.16.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/ertp@0.16.3-u12.0...@agoric/ertp@0.16.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/ertp + + + + + ### [0.16.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/ertp@0.16.3-u11wf.0...@agoric/ertp@0.16.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/ertp diff --git a/packages/ERTP/package.json b/packages/ERTP/package.json index 16e8b86a380..54f6ec4f68a 100644 --- a/packages/ERTP/package.json +++ b/packages/ERTP/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/ertp", - "version": "0.16.3-u12.0", + "version": "0.16.3-u13.0", "description": "Electronic Rights Transfer Protocol (ERTP). A smart contract framework for exchanging electronic rights", "type": "module", "main": "src/index.js", @@ -40,10 +40,10 @@ "homepage": "https://github.com/Agoric/agoric-sdk#readme", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", "@endo/eventual-send": "0.17.2", "@endo/far": "0.2.18", "@endo/marshal": "0.8.5", diff --git a/packages/SwingSet/CHANGELOG.md b/packages/SwingSet/CHANGELOG.md index e08f280871f..c34a3322e0d 100644 --- a/packages/SwingSet/CHANGELOG.md +++ b/packages/SwingSet/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.32.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swingset-vat@0.32.3-u12.0...@agoric/swingset-vat@0.32.3-u13.0) (2023-12-07) + + +### Bug Fixes + +* handle Node 18 breaking change ([#8600](https://github.com/Agoric/agoric-sdk/issues/8600)) ([2c64440](https://github.com/Agoric/agoric-sdk/commit/2c64440d5b5957076ad9ac7b9243de3b600c859f)) + + + ### [0.32.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swingset-vat@0.32.3-u11wf.0...@agoric/swingset-vat@0.32.3-u12.0) (2023-11-10) diff --git a/packages/SwingSet/package.json b/packages/SwingSet/package.json index 28f94bd9832..37c13bab565 100644 --- a/packages/SwingSet/package.json +++ b/packages/SwingSet/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/swingset-vat", - "version": "0.32.3-u12.0", + "version": "0.32.3-u13.0", "description": "Vat/Container Launcher", "type": "module", "main": "src/index.js", @@ -29,15 +29,15 @@ }, "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/swing-store": "^0.9.2-u12.0", - "@agoric/swingset-liveslots": "^0.10.3-u12.0", - "@agoric/swingset-xsnap-supervisor": "^0.10.3-u12.0", - "@agoric/time": "^0.3.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", - "@agoric/xsnap": "^0.14.3-u12.0", - "@agoric/xsnap-lockdown": "^0.14.1-u11wf.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/swing-store": "^0.9.2-u13.0", + "@agoric/swingset-liveslots": "^0.10.3-u13.0", + "@agoric/swingset-xsnap-supervisor": "^0.10.3-u13.0", + "@agoric/time": "^0.3.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", + "@agoric/xsnap": "^0.14.3-u13.0", + "@agoric/xsnap-lockdown": "^0.14.1-u13.0", "@endo/base64": "0.2.31", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/captp": "3.1.1", diff --git a/packages/agoric-cli/CHANGELOG.md b/packages/agoric-cli/CHANGELOG.md index d1c3b0abacc..640f1d62cbf 100644 --- a/packages/agoric-cli/CHANGELOG.md +++ b/packages/agoric-cli/CHANGELOG.md @@ -3,6 +3,32 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.22.0-u13.0](https://github.com/Agoric/agoric-sdk/compare/agoric@0.21.2-u12.0...agoric@0.22.0-u13.0) (2023-12-07) + + +### ⚠ BREAKING CHANGES + +* restrict exports from 'agoric' package + +### Features + +* **cosmos:** un-wire x/crisis ([#8582](https://github.com/Agoric/agoric-sdk/issues/8582)) ([19404a3](https://github.com/Agoric/agoric-sdk/commit/19404a3c5cd10d9c454f190b60cbf0aa715f605c)) + + +### Bug Fixes + +* **agops:** fix continuing id lookup in oracle setPrice ([0ac9697](https://github.com/Agoric/agoric-sdk/commit/0ac969746c7337d45287fd040b636d27d296a062)) +* **agoric:** print errors while following ([deab7e4](https://github.com/Agoric/agoric-sdk/commit/deab7e4065fe5dd6cc1a3c5bf8c0db861cb7856b)) +* **casting:** dont crash on bad capdata ([3f01369](https://github.com/Agoric/agoric-sdk/commit/3f0136994c0b4033c872f9593cabb19bab05f01c)) +* **cli:** handle not found error in vstorage requests ([8111c43](https://github.com/Agoric/agoric-sdk/commit/8111c4344bcaa6e06085020813e2431cba9d1632)) + + +### Miscellaneous Chores + +* restrict exports from 'agoric' package ([63c1abb](https://github.com/Agoric/agoric-sdk/commit/63c1abbfcb0710bdd0a22382eb4a683216a6c453)) + + + ### [0.21.2-u12.0](https://github.com/Agoric/agoric-sdk/compare/agoric@0.21.2-u11wf.0...agoric@0.21.2-u12.0) (2023-11-10) **Note:** Version bump only for package agoric diff --git a/packages/agoric-cli/package.json b/packages/agoric-cli/package.json index 65095ef3e0a..66d6a217b30 100644 --- a/packages/agoric-cli/package.json +++ b/packages/agoric-cli/package.json @@ -1,6 +1,6 @@ { "name": "agoric", - "version": "0.21.2-u12.0", + "version": "0.22.0-u13.0", "description": "Manage the Agoric Javascript smart contract platform", "type": "module", "main": "src/main.js", @@ -28,7 +28,7 @@ "lint:eslint": "eslint ." }, "devDependencies": { - "@agoric/deploy-script-support": "^0.10.4-u12.0", + "@agoric/deploy-script-support": "^0.10.4-u13.0", "ava": "^5.2.0", "c8": "^7.13.0", "dd-trace": "^3.3.0" @@ -36,18 +36,18 @@ "dependencies": { "@agoric/access-token": "^0.4.22-u11wf.0", "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/cache": "^0.3.3-u12.0", - "@agoric/casting": "^0.4.3-u12.0", + "@agoric/cache": "^0.3.3-u13.0", + "@agoric/casting": "^0.4.3-u13.0", "@agoric/cosmic-proto": "^0.3.0", - "@agoric/ertp": "^0.16.3-u12.0", - "@agoric/inter-protocol": "^0.16.2-u12.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/smart-wallet": "^0.5.4-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", - "@agoric/vats": "^0.15.2-u12.0", - "@agoric/zoe": "^0.26.3-u12.0", - "@agoric/zone": "^0.2.3-u12.0", + "@agoric/ertp": "^0.16.3-u13.0", + "@agoric/inter-protocol": "^0.16.2-u13.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/smart-wallet": "^0.5.4-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", + "@agoric/vats": "^0.15.2-u13.0", + "@agoric/zoe": "^0.26.3-u13.0", + "@agoric/zone": "^0.2.3-u13.0", "@confio/relayer": "^0.9.0", "@cosmjs/crypto": "^0.30.1", "@cosmjs/encoding": "^0.30.1", diff --git a/packages/cache/CHANGELOG.md b/packages/cache/CHANGELOG.md index 9938c5dce2b..5e1572ae203 100644 --- a/packages/cache/CHANGELOG.md +++ b/packages/cache/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.3.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/cache@0.3.3-u12.0...@agoric/cache@0.3.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/cache + + + + + ### [0.3.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/cache@0.3.3-u11wf.0...@agoric/cache@0.3.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/cache diff --git a/packages/cache/package.json b/packages/cache/package.json index 8f7ea2f12e9..6b6911ae496 100644 --- a/packages/cache/package.json +++ b/packages/cache/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/cache", - "version": "0.3.3-u12.0", + "version": "0.3.3-u13.0", "description": "Agoric's simple cache interface", "type": "module", "main": "src/main.js", @@ -19,15 +19,15 @@ "author": "Agoric", "license": "Apache-2.0", "dependencies": { - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", "@endo/far": "0.2.18", "@endo/marshal": "0.8.5" }, "devDependencies": { - "@agoric/zoe": "^0.26.3-u12.0", + "@agoric/zoe": "^0.26.3-u13.0", "ava": "^5.2.0", "c8": "^7.13.0" }, diff --git a/packages/casting/CHANGELOG.md b/packages/casting/CHANGELOG.md index b6529b98322..5c24e84d7e6 100644 --- a/packages/casting/CHANGELOG.md +++ b/packages/casting/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.4.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/casting@0.4.3-u12.0...@agoric/casting@0.4.3-u13.0) (2023-12-07) + + +### Bug Fixes + +* **casting:** dont crash on bad capdata ([3f01369](https://github.com/Agoric/agoric-sdk/commit/3f0136994c0b4033c872f9593cabb19bab05f01c)) +* **casting:** properly follow an unpopulated state entry ([48296f7](https://github.com/Agoric/agoric-sdk/commit/48296f78f783e8e5ae1e5fbe92ae10e5e7880837)) + + + ### [0.4.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/casting@0.4.3-u11wf.0...@agoric/casting@0.4.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/casting diff --git a/packages/casting/package.json b/packages/casting/package.json index 2af88123a10..d3a907f5e77 100644 --- a/packages/casting/package.json +++ b/packages/casting/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/casting", - "version": "0.4.3-u12.0", + "version": "0.4.3-u13.0", "description": "Agoric's OCap broadcasting system", "type": "module", "main": "src/main.js", @@ -22,10 +22,10 @@ "author": "Agoric", "license": "Apache-2.0", "dependencies": { - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/spawner": "^0.6.9-u12.0", - "@agoric/store": "^0.9.3-u12.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/spawner": "^0.6.9-u13.0", + "@agoric/store": "^0.9.3-u13.0", "@cosmjs/encoding": "^0.30.1", "@cosmjs/proto-signing": "^0.30.1", "@cosmjs/stargate": "^0.30.1", diff --git a/packages/cosmic-swingset/CHANGELOG.md b/packages/cosmic-swingset/CHANGELOG.md index 7d5b514d233..dea7f9f7872 100644 --- a/packages/cosmic-swingset/CHANGELOG.md +++ b/packages/cosmic-swingset/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.42.0-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/cosmic-swingset@0.42.0-u12.0...@agoric/cosmic-swingset@0.42.0-u13.0) (2023-12-07) + + +### Features + +* add exporter.getHostKV() API ([16435d2](https://github.com/Agoric/agoric-sdk/commit/16435d20e9ede86916a54c7bae54ecfc59e4c950)), closes [#8523](https://github.com/Agoric/agoric-sdk/issues/8523) + + +### Bug Fixes + +* export state-sync snapshot without a DB write-lock ([2d388c2](https://github.com/Agoric/agoric-sdk/commit/2d388c2d51425b9d98b79d54ea6a2de96da67042)), closes [#8523](https://github.com/Agoric/agoric-sdk/issues/8523) + + + ## [0.42.0-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/cosmic-swingset@0.42.0-u11wf.0...@agoric/cosmic-swingset@0.42.0-u12.0) (2023-11-10) diff --git a/packages/cosmic-swingset/package.json b/packages/cosmic-swingset/package.json index 44b4793dcc2..06f331abe86 100644 --- a/packages/cosmic-swingset/package.json +++ b/packages/cosmic-swingset/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/cosmic-swingset", - "version": "0.42.0-u12.0", + "version": "0.42.0-u13.0", "description": "Agoric's Cosmos blockchain integration", "type": "module", "bin": { @@ -23,13 +23,13 @@ "license": "Apache-2.0", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/cosmos": "^0.35.0-u12.0", - "@agoric/deploy-script-support": "^0.10.4-u12.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/swing-store": "^0.9.2-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", - "@agoric/telemetry": "^0.6.3-u12.0", + "@agoric/cosmos": "^0.35.0-u13.0", + "@agoric/deploy-script-support": "^0.10.4-u13.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/swing-store": "^0.9.2-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", + "@agoric/telemetry": "^0.6.3-u13.0", "@endo/far": "0.2.18", "@endo/import-bundle": "0.3.4", "@endo/init": "0.5.56", diff --git a/packages/deploy-script-support/CHANGELOG.md b/packages/deploy-script-support/CHANGELOG.md index a7b410a3ef9..da6149b0e82 100644 --- a/packages/deploy-script-support/CHANGELOG.md +++ b/packages/deploy-script-support/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.10.4-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/deploy-script-support@0.10.4-u12.0...@agoric/deploy-script-support@0.10.4-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/deploy-script-support + + + + + ### [0.10.4-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/deploy-script-support@0.10.4-u11wf.0...@agoric/deploy-script-support@0.10.4-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/deploy-script-support diff --git a/packages/deploy-script-support/package.json b/packages/deploy-script-support/package.json index c665df8e44a..2417e8a1faf 100644 --- a/packages/deploy-script-support/package.json +++ b/packages/deploy-script-support/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/deploy-script-support", - "version": "0.10.4-u12.0", + "version": "0.10.4-u13.0", "description": "Helpers and other support for writing deploy scripts", "type": "module", "main": "src/helpers.js", @@ -35,12 +35,12 @@ "homepage": "https://github.com/Agoric/agoric-sdk#readme", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/ertp": "^0.16.3-u12.0", - "@agoric/import-manager": "^0.3.12-u12.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/zoe": "^0.26.3-u12.0", + "@agoric/ertp": "^0.16.3-u13.0", + "@agoric/import-manager": "^0.3.12-u13.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/zoe": "^0.26.3-u13.0", "@endo/base64": "0.2.31", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/far": "0.2.18", @@ -50,7 +50,7 @@ "@endo/zip": "0.2.31" }, "devDependencies": { - "@agoric/vats": "^0.15.2-u12.0", + "@agoric/vats": "^0.15.2-u13.0", "@endo/init": "0.5.56", "ava": "^5.2.0", "import-meta-resolve": "^2.2.1" diff --git a/packages/deployment/CHANGELOG.md b/packages/deployment/CHANGELOG.md index 08c5a1e6528..20e2b136021 100644 --- a/packages/deployment/CHANGELOG.md +++ b/packages/deployment/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.0.0-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/deployment@4.0.0-u12.0...@agoric/deployment@4.0.0-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/deployment + + + + + ## [4.0.0-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/deployment@4.0.0-u11wf.0...@agoric/deployment@4.0.0-u12.0) (2023-11-10) diff --git a/packages/deployment/package.json b/packages/deployment/package.json index 7550e097473..7fb1ec3a33e 100644 --- a/packages/deployment/package.json +++ b/packages/deployment/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/deployment", - "version": "4.0.0-u12.0", + "version": "4.0.0-u13.0", "description": "Set up Agoric public chain nodes", "type": "module", "private": true, diff --git a/packages/governance/CHANGELOG.md b/packages/governance/CHANGELOG.md index b56ec311d51..f504760281d 100644 --- a/packages/governance/CHANGELOG.md +++ b/packages/governance/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.10.4-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/governance@0.10.4-u12.0...@agoric/governance@0.10.4-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/governance + + + + + ### [0.10.4-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/governance@0.10.4-u11wf.0...@agoric/governance@0.10.4-u12.0) (2023-11-10) diff --git a/packages/governance/package.json b/packages/governance/package.json index 8bbb694b065..92b348392cc 100644 --- a/packages/governance/package.json +++ b/packages/governance/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/governance", - "version": "0.10.4-u12.0", + "version": "0.10.4-u13.0", "description": "Core governance support", "type": "module", "main": "src/index.js", @@ -32,15 +32,15 @@ "homepage": "https://github.com/Agoric/agoric-sdk#readme", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/ertp": "^0.16.3-u12.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", - "@agoric/time": "^0.3.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", - "@agoric/vats": "^0.15.2-u12.0", - "@agoric/zoe": "^0.26.3-u12.0", + "@agoric/ertp": "^0.16.3-u13.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", + "@agoric/time": "^0.3.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", + "@agoric/vats": "^0.15.2-u13.0", + "@agoric/zoe": "^0.26.3-u13.0", "@endo/captp": "3.1.1", "@endo/eventual-send": "0.17.2", "@endo/far": "0.2.18", @@ -49,7 +49,7 @@ "@endo/promise-kit": "0.2.56" }, "devDependencies": { - "@agoric/deploy-script-support": "^0.10.4-u12.0", + "@agoric/deploy-script-support": "^0.10.4-u13.0", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/init": "0.5.56", "ava": "^5.2.0", diff --git a/packages/import-manager/CHANGELOG.md b/packages/import-manager/CHANGELOG.md index 6f9a4171f36..b222d8a2de6 100644 --- a/packages/import-manager/CHANGELOG.md +++ b/packages/import-manager/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.3.12-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/import-manager@0.3.12-u12.0...@agoric/import-manager@0.3.12-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/import-manager + + + + + ### [0.3.12-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/import-manager@0.3.12-u11wf.0...@agoric/import-manager@0.3.12-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/import-manager diff --git a/packages/import-manager/package.json b/packages/import-manager/package.json index c3b429ea0aa..c6ab5fcf4c1 100644 --- a/packages/import-manager/package.json +++ b/packages/import-manager/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/import-manager", - "version": "0.3.12-u12.0", + "version": "0.3.12-u13.0", "description": "Share code across vat boundaries", "type": "module", "main": "./src/importManager.js", @@ -29,7 +29,7 @@ }, "homepage": "https://github.com/Agoric/agoric-sdk#readme", "devDependencies": { - "@agoric/swingset-vat": "^0.32.3-u12.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", "ava": "^5.2.0", "c8": "^7.13.0" }, diff --git a/packages/inter-protocol/CHANGELOG.md b/packages/inter-protocol/CHANGELOG.md index fb61b5b6a6b..d95aaf6e677 100644 --- a/packages/inter-protocol/CHANGELOG.md +++ b/packages/inter-protocol/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.16.2-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/inter-protocol@0.16.2-u12.0...@agoric/inter-protocol@0.16.2-u13.0) (2023-12-07) + + +### Bug Fixes + +* **inter-protocol:** brands in CLI need not start with A-Z ([#8258](https://github.com/Agoric/agoric-sdk/issues/8258)) ([fd9a44d](https://github.com/Agoric/agoric-sdk/commit/fd9a44db84e2cb9c9c78f850be7dbb8911650d54)) + + + ### [0.16.2-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/inter-protocol@0.16.2-u11wf.0...@agoric/inter-protocol@0.16.2-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/inter-protocol diff --git a/packages/inter-protocol/package.json b/packages/inter-protocol/package.json index 59a9a073918..d7dc2ef988b 100644 --- a/packages/inter-protocol/package.json +++ b/packages/inter-protocol/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/inter-protocol", - "version": "0.16.2-u12.0", + "version": "0.16.2-u13.0", "description": "Core cryptoeconomy contracts", "type": "module", "main": "src/index.js", @@ -30,15 +30,15 @@ "homepage": "https://github.com/Agoric/agoric-sdk#readme", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/ertp": "^0.16.3-u12.0", - "@agoric/governance": "^0.10.4-u12.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/time": "^0.3.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", - "@agoric/vats": "^0.15.2-u12.0", - "@agoric/zoe": "^0.26.3-u12.0", + "@agoric/ertp": "^0.16.3-u13.0", + "@agoric/governance": "^0.10.4-u13.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/time": "^0.3.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", + "@agoric/vats": "^0.15.2-u13.0", + "@agoric/zoe": "^0.26.3-u13.0", "@endo/captp": "3.1.1", "@endo/eventual-send": "0.17.2", "@endo/far": "0.2.18", @@ -47,10 +47,10 @@ "jessie.js": "^0.3.2" }, "devDependencies": { - "@agoric/deploy-script-support": "^0.10.4-u12.0", - "@agoric/smart-wallet": "^0.5.4-u12.0", - "@agoric/swingset-liveslots": "^0.10.3-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", + "@agoric/deploy-script-support": "^0.10.4-u13.0", + "@agoric/smart-wallet": "^0.5.4-u13.0", + "@agoric/swingset-liveslots": "^0.10.3-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/init": "0.5.56", "@endo/promise-kit": "0.2.56", diff --git a/packages/internal/CHANGELOG.md b/packages/internal/CHANGELOG.md index c3fe5dde05c..6541a31e298 100644 --- a/packages/internal/CHANGELOG.md +++ b/packages/internal/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.4.0-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/internal@0.4.0-u12.0...@agoric/internal@0.4.0-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/internal + + + + + ## [0.4.0-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/internal@0.3.3-u11wf.0...@agoric/internal@0.4.0-u12.0) (2023-11-10) diff --git a/packages/internal/package.json b/packages/internal/package.json index 84c1effb52d..96cc7c27619 100755 --- a/packages/internal/package.json +++ b/packages/internal/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/internal", - "version": "0.4.0-u12.0", + "version": "0.4.0-u13.0", "description": "Externally unsupported utilities internal to agoric-sdk", "type": "module", "main": "src/index.js", @@ -20,7 +20,7 @@ "lint:types": "tsc -p jsconfig.json" }, "dependencies": { - "@agoric/zone": "^0.2.3-u12.0", + "@agoric/zone": "^0.2.3-u13.0", "@endo/far": "0.2.18", "@endo/marshal": "0.8.5", "@endo/patterns": "0.2.2", diff --git a/packages/notifier/CHANGELOG.md b/packages/notifier/CHANGELOG.md index 719540dc96c..aad751c3e09 100644 --- a/packages/notifier/CHANGELOG.md +++ b/packages/notifier/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.6.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/notifier@0.6.3-u12.0...@agoric/notifier@0.6.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/notifier + + + + + ### [0.6.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/notifier@0.6.3-u11wf.0...@agoric/notifier@0.6.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/notifier diff --git a/packages/notifier/package.json b/packages/notifier/package.json index a25ef1e675f..0b65825433e 100644 --- a/packages/notifier/package.json +++ b/packages/notifier/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/notifier", - "version": "0.6.3-u12.0", + "version": "0.6.3-u13.0", "description": "Notifier allows services to update clients about state changes using a stream of promises", "type": "module", "main": "src/index.js", @@ -34,11 +34,11 @@ "homepage": "https://github.com/Agoric/agoric-sdk#readme", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/swing-store": "^0.9.2-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/swing-store": "^0.9.2-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", "@endo/far": "0.2.18", "@endo/marshal": "0.8.5", "@endo/promise-kit": "0.2.56" diff --git a/packages/pegasus/CHANGELOG.md b/packages/pegasus/CHANGELOG.md index 85a73ffae86..59b1f585fe2 100644 --- a/packages/pegasus/CHANGELOG.md +++ b/packages/pegasus/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.7.13-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/pegasus@0.7.13-u12.0...@agoric/pegasus@0.7.13-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/pegasus + + + + + ### [0.7.13-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/pegasus@0.7.13-u11wf.0...@agoric/pegasus@0.7.13-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/pegasus diff --git a/packages/pegasus/package.json b/packages/pegasus/package.json index ae9ea1f3e8b..a2f661289a7 100644 --- a/packages/pegasus/package.json +++ b/packages/pegasus/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/pegasus", - "version": "0.7.13-u12.0", + "version": "0.7.13-u13.0", "description": "Peg-as-us contract", "type": "module", "main": "./src/pegasus.js", @@ -30,13 +30,13 @@ "homepage": "https://github.com/Agoric/agoric-sdk#readme", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/ertp": "^0.16.3-u12.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", - "@agoric/vats": "^0.15.2-u12.0", - "@agoric/zoe": "^0.26.3-u12.0", + "@agoric/ertp": "^0.16.3-u13.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", + "@agoric/vats": "^0.15.2-u13.0", + "@agoric/zoe": "^0.26.3-u13.0", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/captp": "3.1.1", "@endo/far": "0.2.18", @@ -45,7 +45,7 @@ "@endo/promise-kit": "0.2.56" }, "devDependencies": { - "@agoric/deploy-script-support": "^0.10.4-u12.0", + "@agoric/deploy-script-support": "^0.10.4-u13.0", "ava": "^5.2.0", "c8": "^7.13.0", "import-meta-resolve": "^2.2.1" diff --git a/packages/same-structure/CHANGELOG.md b/packages/same-structure/CHANGELOG.md index 4b77428026a..3a5981f400c 100644 --- a/packages/same-structure/CHANGELOG.md +++ b/packages/same-structure/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.2.8-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/same-structure@0.2.8-u12.0...@agoric/same-structure@0.2.8-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/same-structure + + + + + ### [0.2.8-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/same-structure@0.2.8-u11wf.0...@agoric/same-structure@0.2.8-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/same-structure diff --git a/packages/same-structure/package.json b/packages/same-structure/package.json index 032153ff477..7aee4c123d9 100644 --- a/packages/same-structure/package.json +++ b/packages/same-structure/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/same-structure", - "version": "0.2.8-u12.0", + "version": "0.2.8-u13.0", "description": "Deep equals", "type": "module", "main": "index.js", @@ -30,7 +30,7 @@ "homepage": "https://github.com/Agoric/agoric-sdk#readme", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/store": "^0.9.3-u12.0", + "@agoric/store": "^0.9.3-u13.0", "@endo/marshal": "0.8.5" }, "files": [ diff --git a/packages/sharing-service/CHANGELOG.md b/packages/sharing-service/CHANGELOG.md index f2d9d9e2520..fe8d973efe7 100644 --- a/packages/sharing-service/CHANGELOG.md +++ b/packages/sharing-service/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.2.12-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/sharing-service@0.2.12-u12.0...@agoric/sharing-service@0.2.12-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/sharing-service + + + + + ### [0.2.12-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/sharing-service@0.2.12-u11wf.0...@agoric/sharing-service@0.2.12-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/sharing-service diff --git a/packages/sharing-service/package.json b/packages/sharing-service/package.json index 1abea1d2f98..91db7b147ae 100644 --- a/packages/sharing-service/package.json +++ b/packages/sharing-service/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/sharing-service", - "version": "0.2.12-u12.0", + "version": "0.2.12-u13.0", "description": "Share objects with another party but not publicly", "type": "module", "main": "./src/sharing.js", @@ -31,7 +31,7 @@ "@endo/marshal": "0.8.5" }, "devDependencies": { - "@agoric/swingset-vat": "^0.32.3-u12.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", "@endo/eventual-send": "0.17.2", "ava": "^5.2.0", "c8": "^7.13.0" diff --git a/packages/smart-wallet/CHANGELOG.md b/packages/smart-wallet/CHANGELOG.md index a9df16c2c1d..ef7e42c697e 100644 --- a/packages/smart-wallet/CHANGELOG.md +++ b/packages/smart-wallet/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.5.4-u13.0](https://github.com/Agoric/agoric/compare/@agoric/smart-wallet@0.5.4-u12.0...@agoric/smart-wallet@0.5.4-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/smart-wallet + + + + + ### [0.5.4-u12.0](https://github.com/Agoric/agoric/compare/@agoric/smart-wallet@0.5.4-u11wf.0...@agoric/smart-wallet@0.5.4-u12.0) (2023-11-10) diff --git a/packages/smart-wallet/package.json b/packages/smart-wallet/package.json index 59a522cf4dc..b78ae29175f 100644 --- a/packages/smart-wallet/package.json +++ b/packages/smart-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/smart-wallet", - "version": "0.5.4-u12.0", + "version": "0.5.4-u13.0", "description": "Wallet contract", "type": "module", "scripts": { @@ -25,15 +25,15 @@ }, "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/casting": "^0.4.3-u12.0", - "@agoric/ertp": "^0.16.3-u12.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", - "@agoric/vats": "^0.15.2-u12.0", - "@agoric/zoe": "^0.26.3-u12.0", + "@agoric/casting": "^0.4.3-u13.0", + "@agoric/ertp": "^0.16.3-u13.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", + "@agoric/vats": "^0.15.2-u13.0", + "@agoric/zoe": "^0.26.3-u13.0", "@endo/eventual-send": "0.17.2", "@endo/far": "0.2.18", "@endo/marshal": "0.8.5", diff --git a/packages/solo/CHANGELOG.md b/packages/solo/CHANGELOG.md index bc7a9461c08..f2bea16ee2b 100644 --- a/packages/solo/CHANGELOG.md +++ b/packages/solo/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.10.4-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/solo@0.10.4-u12.0...@agoric/solo@0.10.4-u13.0) (2023-12-07) + + +### Bug Fixes + +* **solo:** properly expose `/wallet/bridge.html` ([#8533](https://github.com/Agoric/agoric-sdk/issues/8533)) ([0095b0d](https://github.com/Agoric/agoric-sdk/commit/0095b0d8ef4cfd42e17b64f391c30eac8a5f018a)) + + + ### [0.10.4-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/solo@0.10.4-u11wf.0...@agoric/solo@0.10.4-u12.0) (2023-11-10) diff --git a/packages/solo/package.json b/packages/solo/package.json index 0cf54e581bc..c33a712da52 100644 --- a/packages/solo/package.json +++ b/packages/solo/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/solo", - "version": "0.10.4-u12.0", + "version": "0.10.4-u13.0", "description": "Agoric's Solo vat runner", "type": "module", "bin": { @@ -24,18 +24,18 @@ "dependencies": { "@agoric/access-token": "^0.4.22-u11wf.0", "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/cache": "^0.3.3-u12.0", - "@agoric/cosmic-swingset": "^0.42.0-u12.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/spawner": "^0.6.9-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/swing-store": "^0.9.2-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", - "@agoric/telemetry": "^0.6.3-u12.0", - "@agoric/time": "^0.3.3-u12.0", - "@agoric/vats": "^0.15.2-u12.0", - "@agoric/wallet": "^0.18.4-u12.0", + "@agoric/cache": "^0.3.3-u13.0", + "@agoric/cosmic-swingset": "^0.42.0-u13.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/spawner": "^0.6.9-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/swing-store": "^0.9.2-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", + "@agoric/telemetry": "^0.6.3-u13.0", + "@agoric/time": "^0.3.3-u13.0", + "@agoric/vats": "^0.15.2-u13.0", + "@agoric/wallet": "^0.18.4-u13.0", "@endo/captp": "3.1.1", "@endo/eventual-send": "0.17.2", "@endo/import-bundle": "0.3.4", @@ -56,7 +56,7 @@ "ws": "^7.2.0" }, "devDependencies": { - "@agoric/ertp": "^0.16.3-u12.0", + "@agoric/ertp": "^0.16.3-u13.0", "@endo/bundle-source": "2.5.2-upstream-rollup", "ava": "^5.2.0", "c8": "^7.13.0" diff --git a/packages/spawner/CHANGELOG.md b/packages/spawner/CHANGELOG.md index ab254a65f6a..fc653d64587 100644 --- a/packages/spawner/CHANGELOG.md +++ b/packages/spawner/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.6.9-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/spawner@0.6.9-u12.0...@agoric/spawner@0.6.9-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/spawner + + + + + ### [0.6.9-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/spawner@0.6.9-u11wf.0...@agoric/spawner@0.6.9-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/spawner diff --git a/packages/spawner/package.json b/packages/spawner/package.json index 9f086be4670..cea177baeb4 100644 --- a/packages/spawner/package.json +++ b/packages/spawner/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/spawner", - "version": "0.6.9-u12.0", + "version": "0.6.9-u13.0", "description": "Wrapper for JavaScript map", "type": "module", "main": "./src/contractHost.js", @@ -36,8 +36,8 @@ "@endo/marshal": "0.8.5" }, "devDependencies": { - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/init": "0.5.56", "ava": "^5.2.0", diff --git a/packages/store/CHANGELOG.md b/packages/store/CHANGELOG.md index 628502cae44..128a3a2d78c 100644 --- a/packages/store/CHANGELOG.md +++ b/packages/store/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.9.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/store@0.9.3-u12.0...@agoric/store@0.9.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/store + + + + + ### [0.9.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/store@0.9.3-u11wf.0...@agoric/store@0.9.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/store diff --git a/packages/store/package.json b/packages/store/package.json index 19e771e6463..91711f6c0e5 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/store", - "version": "0.9.3-u12.0", + "version": "0.9.3-u13.0", "description": "Wrapper for JavaScript map", "type": "module", "main": "src/index.js", @@ -37,8 +37,8 @@ "@endo/patterns": "0.2.2" }, "devDependencies": { - "@agoric/swingset-vat": "^0.32.3-u12.0", - "@agoric/time": "^0.3.3-u12.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", + "@agoric/time": "^0.3.3-u13.0", "@endo/ses-ava": "0.2.40", "ava": "^5.2.0" }, diff --git a/packages/swing-store/CHANGELOG.md b/packages/swing-store/CHANGELOG.md index dba35287267..7023f9778e1 100644 --- a/packages/swing-store/CHANGELOG.md +++ b/packages/swing-store/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.9.2-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swing-store@0.9.2-u12.0...@agoric/swing-store@0.9.2-u13.0) (2023-12-07) + + +### Features + +* add exporter.getHostKV() API ([16435d2](https://github.com/Agoric/agoric-sdk/commit/16435d20e9ede86916a54c7bae54ecfc59e4c950)), closes [#8523](https://github.com/Agoric/agoric-sdk/issues/8523) + + + ### [0.9.2-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swing-store@0.9.2-u11wf.0...@agoric/swing-store@0.9.2-u12.0) (2023-11-10) diff --git a/packages/swing-store/package.json b/packages/swing-store/package.json index ffd75d6b826..1dbfe670180 100644 --- a/packages/swing-store/package.json +++ b/packages/swing-store/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/swing-store", - "version": "0.9.2-u12.0", + "version": "0.9.2-u13.0", "description": "Persistent storage for SwingSet", "type": "module", "main": "./src/index.js", @@ -22,7 +22,7 @@ }, "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/internal": "^0.4.0-u12.0", + "@agoric/internal": "^0.4.0-u13.0", "@endo/base64": "0.2.31", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/check-bundle": "0.2.18", diff --git a/packages/swingset-liveslots/CHANGELOG.md b/packages/swingset-liveslots/CHANGELOG.md index f9585a352eb..136476d9672 100644 --- a/packages/swingset-liveslots/CHANGELOG.md +++ b/packages/swingset-liveslots/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.10.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swingset-liveslots@0.10.3-u12.0...@agoric/swingset-liveslots@0.10.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/swingset-liveslots + + + + + ### [0.10.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swingset-liveslots@0.10.3-u11wf.0...@agoric/swingset-liveslots@0.10.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/swingset-liveslots diff --git a/packages/swingset-liveslots/package.json b/packages/swingset-liveslots/package.json index 5abb249117d..8d52bc27c2d 100644 --- a/packages/swingset-liveslots/package.json +++ b/packages/swingset-liveslots/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/swingset-liveslots", - "version": "0.10.3-u12.0", + "version": "0.10.3-u13.0", "description": "SwingSet ocap support layer", "type": "module", "main": "src/index.js", @@ -18,9 +18,9 @@ }, "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", "@endo/eventual-send": "0.17.2", "@endo/exo": "0.2.2", "@endo/far": "0.2.18", diff --git a/packages/swingset-runner/CHANGELOG.md b/packages/swingset-runner/CHANGELOG.md index 92aef2c378d..c0c01406bbb 100644 --- a/packages/swingset-runner/CHANGELOG.md +++ b/packages/swingset-runner/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.22.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swingset-runner@0.22.3-u12.0...@agoric/swingset-runner@0.22.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/swingset-runner + + + + + ### [0.22.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swingset-runner@0.22.3-u11wf.0...@agoric/swingset-runner@0.22.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/swingset-runner diff --git a/packages/swingset-runner/package.json b/packages/swingset-runner/package.json index 8a620d48198..614f2d1625a 100644 --- a/packages/swingset-runner/package.json +++ b/packages/swingset-runner/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/swingset-runner", - "version": "0.22.3-u12.0", + "version": "0.22.3-u13.0", "private": true, "description": "Application to launch SwingSet instances for development and testing", "type": "module", @@ -20,14 +20,14 @@ }, "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/ertp": "^0.16.3-u12.0", + "@agoric/ertp": "^0.16.3-u13.0", "@agoric/stat-logger": "^0.4.28", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/swing-store": "^0.9.2-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", - "@agoric/telemetry": "^0.6.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", - "@agoric/zoe": "^0.26.3-u12.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/swing-store": "^0.9.2-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", + "@agoric/telemetry": "^0.6.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", + "@agoric/zoe": "^0.26.3-u13.0", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/eventual-send": "0.17.2", "@endo/init": "0.5.56", diff --git a/packages/swingset-xsnap-supervisor/CHANGELOG.md b/packages/swingset-xsnap-supervisor/CHANGELOG.md index 28f0f139f3c..b48c19d81fd 100644 --- a/packages/swingset-xsnap-supervisor/CHANGELOG.md +++ b/packages/swingset-xsnap-supervisor/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.10.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swingset-xsnap-supervisor@0.10.3-u12.0...@agoric/swingset-xsnap-supervisor@0.10.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/swingset-xsnap-supervisor + + + + + ### [0.10.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/swingset-xsnap-supervisor@0.10.3-u11wf.0...@agoric/swingset-xsnap-supervisor@0.10.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/swingset-xsnap-supervisor diff --git a/packages/swingset-xsnap-supervisor/package.json b/packages/swingset-xsnap-supervisor/package.json index ac2e97dec71..f20fec06e65 100644 --- a/packages/swingset-xsnap-supervisor/package.json +++ b/packages/swingset-xsnap-supervisor/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/swingset-xsnap-supervisor", - "version": "0.10.3-u12.0", + "version": "0.10.3-u13.0", "description": "Supervisor/Liveslots bundle for swingset xsnap workers", "author": "Agoric", "license": "Apache-2.0", @@ -24,7 +24,7 @@ }, "devDependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/swingset-liveslots": "^0.10.3-u12.0", + "@agoric/swingset-liveslots": "^0.10.3-u13.0", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/import-bundle": "0.3.4", "@endo/init": "0.5.56", diff --git a/packages/telemetry/CHANGELOG.md b/packages/telemetry/CHANGELOG.md index 86f27009c9f..f826ff7fd6d 100644 --- a/packages/telemetry/CHANGELOG.md +++ b/packages/telemetry/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.6.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/telemetry@0.6.3-u12.0...@agoric/telemetry@0.6.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/telemetry + + + + + ### [0.6.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/telemetry@0.6.3-u11wf.0...@agoric/telemetry@0.6.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/telemetry diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index 6b981b9cf1c..dd9ae299d95 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/telemetry", - "version": "0.6.3-u12.0", + "version": "0.6.3-u13.0", "description": "Agoric's telemetry implementation", "type": "module", "repository": "https://github.com/Agoric/agoric-sdk", @@ -23,8 +23,8 @@ "license": "Apache-2.0", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/store": "^0.9.3-u12.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/store": "^0.9.3-u13.0", "@endo/init": "0.5.56", "@endo/marshal": "0.8.5", "@endo/stream": "0.3.25", diff --git a/packages/time/CHANGELOG.md b/packages/time/CHANGELOG.md index 76b59567cfa..78ac1df076e 100644 --- a/packages/time/CHANGELOG.md +++ b/packages/time/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.3.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/time@0.3.3-u12.0...@agoric/time@0.3.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/time + + + + + ### [0.3.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/time@0.3.3-u11wf.0...@agoric/time@0.3.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/time diff --git a/packages/time/package.json b/packages/time/package.json index 4f0397b05de..b35fb2829b1 100644 --- a/packages/time/package.json +++ b/packages/time/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/time", - "version": "0.3.3-u12.0", + "version": "0.3.3-u13.0", "description": "Timestamps, time math, timer service API definition", "type": "module", "main": "index.js", @@ -31,7 +31,7 @@ "homepage": "https://github.com/Agoric/agoric-sdk#readme", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/store": "^0.9.3-u12.0", + "@agoric/store": "^0.9.3-u13.0", "@endo/nat": "4.1.27" }, "devDependencies": { diff --git a/packages/ui-components/CHANGELOG.md b/packages/ui-components/CHANGELOG.md index cbae29187fd..210af3c691b 100644 --- a/packages/ui-components/CHANGELOG.md +++ b/packages/ui-components/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.3.9-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/ui-components@0.3.9-u12.0...@agoric/ui-components@0.3.9-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/ui-components + + + + + ### [0.3.9-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/ui-components@0.3.9-u11wf.0...@agoric/ui-components@0.3.9-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/ui-components diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json index 438296a9a4c..ba44849c337 100644 --- a/packages/ui-components/package.json +++ b/packages/ui-components/package.json @@ -1,12 +1,12 @@ { "name": "@agoric/ui-components", - "version": "0.3.9-u12.0", + "version": "0.3.9-u13.0", "description": "Reusable UI Components for Agoric Dapps, built with React and MaterialUI", "type": "module", "main": "dist/index.js", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/ertp": "^0.16.3-u12.0", + "@agoric/ertp": "^0.16.3-u13.0", "@endo/eventual-send": "0.17.2", "@endo/init": "0.5.56", "@endo/nat": "4.1.27", diff --git a/packages/vat-data/CHANGELOG.md b/packages/vat-data/CHANGELOG.md index cb18272c3f3..ca069676558 100644 --- a/packages/vat-data/CHANGELOG.md +++ b/packages/vat-data/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.5.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/vat-data@0.5.3-u12.0...@agoric/vat-data@0.5.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/vat-data + + + + + ### [0.5.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/vat-data@0.5.3-u11wf.0...@agoric/vat-data@0.5.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/vat-data diff --git a/packages/vat-data/package.json b/packages/vat-data/package.json index 037b56aa593..fd395b7f0f8 100644 --- a/packages/vat-data/package.json +++ b/packages/vat-data/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/vat-data", - "version": "0.5.3-u12.0", + "version": "0.5.3-u13.0", "description": "Safe access to VatData global", "type": "module", "repository": "https://github.com/Agoric/agoric-sdk", @@ -20,11 +20,11 @@ "license": "Apache-2.0", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/store": "^0.9.3-u12.0" + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/store": "^0.9.3-u13.0" }, "devDependencies": { - "@agoric/swingset-vat": "^0.32.3-u12.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", "ava": "^5.2.0", "tsd": "^0.28.1" }, diff --git a/packages/vats/CHANGELOG.md b/packages/vats/CHANGELOG.md index 2ca73d528e4..5108e7841f4 100644 --- a/packages/vats/CHANGELOG.md +++ b/packages/vats/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.15.2-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/vats@0.15.2-u12.0...@agoric/vats@0.15.2-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/vats + + + + + ### [0.15.2-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/vats@0.15.2-u11wf.0...@agoric/vats@0.15.2-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/vats diff --git a/packages/vats/package.json b/packages/vats/package.json index 2ba937cc177..06702a2de4b 100644 --- a/packages/vats/package.json +++ b/packages/vats/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/vats", - "version": "0.15.2-u12.0", + "version": "0.15.2-u13.0", "description": "Agoric's Vat library", "type": "module", "main": "./index.js", @@ -29,18 +29,18 @@ "license": "Apache-2.0", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/ertp": "^0.16.3-u12.0", - "@agoric/governance": "^0.10.4-u12.0", - "@agoric/inter-protocol": "^0.16.2-u12.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/sharing-service": "^0.2.12-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", - "@agoric/time": "^0.3.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", - "@agoric/zoe": "^0.26.3-u12.0", - "@agoric/zone": "^0.2.3-u12.0", + "@agoric/ertp": "^0.16.3-u13.0", + "@agoric/governance": "^0.10.4-u13.0", + "@agoric/inter-protocol": "^0.16.2-u13.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/sharing-service": "^0.2.12-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", + "@agoric/time": "^0.3.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", + "@agoric/zoe": "^0.26.3-u13.0", + "@agoric/zone": "^0.2.3-u13.0", "@endo/far": "0.2.18", "@endo/import-bundle": "0.3.4", "@endo/init": "0.5.56", @@ -50,11 +50,11 @@ "jessie.js": "^0.3.2" }, "devDependencies": { - "@agoric/cosmic-swingset": "^0.42.0-u12.0", - "@agoric/deploy-script-support": "^0.10.4-u12.0", - "@agoric/smart-wallet": "^0.5.4-u12.0", - "@agoric/swing-store": "^0.9.2-u12.0", - "@agoric/swingset-liveslots": "^0.10.3-u12.0", + "@agoric/cosmic-swingset": "^0.42.0-u13.0", + "@agoric/deploy-script-support": "^0.10.4-u13.0", + "@agoric/smart-wallet": "^0.5.4-u13.0", + "@agoric/swing-store": "^0.9.2-u13.0", + "@agoric/swingset-liveslots": "^0.10.3-u13.0", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/captp": "3.1.1", "@endo/stream": "0.3.25", diff --git a/packages/wallet-connection/CHANGELOG.md b/packages/wallet-connection/CHANGELOG.md index 658f0634a1a..c4ecdda8530 100644 --- a/packages/wallet-connection/CHANGELOG.md +++ b/packages/wallet-connection/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.1.18-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet-connection@0.1.18-u12.0...@agoric/wallet-connection@0.1.18-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/wallet-connection + + + + + ### [0.1.18-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet-connection@0.1.18-u11wf.0...@agoric/wallet-connection@0.1.18-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/wallet-connection diff --git a/packages/wallet-connection/package.json b/packages/wallet-connection/package.json index 7349f0eea2e..4e2c9ece5f8 100644 --- a/packages/wallet-connection/package.json +++ b/packages/wallet-connection/package.json @@ -3,7 +3,7 @@ "description": "Webcomponent agoric-wallet-connection following open-wc recommendations", "license": "MIT", "author": "Agoric", - "version": "0.1.18-u12.0", + "version": "0.1.18-u13.0", "main": "index.js", "module": "index.js", "scripts": { @@ -17,7 +17,7 @@ "lint:eslint": "exit 0" }, "dependencies": { - "@agoric/web-components": "^0.6.4-u12.0" + "@agoric/web-components": "^0.6.4-u13.0" }, "publishConfig": { "access": "public" diff --git a/packages/wallet/CHANGELOG.md b/packages/wallet/CHANGELOG.md index e2fc43b532e..786914e3386 100644 --- a/packages/wallet/CHANGELOG.md +++ b/packages/wallet/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.18.4-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet@0.18.4-u12.0...@agoric/wallet@0.18.4-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/wallet + + + + + ### [0.18.4-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/wallet@0.18.4-u11wf.0...@agoric/wallet@0.18.4-u12.0) (2023-11-10) diff --git a/packages/wallet/api/CHANGELOG.md b/packages/wallet/api/CHANGELOG.md index eb7d5b1663a..58c1072d3bf 100644 --- a/packages/wallet/api/CHANGELOG.md +++ b/packages/wallet/api/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.14.4-u13.0](https://github.com/Agoric/agoric/compare/@agoric/wallet-backend@0.14.4-u12.0...@agoric/wallet-backend@0.14.4-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/wallet-backend + + + + + ### [0.14.4-u12.0](https://github.com/Agoric/agoric/compare/@agoric/wallet-backend@0.14.4-u11wf.0...@agoric/wallet-backend@0.14.4-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/wallet-backend diff --git a/packages/wallet/api/package.json b/packages/wallet/api/package.json index 385c7639a9e..5b382950a40 100644 --- a/packages/wallet/api/package.json +++ b/packages/wallet/api/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/wallet-backend", - "version": "0.14.4-u12.0", + "version": "0.14.4-u13.0", "description": "Wallet backend", "type": "module", "scripts": { @@ -14,22 +14,22 @@ "lint:eslint": "eslint ." }, "devDependencies": { - "@agoric/vats": "^0.15.2-u12.0", + "@agoric/vats": "^0.15.2-u13.0", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/init": "0.5.56", "ava": "^5.2.0" }, "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/cache": "^0.3.3-u12.0", - "@agoric/ertp": "^0.16.3-u12.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/smart-wallet": "^0.5.4-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/time": "^0.3.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", - "@agoric/zoe": "^0.26.3-u12.0", + "@agoric/cache": "^0.3.3-u13.0", + "@agoric/ertp": "^0.16.3-u13.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/smart-wallet": "^0.5.4-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/time": "^0.3.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", + "@agoric/zoe": "^0.26.3-u13.0", "@endo/eventual-send": "0.17.2", "@endo/marshal": "0.8.5", "@endo/nat": "4.1.27", diff --git a/packages/wallet/package.json b/packages/wallet/package.json index e432400b6a3..78a11f35fbb 100644 --- a/packages/wallet/package.json +++ b/packages/wallet/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/wallet", - "version": "0.18.4-u12.0", + "version": "0.18.4-u13.0", "type": "module", "main": "index.js", "license": "Apache-2.0", diff --git a/packages/web-components/CHANGELOG.md b/packages/web-components/CHANGELOG.md index 63678d963ee..8f88462f4ed 100644 --- a/packages/web-components/CHANGELOG.md +++ b/packages/web-components/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.6.4-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/web-components@0.6.4-u12.0...@agoric/web-components@0.6.4-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/web-components + + + + + ### [0.6.4-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/web-components@0.6.4-u11wf.0...@agoric/web-components@0.6.4-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/web-components diff --git a/packages/web-components/package.json b/packages/web-components/package.json index 27e9c187285..ae0db74ceda 100644 --- a/packages/web-components/package.json +++ b/packages/web-components/package.json @@ -3,7 +3,7 @@ "description": "Webcomponents for Agoric dapps", "license": "MIT", "author": "Agoric", - "version": "0.6.4-u12.0", + "version": "0.6.4-u13.0", "main": "index.js", "module": "index.js", "scripts": { @@ -21,12 +21,12 @@ }, "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/cache": "^0.3.3-u12.0", - "@agoric/casting": "^0.4.3-u12.0", - "@agoric/ertp": "^0.16.3-u12.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/smart-wallet": "^0.5.4-u12.0", - "@agoric/wallet": "^0.18.4-u12.0", + "@agoric/cache": "^0.3.3-u13.0", + "@agoric/casting": "^0.4.3-u13.0", + "@agoric/ertp": "^0.16.3-u13.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/smart-wallet": "^0.5.4-u13.0", + "@agoric/wallet": "^0.18.4-u13.0", "@endo/captp": "3.1.1", "@endo/eventual-send": "0.17.2", "@endo/marshal": "0.8.5", diff --git a/packages/xsnap-lockdown/CHANGELOG.md b/packages/xsnap-lockdown/CHANGELOG.md index 5b36f8b0d4b..2df20569126 100644 --- a/packages/xsnap-lockdown/CHANGELOG.md +++ b/packages/xsnap-lockdown/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.14.1-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/xsnap-lockdown@0.14.1-u11wf.0...@agoric/xsnap-lockdown@0.14.1-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/xsnap-lockdown + + + + + ### [0.14.1-u11wf.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/xsnap-lockdown@0.14.0...@agoric/xsnap-lockdown@0.14.1-u11wf.0) (2023-09-23) **Note:** Version bump only for package @agoric/xsnap-lockdown diff --git a/packages/xsnap-lockdown/package.json b/packages/xsnap-lockdown/package.json index 2dff85a15a0..d2e78e97ff8 100644 --- a/packages/xsnap-lockdown/package.json +++ b/packages/xsnap-lockdown/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/xsnap-lockdown", - "version": "0.14.1-u11wf.0", + "version": "0.14.1-u13.0", "description": "Endo/lockdown initialization bundle for xsnap workers", "author": "Agoric", "license": "Apache-2.0", @@ -43,4 +43,4 @@ "timeout": "2m", "workerThreads": false } -} \ No newline at end of file +} diff --git a/packages/xsnap/CHANGELOG.md b/packages/xsnap/CHANGELOG.md index 6f095cabfd1..29bbefec6c4 100644 --- a/packages/xsnap/CHANGELOG.md +++ b/packages/xsnap/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.14.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/xsnap@0.14.3-u12.0...@agoric/xsnap@0.14.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/xsnap + + + + + ### [0.14.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/xsnap@0.14.3-u11wf.0...@agoric/xsnap@0.14.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/xsnap diff --git a/packages/xsnap/package.json b/packages/xsnap/package.json index fd087b3e103..c85605b5058 100644 --- a/packages/xsnap/package.json +++ b/packages/xsnap/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/xsnap", - "version": "0.14.3-u12.0", + "version": "0.14.3-u13.0", "description": "Description forthcoming.", "author": "Agoric", "license": "Apache-2.0", @@ -28,8 +28,8 @@ }, "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/xsnap-lockdown": "^0.14.1-u11wf.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/xsnap-lockdown": "^0.14.1-u13.0", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/eventual-send": "0.17.2", "@endo/init": "0.5.56", diff --git a/packages/zoe/CHANGELOG.md b/packages/zoe/CHANGELOG.md index c86dc00a61f..7d41a63c98d 100644 --- a/packages/zoe/CHANGELOG.md +++ b/packages/zoe/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.26.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/zoe@0.26.3-u12.0...@agoric/zoe@0.26.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/zoe + + + + + ### [0.26.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/zoe@0.26.3-u11wf.0...@agoric/zoe@0.26.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/zoe diff --git a/packages/zoe/package.json b/packages/zoe/package.json index 14c512cf17d..a0bb20c6091 100644 --- a/packages/zoe/package.json +++ b/packages/zoe/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/zoe", - "version": "0.26.3-u12.0", + "version": "0.26.3-u13.0", "description": "Zoe: the Smart Contract Framework for Offer Enforcement", "type": "module", "main": "./src/zoeService/zoe.js", @@ -44,13 +44,13 @@ "homepage": "https://github.com/Agoric/agoric-sdk#readme", "dependencies": { "@agoric/assert": "^0.6.1-u11wf.0", - "@agoric/ertp": "^0.16.3-u12.0", - "@agoric/internal": "^0.4.0-u12.0", - "@agoric/notifier": "^0.6.3-u12.0", - "@agoric/store": "^0.9.3-u12.0", - "@agoric/swingset-vat": "^0.32.3-u12.0", - "@agoric/time": "^0.3.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", + "@agoric/ertp": "^0.16.3-u13.0", + "@agoric/internal": "^0.4.0-u13.0", + "@agoric/notifier": "^0.6.3-u13.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/swingset-vat": "^0.32.3-u13.0", + "@agoric/time": "^0.3.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", "@endo/bundle-source": "2.5.2-upstream-rollup", "@endo/captp": "3.1.1", "@endo/eventual-send": "0.17.2", diff --git a/packages/zone/CHANGELOG.md b/packages/zone/CHANGELOG.md index dfa23e8946a..918d0fbb11b 100644 --- a/packages/zone/CHANGELOG.md +++ b/packages/zone/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +### [0.2.3-u13.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/zone@0.2.3-u12.0...@agoric/zone@0.2.3-u13.0) (2023-12-07) + +**Note:** Version bump only for package @agoric/zone + + + + + ### [0.2.3-u12.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/zone@0.2.3-u11wf.0...@agoric/zone@0.2.3-u12.0) (2023-11-10) **Note:** Version bump only for package @agoric/zone diff --git a/packages/zone/package.json b/packages/zone/package.json index e1f4c957d16..bc4f75a1fbc 100644 --- a/packages/zone/package.json +++ b/packages/zone/package.json @@ -1,6 +1,6 @@ { "name": "@agoric/zone", - "version": "0.2.3-u12.0", + "version": "0.2.3-u13.0", "description": "Allocation zone abstraction for objects on the heap, persistent stores, etc.", "type": "module", "repository": "https://github.com/Agoric/agoric-sdk", @@ -25,8 +25,8 @@ "author": "Agoric", "license": "Apache-2.0", "dependencies": { - "@agoric/store": "^0.9.3-u12.0", - "@agoric/vat-data": "^0.5.3-u12.0", + "@agoric/store": "^0.9.3-u13.0", + "@agoric/vat-data": "^0.5.3-u13.0", "@endo/far": "0.2.18" }, "publishConfig": {